クーの自由研究

マスターのかえるのクーは、弟子達の召喚術により新たな依り代を得てⅡ世として復活しました。

やわやわJava+CUDAしてみる

これが精神力なのか!?

こんにちわ、こんばんわ。かえるクーだ!の助手の「井戸中 聖」(いとなか セイ)でございます。仮想コミック「メジャーリーグのスター」では主人公が今年55本塁打-55盗塁をキメて、来年(次巻)はオオタニボール1号、2号が炸裂し20勝をあげ、サイヤング賞を受賞し、リーグ完全制覇するシナリオだそうです。なわけないかもしれない。

 

さて、Java+CUDAがいい感じなので、今日はJava+(Numpy的)線形代数にチャレンジしましょう。

ND4Jをインストール(召喚)する

Java界隈でNumpy的線形代数モジュールといえばND4Jが代名詞になるくらい勢いがあるらしいです。お試ししてみます。

Mavenを使ってネットからひっぱればよいと思うのですが、そのために最新バージョンを確認します。

以前あったnd4j.orgはどこかへ逝ったようなので、

のほうをみてみます。現時点では1.0.0-M2.1が最新のようです

ではJavaのpom.xmlファイルへ上に記載されている魔法の召喚呪文をコピペしてMavenの更新(update)をします。

ちゃんと、.m2/repogitory フォルダにnd4jが召喚できています。

チュートリアルを実行してみる

クイックスタートのチュートリアルを貼って、実行してみます。

エラーがでました。

じつはこんなエラーの情報を残すことがこのブログの醍醐味(おおげさ)です。

SLF4Jがロードできないとおこれらます。とてもよく見るエラーです。SLF4Jというログ出力ための入り口(ファサード)です。ログ出力ができなくてよければ無視してもいい場合があります。(エラーがじゃまなので、普通消しますが)

ところがよく見ると、

Please ensure that you have an nd4j backend on your classpath.

のほうが問題そうです。

とりあえずいわれるがまま、.m2/repogitoryの各種jarを外部jar参照できるようにします(これは切り分け用の応急処置)JavaSE-1.6となっていますが、中身(Javaもライブラリjarも)はJavaSE-17です。

SLF4Jのほうはお好みで好きなのをいれてください。SLF4Jだけでは動かないので必ずログ機能本体もいれてください。以下はSLF4J+logbackの例です。(少し古いです)

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>1.7.25</version>

</dependency>

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-classic</artifactId>

<version>1.1.3</version>

</dependency>

<dependency>

<groupId>ch.qos.logback</groupId>

<artifactId>logback-core</artifactId>

<version>1.1.3</version>

</dependency>

動作にはlogback.xmlも必要ですが、ネットにいっぱいあるので探しましょう

感動も何もない表示ですが、わたくしは猛烈に感動しております(特にAVX512の表示部分とかOpenMP BLASの部分とか)。

NDArrayが動作しているので、問題なくOKです。

申し訳ありませんが、気になるベンチマーク/速度測定、CUDAに繋がるのか?はあとまわしです。(Linuxを含め、動かすことを最優先しております)

では、次回「わくわくLinux+Java+CUDAしてみる」でお会いしましょう。

Linuxといってもわたくしの環境の都合上 Win10 + WSL2上のLinuxになると思います。