RTX3090在Linux上的TensorFlow,NAMD和HPCG性能初测

介绍

第二款新的NVIDIA RTX30系列卡GeForce RTX3090已发布,这里简单看下RTX3090在Linux上的TensorFlow,NAMD和HPCG性能初测。

RTX3090装有24GB内存,是RTX Titan的理想替代品……价格大大降低!正如预期的那样,RTX3090上的机器学习和分子动力学性能非常好。

这篇文章是RTX3080的后续文章

RTX3080在Linux上的TensorFlow和NAMD性能

使用RTX3090进行的测试要比使用RTX3080进行的更为顺利,而RTX3080匆匆忙忙地遇到了问题。

我能够使用我最喜欢的容器平台NVIDIA Enroot。这是一个很棒的用户空间工具,可以在用户拥有的“沙盒”环境中运行docker(和其他)容器。上周,我遇到了一些与所有驱动程序组件未完全安装有关的困难。希望很快能看到一系列介绍和描述Enroot用法的帖子!

为此测试添加了HPCG(高性能共轭梯度)基准。

RTX3090的故障与RTX3080相同。

  • TensorFlow 2无法正常运行,并在BLAS调用中出现致命错误
  • 我通常的LSTM基准测试因神秘的内存分配错误而失败
  • ptxas汇编器无法运行。这使ptx编译留给了驱动程序,导致TensorFlow的启动时间很慢(几分钟)。参见下面的输出,
2020-09-22 11:42:03.984823: W tensorflow/stream_executor/cuda/redzone_allocator.cc:312]
Internal: ptxas exited with non-zero error code 65280, output: ptxas fatal   : Value 'sm_86' is not defined for option 'gpu-name'

Relying on driver to perform ptx compilation. This message will be only logged once.

对于GA102芯片,对“ sm_86”的引用指的是“计算级别” 8.6。Ampere GA100芯片的代码为“ 8.0”,即sm_80。

我使用来自NVIDIA NGC的容器用于TensorFlow 1.15,NAMD 2.13和CUDA用于HPCG。所有这些应用程序都是使用CUDA 11构建的。

当前的CUDA 11.0不完全支持RTX 3090和RTX3080(sm_86)中使用的GA102芯片。

这篇文章中的结果并不是RTX30系列的最佳选择。这些是初步结果,可能会随着CUDA和驱动程序的更新而改善。

 

测试系统

硬件

  • Intel Xeon 3265W:24核(4.4 / 3.4 GHz)
  • 主板:华硕PRO WS C621-64L SAGE / 10G(Intel C621-64L EATX)
  • 内存:6个REG ECC DDR4-2933 32GB(总计192GB)
  • NVIDIA RTX3090 RTX3080,RTX TITAN和RTX2080Ti

软件

  • Ubuntu 20.04 Linux
  • Enroot 3.3.1
  • NVIDIA驱动程序版本:455.23.04
  • nvidia-container-toolkit 1.3.0-1
  • NVIDIA NGC容器
  • nvcr.io/nvidia/tensorflow:20.08-tf1-py3
  • nvcr.io/hpc/namd:2.13-单节点
  • nvcr.io/nvidia/cuda:11.0-runtime-ubuntu20.04(添加了用于HPCG的OpenMPI 4)

测试工作

  • TensorFlow-1.15:ResNet50 v1,fp32和fp16
  • NAMD-2.13:apoa1,stmv
  • HPCG(高性能共轭梯度)“用于NVIDIA GPU(包括基于CUDA 11的安培)的HPCG 3.1二进制文件”

命令行示例

  • docker运行–gpus all –rm -it -v $ HOME:/ projects nvcr.io/nvidia/tensorflow:20.08-tf1-py3
  • docker运行–gpus all –rm -it -v $ HOME:/ projects nvcr.io/hpc/namd:2.13-singlenode
  • python nvidia-examples / cnn / resnet.py –layers = 50 –batch_size = 96 –precision = fp32
  • python nvidia-examples / cnn / resnet.py –layers = 50 –batch_size = 192 –precision = fp16
  • namd2 +p24 +setcpuaffinity +idlepoll +devices 0 apoa1.namd
  • OMP_NUM_THREADS = 24 ./xhpcg-3.1_cuda-11_ompi-4.0_sm_60_sm70_sm80

注意:我在上面列出了docker命令行以供参考。我实际上是用enroot运行容器的

作业运行信息

  • 对于所有GPU,用于TensorFlow 1.15 ResNet50 v1的批处理大小在fp32时为96,在fp16为192,而RTX3090的fp32和fp16均使用192(使用batch_size 384给出的结果更糟!)
  • 使用的HPCG基准默认值为问题尺寸256x256x256

RTX3090的HPCG输出,

1x1x1 process grid
256x256x256 local domain
SpMV  =  132.1 GF ( 832.1 GB/s Effective)  132.1 GF_per ( 832.1 GB/s Effective)
SymGS =  162.5 GF (1254.3 GB/s Effective)  162.5 GF_per (1254.3 GB/s Effective)
total =  153.8 GF (1166.5 GB/s Effective)  153.8 GF_per (1166.5 GB/s Effective)
final =  145.9 GF (1106.4 GB/s Effective)  145.9 GF_per (1106.4 GB/s Effective)

 

结果

这些结果我们在上面列出的系统,软件和GPU上运行。

基准工作 RTX3090 RTX3080 RTX Titan RTX 2080Ti
TensorFlow 1.15,ResNet50 FP32 561张/秒 462张/秒 373张/秒 343张/秒
TensorFlow 1.15,ResNet50 FP16 1163张/秒 1023张/秒 1082张/秒 932张/秒
NAMD 2.13,Apoa1 0.0264 day/ns
(37.9 ns/day)
0.0285 day/ns
(35.1 ns/day)
0.0306 day/ns
(32.7 ns/day)
0.0315 day/ns
(31.7 ns/day)
NAMD 2.13,STMV 0.3398 day/ns
(2.94 ns/day)
0.3400 day/ns
(2.94 ns/day)
0.3496 day/ns
(2.86 ns/day)
0.3528 day/ns
(2.83 ns/day)
HPCG基准3.1 145.9 GFLOPS 119.3 GFLOPS 不跑 93.4 GFLOPS

注意:与我使用较早版本的NGC TensorFlow 1.13容器进行的过去测试相比,较旧的RTX20系列GPU使用TensorFlow 15.1的结果有了很大的改善。对于fp16结果尤其如此。我认为RTX30在得到完全支持后可能会获得更好的结果。

效果图

由于CUDA和TensorFlow有所改进,因此无法严格比较,因此不包括过去的GPU测试结果


TensorFlow 1.15(CUDA11)ResNet50基准 NGC容器nvcr.io/nvidia/tensorflow:20.08-tf1-py3

Tensorflow1.15_ResNet50 FP32

FP32结果显示RTX30 GPU的性能有了很好的提高,我希望在完全支持它们的情况下性能会提高。

Tensorflow1.15_ResNet50 FP16

我觉得RTX30 GPU的FP16结果应该更高,因为这应该是一个优势,我希望CUDA能够有所改进。令人惊讶的结果是RTX20 GPU在CUDA 11和TensorFlow 1.15上的表现要好得多。我使用CUDA 10和TensorFlow 1.13的较早结果,其中RTXTitan为653 img/s,而2080Ti为532 img/s!


NAMD 2.13(CUDA11)apoa1和stmv基准。NGC容器nvcr.io/hpc/namd:2.13-singlenode

NAMD 2.13 Apoa1

NAMD 2.13 STMV

这些使用NAMD进行的分子动力学模拟测试几乎肯定会受到CPU的限制。CPU和GPU之间必须保持平衡。这些GPU的性能如此之高,以至于出色的24核Xeon 3265W可能还不够。稍后,我将使用AMD Threadripper平台进行测试。


HPCG 3.1(xhpcg-3.1_cuda-11_ompi-4.0_sm_60_sm70_sm80)nvcr.io/nvidia/cuda:11.0-runtime-ubuntu20.04(添加了OpenMPI 4)

RTX3090 HPCG

访问RTX Titan时,我没有HPCG基准设置。HPCG是一个有趣的基准,因为它显着地限制了内存。GPU上的高性能内存对性能的影响很大。Xeon 3265W的产量为14.8 GFLOPS。RTX3090的性能几乎是后者的10倍!

结论

新型RTX30系列GPU似乎已经是非常出色的RTX20系列GPU的非常值得的继任者。我还期望在CUDA和驱动程序更新完全支持新GPU之后,本文中展示的计算性能将得到显着改善。

我可以告诉您,GeForce RTX30系列不提供Ampere Tesla GPU的一些不错的功能。不支持MIG(多实例GPU),与Tesla A100相比,双精度浮点性能非常差(我编译并运行了nbody作为快速检查)。但是,对于许多适合使用fp32和fp16的应用程序来说,这些新的GeForce RTX30 GPU看起来将成为非常好的且具有成本效益的计算加速器。

原文链接

本文链接

小牛刀

小牛刀

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Post comment