0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Wisteriaに最新のJuliaを入れる方法(+CUDA.jlも動かしてみる)

Last updated at Posted at 2023-08-30

普段,某大のWisteriaを使っています.
Wisteriaには一応Juliaが入っていますが,最新ではありません1
では自分のディレクトリに最新版を入れて使ってしまえ,ということになりますが,思った以上に苦労したので書き残しておきます(こんなニッチな記事,誰が見るんでしょう).
インストールには,最近話題のJuliaupを使ってみます.

なお,この記事の内容について筆者は責任を負いませんので,実行する場合は自己責任でお願いします.
また,Wisteriaに限った話なので,他のCluster Machine上で動かない可能性大です.

手順

ホームディレクトリの変更

Wisteriaのユーザガイドを読むと,計算ノードからはホームディレクトリ(/home/ユーザー名)にアクセスできないことがわかります.Juliaupはファイル群をホームディレクトリに入れようとするので,このままではジョブでJuliaを動かせないと思われます.そこで,ホームディレクトリを計算ノードが認識できるディレクトリに変更するという手順が必要になります.これは,ログインノードで

$ chhome /work/グループ名/ユーザー名

を実行すればOKです.パスワードを聞かれるので,Wisteriaのポータルサイトにログインする時のパスワードを入れます.
変更を反映させるために,一度ログアウトし,再度ログインします.

$ echo $HOME

を実行して,結果が/work/グループ名/ユーザー名となることを確認しておきましょう.

Juliaのインストール

以下,/work/グループ名/ユーザー名で作業しているものとします.

$ curl -fsSL https://install.julialang.org | sh

でJuliaupのインストールが始まります.
インストール先は〇〇でいいか?などと聞かれるので,もし/work/グループ名/ユーザー名以下でない場所にインストールしようとしていたら,/work/グループ名/ユーザー名以下にインストールするよう指定します.
インストールが終わると,

 . /work/グループ名/ユーザー名/.bashrc
 . /work/グループ名/ユーザー名/.bash_profile
 . /work/グループ名/ユーザー名/.zshrc

のいずれかを実行してパスを通すよう言われるので,指示に従います.私は一番上を実行しました.

Juliaの起動,パッケージの導入

いよいよJuliaを起動します.

$ julia

とすれば,お馴染みのロゴが表示され,REPLがスタートします.

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.9.3 (2023-08-24)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> 

あとは

]

でパッケージモードに入り,add hoge等で必要なパッケージをインストールしてください.

おまけ

私の目標は,Wisteria上でCUDA.jlを使ってみることでした.その結果もここに書いておきます.

まず,パッケージモードでadd CUDAを実行しインストールを行います.数分で終わります.

さて,CUDA.jlを使ってみますが,ログインノードでJuliaを実行してusing CUDAとかしないように注意しましょう!(ログインノードではGPUが使えないので当然エラーが出ます.私は最初このことに気づかず苦労しました…)
ここでは,GPUを積んでいるAquarius上でのインタラクティブジョブを実行し,CUDA.jlがGPUを認識できるか試してみます.

$ pjsub --interact -g グループ名 -L rscgrp=interactive-a,node=1

でインタラクティブジョブを開始し

$ module load aquarius
$ module load cuda/12.1
$ module load cudnn/8.8.1 

で必要なCUDAツールキットなどを呼び出します.
バージョンはなんでもいいと思いますが,ここではWisteriaで利用可能な最新のものとしました2

続いて

$ julia

でJuliaをスタートし

julia> using CUDA
julia> CUDA.versioninfo()

としました.結果はここには出しませんが,

  • CUDAやNVIDIAのdriverの情報
  • 認識されたデバイスの情報

が表示されましたので,正しく動作しているものと考えています.

最後に

にある例を試してみます.

a = CuArray{Int}(undef, 1024)
b = copy(a)
fill!(b, 0)
b == CUDA.zeros(Int, 1024)

結果はtrueでした.問題なく動いているようです.

終わりに

次はFlux.jlで機械学習をしてみたいと思っています.
いつになるかわかりませんが…

  1. 本稿執筆時点で,Juliaの最新版はv1.9.3ですが,Wisteriaにはv1.6.1しか入っていません.

  2. ただしCUDAのバージョンとcuDNNのバージョンは,適切に合わせる必要があります.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?