CUDA Fortran:无法使用cudaMemCpy复制数组数组(或指向数组的指针数组)

时间:2014-10-01 02:23:23

标签: cuda

我正在尝试使用PGI的fortran编译器(Workstation / PGI Visual Fortran)编译基本的内存传输代码。编译器在我有cudamemcpy调用的行上抛出错误。确切的错误消息是"无法解析通用程序cudamemcpy"为行

istat=cudaMemcpy(arr(1),arr(2),800,cudaMemcpyDevicetoDevice)

我也在使用cuda fortran模块 - "使用cudafor"。这个编译器错误的解决方案是什么?谢谢!

1 个答案:

答案 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不会影响函数调用。无论有没有它都能正常工作。