我正在尝试使用PGI的fortran编译器(Workstation / PGI Visual Fortran)编译基本的内存传输代码。编译器在我有cudamemcpy调用的行上抛出错误。确切的错误消息是"无法解析通用程序cudamemcpy"为行
istat=cudaMemcpy(arr(1),arr(2),800,cudaMemcpyDevicetoDevice)
我也在使用cuda fortran模块 - "使用cudafor"。这个编译器错误的解决方案是什么?谢谢!
答案 0 :(得分:1)
数组arr(1)和arr(2)的类型为
type subgrid
integer, device, dimension(:,:,:), allocatable :: field
end type subgrid
通过不使用第4个参数并指定需要传输的实际字段数据来解决问题。 800是我需要从一个切片传输到另一个切片的整数数。
istat=cudaMemcpy(arr(1)%field(:,:,:), arr(2)%field(:,:,:), 800)
此外,cudaMemcpyDevicetoDevice不会影响函数调用。无论有没有它都能正常工作。