rootbeer
ライブラリで最初の例を実行しようとしています。これは here から見つけることができます。
問題は、すべての指示に従ったにもかかわらず、Jarを実行しようとすると次のメッセージが表示されることです。
root@ubuserver3:/home/ubuadmin/JavaJars/HelloWordGPU# Java -jar HelloWorldGPU.jar
OpenJDK Client VM warning: You have loaded library /usr/lib/libcuda.so.319.37 which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" Java.lang.NullPointerException
at org.trifort.rootbeer.runtime.Rootbeer.run(Rootbeer.Java:104)
at ScalarMult.test(ScalarMult.Java:13)
at Main.main(Main.Java:17)
私はLinuxの人間ではないため、このコマンドを適切に実行する方法がわかりません。また、GPUプログラミングに取り組んでいるのは今回が初めてなので、そのメッセージの意味がわかりません。しかし、間違ったコマンドでGPUをいじることが問題になることは知っています。
タイプ:execstack --version
execstackがすでにインストールされているかどうかを確認します。
コマンドが見つからない場合は、タイプ:Sudo apt-get install execstack -y --force-yes
タイプSudo execstack -c <file>
例:Sudo execstack -c /usr/lib/libcuda.so
1:次のコマンドを使用してexecstackのバージョンを確認し、execstackがインストールされているかどうかを確認します
execstack --version
2:execstackがインストールされていない場合は、次のコマンドを使用してインストールします
Sudo apt-get install execstack -y --force-yes
3:インストールが成功したら、次のコマンドを実行します
Sudo execstack -c <filepath>
例:Sudo execstack -c /usr/lib/libjpcap.so
最初に64ビットJVMで32ビットjarを実行していないことを確認してください
32ビットJavaを実行していないことを確認してください。 Java -d64を実行すると、32ビットバージョンはエラーを出力します。