做網(wǎng)站后有人搶注品牌關(guān)鍵字開魯視頻
dataloader中通常使用num_workers來指定多線程來進行數(shù)據(jù)的讀取??梢允褂霉蚕韮?nèi)存進行加速。
代碼地址:https://github.com/POSTECH-CVLab/point-transformer/blob/master/util/s3dis.py
文章目錄
- 1. 共享內(nèi)存和dataloader結(jié)合
- 1.1 在init中把所有的data存儲到共享內(nèi)存中
- 1.2 在getitem從共享內(nèi)存中讀出data
- 2. 怎么查詢key在不在共享內(nèi)存中
- 3. 共享內(nèi)存的地址是什么,怎么查看
- 4. 共享內(nèi)存有多大
- 5. 共享怎么刪除
1. 共享內(nèi)存和dataloader結(jié)合
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存儲到共享內(nèi)存中
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從共享內(nèi)存中讀出data
data = SA.attach("shm://{}".format(self.data_list[data_idx])).copy()
2. 怎么查詢key在不在共享內(nèi)存中
os.path.exists(“/dev/shm/{}”.format(item))能夠查詢該key在不在共享內(nèi)存中。
3. 共享內(nèi)存的地址是什么,怎么查看
$ ls /dev/shm
Area_5_hallway
通過/dev/shm地址訪問,但是這部分數(shù)據(jù)存儲在內(nèi)存中。
4. 共享內(nèi)存有多大
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 7.8G 44M 7.8G 1% /dev/shm
大小是物理內(nèi)存的一半
5. 共享怎么刪除
SA.delete("shm://{}".format('Area_5_hallway'))
SA.delete刪除key