Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

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

いろいろいじってみましたが、結果は変わらずです。
皆様、宜しくお願い申し上げます。
(先程、誤って意見交換で投稿してしまいました。御教示の程、宜しくお願い致します)

0

1Answer

Comments

  1. @b0358manbou

    Questioner

    ありがとうございます。実行してみます。

Your answer might help someone💌