当前位置: 首页 > news >正文

共享内存和Pytorch中的Dataloader结合

dataloader中通常使用num_workers来指定多线程来进行数据的读取。可以使用共享内存进行加速。
代码地址:https://github.com/POSTECH-CVLab/point-transformer/blob/master/util/s3dis.py

文章目录

    • 1. 共享内存和dataloader结合
      • 1.1 在init中把所有的data存储到共享内存中
      • 1.2 在getitem从共享内存中读出data
    • 2. 怎么查询key在不在共享内存中
    • 3. 共享内存的地址是什么,怎么查看
    • 4. 共享内存有多大
    • 5. 共享怎么删除

1. 共享内存和dataloader结合

class S3DIS(Dataset):def __init__(self, split='train', data_root='trainval', test_area=5, voxel_size=0.04, voxel_max=None, transform=None, shuffle_index=False, loop=1):super().__init__()self.split, self.voxel_size, self.transform, self.voxel_max, self.shuffle_index, self.loop = split, voxel_size, transform, voxel_max, shuffle_index, loopdata_list = sorted(os.listdir(data_root))data_list = [item[:-4] for item in data_list if 'Area_' in item]if split == 'train':self.data_list = [item for item in data_list if not 'Area_{}'.format(test_area) in item]else:self.data_list = [item for item in data_list if 'Area_{}'.format(test_area) in item]for item in self.data_list:if not os.path.exists("/dev/shm/{}".format(item)):data_path = os.path.join(data_root, item + '.npy')data = np.load(data_path)  # xyzrgbl, N*7sa_create("shm://{}".format(item), data)self.data_idx = np.arange(len(self.data_list))print("Totally {} samples in {} set.".format(len(self.data_idx), split))def __getitem__(self, idx):data_idx = self.data_idx[idx % len(self.data_idx)]data = SA.attach("shm://{}".format(self.data_list[data_idx])).copy()coord, feat, label = data[:, 0:3], data[:, 3:6], data[:, 6]coord, feat, label = data_prepare(coord, feat, label, self.split, self.voxel_size, self.voxel_max, self.transform, self.shuffle_index)return coord, feat, labeldef __len__(self):return len(self.data_idx) * self.loop

1.1 在init中把所有的data存储到共享内存中

for item in self.data_list:if not os.path.exists("/dev/shm/{}".format(item)):data_path = os.path.join(data_root, item + '.npy')data = np.load(data_path)  # xyzrgbl, N*7sa_create("shm://{}".format(item), data)

key就是文件名,存储在self.data_list中

1.2 在getitem从共享内存中读出data

data = SA.attach("shm://{}".format(self.data_list[data_idx])).copy()

2. 怎么查询key在不在共享内存中

os.path.exists(“/dev/shm/{}”.format(item))能够查询该key在不在共享内存中。

3. 共享内存的地址是什么,怎么查看

$ ls /dev/shm  
Area_5_hallway

通过/dev/shm地址访问,但是这部分数据存储在内存中。

4. 共享内存有多大

$ df -h   
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           7.8G   44M  7.8G   1% /dev/shm

大小是物理内存的一半

5. 共享怎么删除

SA.delete("shm://{}".format('Area_5_hallway'))

SA.delete删除key

相关文章:

共享内存和Pytorch中的Dataloader结合

dataloader中通常使用num_workers来指定多线程来进行数据的读取。可以使用共享内存进行加速。 代码地址:https://github.com/POSTECH-CVLab/point-transformer/blob/master/util/s3dis.py 文章目录 1. 共享内存和dataloader结合1.1 在init中把所有的data存储到共享内…...

分享 WebStorm 2024 激活的方案,支持JetBrains全家桶

大家好,欢迎来到金榜探云手! WebStorm公司简介 JetBrains 是一家专注于开发工具的软件公司,总部位于捷克。他们以提供强大的集成开发环境(IDE)而闻名,如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具…...

Android OOM问题定位、内存优化

一、OOM out of memory:简称OOM,内存溢出,申请的内存大于剩余的内存而抛出的异常。 对于Android平台,广义的OOM主要是以下几种类型 JavaNativeThread 线程数的上限默认为32768,部分华为设备的限制是500通常1000左右…...

棋盘(c++题解)

题目描述 有一个m m的棋盘,棋盘上每一个格子可能是红色、黄色或没有任何颜色的。你现在要从棋盘的最左上角走到棋盘的最右下角。 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的) ,你只能向上、下、 左、右…...

滑动窗口例题

一、209:长度最小的子数组 209:长度最小的子数组 思路:1、暴力解法:两层for循环遍历,当sum > target时计算子数组长度并与result比较,取最小的更新result。提交但是超出了时间限制。 class Solution {public int minSubArray…...

智过网:注册安全工程师注册有效期与周期解析

在职业领域,各种专业资格认证不仅是对从业者专业能力的认可,也是保障行业安全、规范发展的重要手段。其中,注册安全工程师证书在安全生产领域具有举足轻重的地位。那么,注册安全工程师的注册有效期是多久呢?又是几年一…...

腐蚀Rust 服务端搭建架设个人社区服务器Windows教程

腐蚀Rust 服务端搭建架设个人社区服务器Windows教程 大家好我是艾西,一个做服务器租用的网络架构师也是游戏热爱者。最近在steam发现rust腐蚀自建的服务器以及玩家还是非常多的,那么作为服务器供应商对这商机肯定是不会放过的哈哈哈! 艾西这…...

蓝桥杯备赛:考前注意事项

考前注意事项 1、DevCpp添加c11支持 点击 工具 - 编译选项 中添加&#xff1a; -stdc112、万能头文件 #include <bits/stdc.h>万能头文件的缺陷&#xff1a;y1 变量 在<cmath>中用过了y1变量。 #include <bits/stdc.h> using namespace std;// 错误示例 …...

111111111111

111111111111...

uniapp 卡片勾选

前言 公司的app项目使用的uniapp&#xff0c;项目里有一个可勾选的卡片功能&#xff0c;效果图如下&#xff1a; 找了一圈没找到什么太好的组件&#xff0c;于是就自己简单写了一个&#xff0c;记录一下。避免以后还会用到 代码 <template><view class"card-…...

乐趣Python——文件与数据:挥别乱糟糟的桌面

各位朋友们&#xff0c;今天我们要开启一场非凡的冒险——进入文件操作的世界&#xff01;你知道吗&#xff0c;在你的电脑里&#xff0c;有一个叫做“文件系统”的迷宫&#xff0c;里面藏着各种各样的文件和文件夹&#xff0c;它们就像是迷宫中的宝藏。但有时候&#xff0c;这…...

docker nginx-lua发送post json 请求

环境准备 dockerfile from fabiocicerchia/nginx-lua:1.25.3-ubuntu22.04 run apt-get -qq update && apt-get -qq install luarocks run luarocks install lua-cjson run luarocks install lua-iconv run luarocks install lua-resty-http后台代理服务准备&#xff…...

阿里面试总结 一

写了这些还是不够完整&#xff0c;阿里 字节 卷进去加班&#xff01;奥利给 ThreadLocal 线程变量存放在当前线程变量中&#xff0c;线程上下文中&#xff0c;set将变量添加到threadLocals变量中 Thread类中定义了两个ThreadLocalMap类型变量threadLocals、inheritableThrea…...

多线程(49)定义无锁、阻塞、非阻塞和无等待算法

在并发编程中&#xff0c;理解不同的同步策略——无锁&#xff08;Lock-Free&#xff09;、阻塞&#xff08;Blocking&#xff09;、非阻塞&#xff08;Non-Blocking&#xff09;、无等待&#xff08;Wait-Free&#xff09;——对于设计高效、健壮的多线程应用至关重要。让我们…...

(一)ffmpeg 入门基础知识

一、ffmpeg FFmpeg是一套强大的开源音视频处理工具&#xff0c;能够录制、转换以及流化音视频内容。 FFmpeg是开源的&#xff0c;这意味着它的源代码是公开的&#xff0c;允许任何人使用、修改和分发。它提供了录制、转换以及流化音视频的完整解决方案&#xff0c;支持多种格…...

【软件测试】个人博客系统测试

个人博客系统测试 一、项目背景1.1 技术背景1.2 功能背景 二、 测试用例编写三、自动化测试3.1 什么是自动化测试3.2 通过使用selenium进行自动化测试的编写&#xff08;Java实现&#xff09;3.3 编写测试用例&#xff0c;执行自动化测试3.3.1 输入用户名:test,密码:123&#x…...

20240410解决OK3588-C的核心板刷机之后无法启动的问题

20240410解决OK3588-C的核心板刷机之后无法启动的问题 2024/4/10 19:38 1、编译OK3588的LINUX/Buildroot&#xff1f;forlinxubuntu: ~/3588/OK3588_Linux_fs$ sudo ./build.sh BoardConfig-linuxfs-ok3588.mk 2、进行全编译 forlinxubuntu: ~/3588/OK3588_Linux_fs$ sudo ./bu…...

仅需三步就能成为大语言模型Prompt Engineer提示词工程大神

AI Prompt Engineer(提示词工程)是当下GenAI行业最热门的话题&#xff0c;它是利用有效的AI模型交互提示技术&#xff0c;引导大语言模型生成更高质量、更准确、更相关的回应。相对于预训练和微调&#xff0c;提示词工程不需要标注数据和训练模型&#xff0c;极大的节约了时间和…...

RuleEngine规则引擎底层改造AviatorScript 之公式规则

前情提要&#xff0c;看上一个文章&#xff0c;具体要实现的效果就是 当然上来的问题就是前端的问题&#xff0c;这个框首先他们用的是富文本&#xff0c;富文本传到后台的结果是前端脚本&#xff0c;带着h5的标签&#xff0c;后面改成了这个&#xff0c;当时这个东西其实和后…...

Vue项目(H5)与微信小程序来回跳转

新建H5页面 在小程序里面新建一个名为H5的文件夹&#xff0c;以及H5页面 H5.WXML <web-view src"{{h5Url}}" bindmessage"handleGetMessage"></web-view>H5.JSdata: { h5Url:https://xxx.com/login 要跳转的H5页面},H5回来的回调方法handleG…...

Sonic数字人效果展示:看静态图片如何“开口说话”生成流畅视频

Sonic数字人效果展示&#xff1a;看静态图片如何"开口说话"生成流畅视频 1. 数字人视频生成技术概览 数字人视频技术正在改变内容创作的方式。传统方法需要复杂的3D建模和动画制作&#xff0c;而现在的AI技术只需一张静态图片和一段音频&#xff0c;就能让图片中的…...

轻量级OpenClaw监控:nanobot镜像运行状态仪表盘搭建

轻量级OpenClaw监控&#xff1a;nanobot镜像运行状态仪表盘搭建 1. 为什么需要监控OpenClaw运行状态 上周我在本地部署了基于nanobot镜像的OpenClaw环境&#xff0c;用来对接Qwen3-4B模型实现自动化办公。刚开始使用时一切顺利&#xff0c;直到某天早上发现OpenClaw服务已经停…...

Vue项目中el-tabs标签栏的5个高级用法与避坑指南

Vue项目中el-tabs标签栏的5个高级用法与避坑指南 在Vue生态中&#xff0c;Element UI的el-tabs组件是构建标签式界面的首选方案。但很多开发者仅停留在基础使用层面&#xff0c;未能充分发挥其潜力。本文将揭示五个高阶技巧&#xff0c;助你打造更灵活、高效的标签系统。 1. 标…...

基于Matlab的转子系统临界转速与主振型求解:传递矩阵法及其参数涉及等截面、材料与轮盘参数的...

140.基于matlab的求解转子系统前三个临界转速和主振型的传递矩阵法转子系统的不平衡响应 参数涉及等截面参数、材料参数、轮盘参数 程序已调通&#xff0c;可直接运行传递矩阵法这玩意儿在转子动力学里属于实操性极强的工具&#xff0c;今天咱们就拿Matlab直接开搞转子系统的前…...

LyricsX:突破平台限制,重构macOS歌词体验的开源解决方案

LyricsX&#xff1a;突破平台限制&#xff0c;重构macOS歌词体验的开源解决方案 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 在流媒体音乐蓬勃发展的今天&#xff0c;音乐爱好者们却常…...

手把手教你用YOLOv5训练自己的交通标志数据集(从LabelImg标注到模型部署)

从零构建YOLOv5交通标志检测器的实战指南 在自动驾驶和智能交通系统快速发展的今天&#xff0c;准确识别道路标志已成为计算机视觉领域的重要应用场景。不同于传统图像处理方法&#xff0c;基于深度学习的目标检测技术能够适应复杂环境变化&#xff0c;而YOLOv5以其卓越的速度-…...

【Linux信号】Linux进程信号(上):信号产生方式和闹钟

&#x1f3ac; 个人主页&#xff1a;艾莉丝努力练剑❄专栏传送门&#xff1a;《C语言》《数据结构与算法》《C/C干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法&#xff1a;从基础到进阶》《Python干货分享》⭐️为天地立心&#xff0c;为生民立命…...

Java+AI:让技术概念落地为企业真实业务价值

在大模型技术普及的当下&#xff0c;不少Java技术栈企业完成了大模型的基础接入&#xff0c;但却陷入了“技术空转”的困境——仅实现了简单的API调用&#xff0c;却未能将AI能力与业务流程深度融合&#xff0c;最终让技术探索停留在概念层面。真正的AI价值&#xff0c;从来不是…...

MySQL技巧(八) :死锁解决与实战案例

在数据库高并发场景下&#xff0c;死锁是一个绕不开的经典难题。两个或多个事务相互持有对方需要的锁&#xff0c;导致都无法继续执行&#xff0c;就像两辆车在狭窄路口互不相让。本文将带你从原理到实战&#xff0c;掌握死锁的排查、解决和预防全流程。一、死锁快速定位当应用…...

双模型灾备方案:OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断

双模型灾备方案&#xff1a;OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断 1. 为什么需要双模型灾备 去年冬天的一个深夜&#xff0c;我正在用OpenClaw自动处理一批技术文档的翻译任务。突然收到一连串报警通知——原本稳定运行的Qwen模型服务因为网络波动彻底失联。…...