jetson nanoでcuda(Fortran)プログラムを実行しましたが、結果が正しくありません。
Jetson Nanoを使って、下記の様なCUDAプログラム(Fortran)を実行してみました。HPCのバージョンは20.7、CUDAは10.2です。単純に値を2倍にするプログラムですが、結果は元の値のままです(a=2と記述しているので、結果は4になるはずですが、2のままです)。
この他にも、<<<>>>でカーネルを呼び出すプログラムを書いてみたのですが、何となく、カーネルを呼び出されていないように感じます(なにも結果が表示されなかったり、例えば下記プログラムの場合は値がそのままだったり、という事です)。
$nvfortran sample.cuf
$./a.out
・・・・・で下記のプログラムをコンパイル・実行しています。コンパイルはエラー等無く通っています。オプションで -Mcuda などとありオプションもいろいろ試してみましたが変わりませんでした。
module kernel
implicit none
contains
attributes(global) subroutine doublify(a)
implicit none
integer,intent(inout) :: a(:)
a = a*2
end subroutine doublify
end module kernel
program main
use kernel
use cudafor
implicit none
integer :: a
integer,allocatable,device :: dev_a(:)
integer :: stat
a = 2
stat = cudaMalloc(dev_a,1)
stat = cudaMemcpy(dev_a, a, 1, cudaMemcpyHostToDevice)
call doublify<<<1,1>>>(dev_a)
stat = cudaMemcpy(a, dev_a, 1, cudaMemcpyDeviceToHost)
print *,a
stat = cudaFree(dev_a)
end program main
いろいろいじってみましたが、結果は変わらずです。
皆様、宜しくお願い申し上げます。