我一直在测试nvidia-K80设备到主机之间的异步数据传输以及OpenACC与gpu内核的叠加。使用以下行进行编译时,我已经设法通过nvprof profiler看到了数据传输和计算的叠加。
pgc ++ -ta = tesla:pinned -acc -Minfo -o main main.cpp
尽管如此,在阅读pgi编译器文档时,要提到的是:编译标志-ta = tesla:pinned使主机上的所有内存分配都被页面锁定。是否有另一种形式可以实现此行为而又不具有纯openACC指令的副作用?我假装在一个大型项目中使用此功能。
请注意,编译行
pgc ++ -acc -Minfo -o main main.cpp
无法实现所需的行为。或者使用cudaHostAlloc初始化主机和设备之间的高流量的内存区域也可以。我对纯OpenACC解决方案感到好奇。