0

我正在尝试使用 GPU 和 OpenACC 加速传统的 MPI Fortran 程序。在我用 Nsight 系统编译和分析程序后,我发现了一些来自 HtoD 和 DtoH 的意外数据副本。我想通过提前复制它们来减轻这些数据传输,但我无法找出究竟是什么被复制进出。程序很大,源文件很多,有什么方法可以快速识别出profiler上显示的memcpy HtoD和DtoH对应的变量名。

我也尝试过使用 PGI_ACC_DEBUG 模式,但信息太多,我无法确定我正在寻找的数据传输实际上是哪个。有没有一些好的做法可以做到这一点?

4

1 回答 1

1

不幸的是,我不知道如何从 Nsight-systems 获得这种关联。您可以尝试使用环境变量“PGI_ACC_NOTIFY=2”。这将显示更简洁的调试输出,显示文件行、变量名和大小(以字节为单位)。请注意,PGI_ACC_NOTIFY 使用位掩码来控制显示的内容,“1”是内核启动,“2”是数据传输,“3”是两者。

于 2020-11-23T20:08:28.273 回答