Jetson nanoでCUDAnative.jl

Jetson nanoでCUDAnative.jlのサンプルを実行

Juliaのインストール

  • https://julialang.org/downloads/からGeneric Linux Binaries for ARMの64-bit(AArch64)用のJulia(例えばjulia-1.4.1-linux-aarch64.tar.gz)をdownload
  • それを例えば/optに展開し/opt/julia-1.4.1/binをPATHに追加

Juliaで必要なパッケージを追加

  • Juliaを起動してpkgモードで
add CUDAnative
add CUDAdrv
add CuArrays

Sampleを走らせる

# listing 16
using CUDAnative, CuArrays

function vadd(a, b, c)
    i = (blockIdx().x-1)*blockDim().x + threadIdx().x
    c[i] = a[i] + b[i]
    return
end

len = 100
a = rand(Float32, len)
b = rand(Float32, len)

d_a = CuArray(a)
d_b = CuArray(b)
d_c = similar(d_a)

@time @cuda threads=len vadd(d_a, d_b, d_c)

これはcompileするので時間がかかります。Jetson nanoだと 49.464224 seconds (32.68 M allocations: 1.546 GiB, 4.34% gc time)

ここで

c = Base.Array(d_c)

で結果を見れます。2回めの呼び出しは速いです。

ulia> @time @cuda threads=len vadd(d_a, d_b, d_c)
  0.016108 seconds (65 allocations: 2.141 KiB)

CUDAnative.jl メモ

JuliaでCUDAのkernel関数を記述して呼ぶことが出来るCUDAnative.jlを読もうとしてのメモ

links

social