CUDA FORTRAN中的内在功能不起作用

时间:2011-02-09 15:56:32

标签: compiler-errors cuda fortran intrinsics

我正在尝试使用fortran函数ISHFT(I, SHIFT)在CUDA内核中进行一些位移。这会将整数I向右移动SHIFT位。

问题是如果我为SHIFT参数传递一个变量,ISHFT对内核不起作用。这是我的代码的核心部分:

  attributes(global) subroutine cuda_bitshift(shift)

    integer, intent(in), value :: shift
    I  = ishft(I,shift)

  end subroutine cuda_bitshift

此处I是设备整数,shift是传递给内核cuda_bitshift且值为1的参数。

当我尝试编译它时(使用pgf90 test.cuf),它说:

PGF90-S-0000-Internal compiler error. unexpected runtime function call       0 (test.cuf: 14)
  0 inform,   0 warnings,   1 severes, 0 fatal for cuda_bitshift
/tmp/pgcudafor20YgIPXBfH0R.gpu(10): error: expected an expression

1 error detected in the compilation of "/tmp/pgnvdW1YgqoRn5Yjn.nv0".
PGF90-F-0000-Internal compiler error. pgnvd job exited with nonzero status code       0 (test.cuf: 14)
PGF90/x86-64 Linux 10.8-0: compilation aborted

但是,如果我将ishft中的第二个参数替换为1而不是变量shift,则它会起作用。另外,例如,如果我可以使用shift算术,I = I + shift工作正常。

这是与CUDA不起作用的内在函数有关,还是我做错了什么?

0 个答案:

没有答案