|
想把原来在CPU下运行的子程序,改造成CUDA FORTRAN里的kernel。遇到一些问题,想请教大侠指点下。
原来的程序把变量定义在一个module里,其中还用save定义了一些全局变量。想要改造的这个子程序中用到了不少这些全局变量,有几十个。子程序开头use variables来使用这些全局变量,varialbes是存放这些变量的module。
现在把子程序改造成kernel时就有点麻烦。这些全局变量是由CPU先计算好,然后调用kernel。如果把这些全局变量先传递到device上的相应数组,然后调用这个kernel,那么这个kernel的参数列表就将会很长。最重要的是,这些全局变量在CPU里已经计算好,不再变化,调用kernel也不会导致它们变化。kernel需要被反复调用数百次,每次调用时都有这些参数,感觉太影响效率。不知道有没有遇到这种问题的,是如何解决的呢?非常感谢
|
|