以下の内容はhttps://np2lkoo.hatenablog.com/entry/2024/09/19/213838より取得しました。


の~んびりJava+CUDAしてみる

秋はうまいもん喰うだ!

こんにちわ、こんばんわ。かえるクーだ!の助手の「井戸中 聖」(いとなか セイ)でございます。

さてこのページは脱力系Java+CUDAシリーズのつづきです。

前回まで、インストール&ビルドが正常終了したので、本当にJavaからCUDAが呼べるのか確かめます。(といってもsample/tutorialの実行ですが)

まずはsampleをclone

sampleをGitHubからCloneしてきます。

JCuda本家のsampleがありますのでそこから取得します。

git clone https://github.com/jcuda/jcuda-samples.git

チュートリアルはこちら

取得できたら、Eclipseでmavenプロジェクトとしてimportしましょう

ほかのJCudaソースごとimportしてみます。(../jcudaは存在していない状態で実行)

MavenプロジェクトとしてImportします

プロジェクトのインポート/Maven/既存 Maven プロジェクト / ルートディレクトリ(フォルダ参照選択)/プロジェクト(選択)/完了 します。

jcuda-samples が取り込まれているか確認します。

jcuda-samplesはjcudaのバージョンがあっていないことがあるので、pom.xmlを修正します。バージョンを今回のバージョンにあわせます。11.2.0⇒12.0.0して「保存」!

Mavenの更新を反映させます

パッケージ・エクスプローラのjcuda-samplesフォルダで右ボタンメニューを出し、Maven/プロジェクトの更新 を選択します。

 

使用可能なMavenコードベースの一覧が表示されるので、すべて選択し、[OK]をクリックします。(Mavenプロジェクトがネットワークを参照して更新されます)

sampleを実行してみます

jcuda/samples/JCudaAllocationKernel.java 上で右ボタンメニューを出し実行/2Javaアプリケーションを選択します。

所定のCUDAカーネル(拡張子 .cu)をnvcc(NVidiaのカーネルコンパイラ)が実行され、つづけてJavaのmain()が実行されます。Deviceにカーネルが載せられ、スレッドがAllocateされると正常にCUDA機能を呼べています。

BLASのsample(jcuda/jcublas/samples/JCublas2MatrixInvert.javaも同様に実行してみましょう。配列内容が表示されていれば、CUDAのcuBlasが動作しています!

では実際にいろいろ実行してみてください。

なお、cuDNN系のサンプルは現状ではエラーがでます。諦めてください。

疑問:もしかしてMavenでこのように定義しているなら、ビルドしなくても、sampleのpom.xmlを編集してmavenのclean installすれば(バイナリをネットから取得して)動くのかなぁぁ??。

cuPyのElementwiseKernelみたいなこととができるのかなと思って、

JCudaDriverBasicGraphExampleを動かしてみました。(すこしだけソース修正が必要でした)

単純にカーネル部*.cu ファイルをstringで持って、コーディングできるだけのようです。ファイルが分散しない分だけいいけど、文字列連結部分が好きくありません。

この見栄えなら*.cu ファイルに書いておいてもいい気がします。

うまくいったので、歌いましょう

NHKオールスターEditバージョン(ニコニコ)

🎵ジャバ ジャバ ビバ ドゥ ジャバ ビバ ドゥ~♫ い~ちょ~~し~🎶

JCudaはCUDA12.x系(当ブログ記載時点で最新は12.6/確認は12.5)で動作できることを(まずはWindowsで)確認できました!


「線形代数」がそこそこできるためには、あとN次元配列がうまく扱えないといけません。Python/NumpyみたいなND4Jを入れてどうなのかみてみます。

次回「やわやわ」編に乞うご期待

 

 




以上の内容はhttps://np2lkoo.hatenablog.com/entry/2024/09/19/213838より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14