使用PyTorch设置多线程(threads)进行数据读取时,其实是假的多线程,他是开了N个子进程(PID是连续的)进行模拟多线程工作。
以载入cocodataset为例
DataLoader
dataloader = torch.utils.data.DataLoader(COCODataset(config["train_path"],
(config["img_w"], config["img_h"]),
is_training=True),
batch_size=config["batch_size"],
shuffle=True, num_workers=32, pin_memory=True)
numworkers就是指定多少线程的参数,原为32。
检查GPU是否运行该程序
查看运行在gpu上的所有程序:
fuser -v /dev/nvidia*
如果没有返回,则该程序并没有在GPU上运行
指定GPU运行
将num_workers改成0即可