Here is an example
CPU:Intel® Core™ i7-8700 CPU @ 3.20GHz × 12
GPU:GeForce RTX 2080/PCIe/SSE2
The best performance from pin_memory = True
and num_workers=5
pin_memory = True
print('pin_memory is', pin_memory)
for num_workers in range(0, 20, 1): # 遍历worker数
training_dataloader, len_training = dataloder_constructure(validationinputPath, validationdatasetPath,
num_workers=num_workers,
pin_memory=pin_memory)
start = time.time()
for epoch in range(1, 5):
for i, data in enumerate(training_dataloader, 0):
pass
end = time.time()
print("Finish with:{} second, num_workers={}".format(end - start, num_workers))
pin_memory is True
Finish with:5.5445404052734375 second, num_workers=0
Finish with:3.923471689224243 second, num_workers=1
Finish with:2.1549131870269775 second, num_workers=2
Finish with:1.5953092575073242 second, num_workers=3
Finish with:1.3868026733398438 second, num_workers=4
Finish with:1.2384390830993652 second, num_workers=5
Finish with:1.3161952495574951 second, num_workers=6
Finish with:1.3683111667633057 second, num_workers=7
Finish with:1.3703277111053467 second, num_workers=8
Finish with:1.4161624908447266 second, num_workers=9
Finish with:1.4753594398498535 second, num_workers=10
Finish with:1.4522082805633545 second, num_workers=11
Finish with:1.542546033859253 second, num_workers=12
Finish with:1.670602798461914 second, num_workers=13
Finish with:1.733013391494751 second, num_workers=14
Finish with:1.8041796684265137 second, num_workers=15
Finish with:1.8382213115692139 second, num_workers=16
Finish with:1.9090533256530762 second, num_workers=17
Finish with:1.9829919338226318 second, num_workers=18
Finish with:2.014136552810669 second, num_workers=19
pin_memory = False
print('pin_memory is', pin_memory)
for num_workers in range(0, 20, 1): # 遍历worker数
training_dataloader, len_training = dataloder_constructure(validationinputPath, validationdatasetPath,
num_workers=num_workers,
pin_memory=pin_memory)
start = time.time()
for epoch in range(1, 5):
for i, data in enumerate(training_dataloader, 0):
pass
end = time.time()
print("Finish with:{} second, num_workers={}".format(end - start, num_workers))
pin_memory is False
Finish with:3.4909846782684326 second, num_workers=0
Finish with:3.9767868518829346 second, num_workers=1
Finish with:2.2422804832458496 second, num_workers=2
Finish with:1.648954153060913 second, num_workers=3
Finish with:1.3978724479675293 second, num_workers=4
Finish with:1.3549144268035889 second, num_workers=5
Finish with:1.3050360679626465 second, num_workers=6
Finish with:1.7531778812408447 second, num_workers=7
Finish with:1.3492858409881592 second, num_workers=8
Finish with:1.509387493133545 second, num_workers=9
Finish with:1.4594593048095703 second, num_workers=10
Finish with:1.6034505367279053 second, num_workers=11
Finish with:1.5982444286346436 second, num_workers=12
Finish with:1.7085340023040771 second, num_workers=13
Finish with:1.738295555114746 second, num_workers=14
Finish with:1.8579375743865967 second, num_workers=15
Finish with:1.8640763759613037 second, num_workers=16
Finish with:1.9010047912597656 second, num_workers=17
Finish with:1.9985153675079346 second, num_workers=18
Finish with:2.2698612213134766 second, num_workers=19