如题:我在用cuda fortran编程时,调用设备端子程序,从主机端从向设备端传递参数的时候,参数值变了。这是什么原因啊。
例如传递n时,n在主机端是300,到设备端就成了一个特别大的数。a=0.0002的话,到了设备端就成了0.这是什么原因啊。
求解答。
求帮助。
。。。。
FORTRAN 了解的很少啊
首先你怎么看传进去的参数是多少的?
多半是程序写错了…
另外贴代码…
程序写错的可能性比较低。因为,我把变量在attributes(global) subroutine 里面直接给出数值的话就没错了。就是不能从CPU向GPU传递,就是
real::nmax
nmax=300
call test<<< >>>(,…,…,nmax)
attributes(global) subroutine test(,…,…,nmax)
real,value::nmax
nmax的值就不对了
要是直接在GPU给值
real::nmax
nmax=300
就对了
知道什么原因了,已经弄好了。
变量不能通过变量赋值,最好传递之前CPU实参是常数赋值