我已经使用 TensorFlow 测试了 CPU 到 GPU 的数据传输吞吐量,它似乎明显低于 PyTorch。对于大张量,速度要慢 2 倍到 5 倍。在 TF 中,我达到了 25MB 张量的最大速度(~4 GB/s),并且随着张量大小的增加,速度下降到 2 GB/s。PyTorch 数据传输速度随着张量大小而增长,并在 9 GB/s(25MB 张量)时饱和。该行为在 RTX 2080ti 和 GTX 1080ti 以及 TF 2.4 和 2.6 上是一致的。
难道我做错了什么?有什么方法可以匹配 PyTorch 的数据吞吐量吗?我不仅仅是想隐藏延迟,例如使用异步队列,而且我想获得完整的数据带宽。
TF 中批量 256x256x3 图像的结果(平均超过 100 次传输):
code: tf.cast(x, dtype=tf.float32)[0, 0]
Batch size 1; Batch time 0.0005; BPS 1851.8; FPS 1851.8; MB/S 364.1
Batch size 2; Batch time 0.0004; BPS 2223.5; FPS 4447.1; MB/S 874.3
Batch size 4; Batch time 0.0006; BPS 1555.2; FPS …Run Code Online (Sandbox Code Playgroud)