18

我正在尝试运行rootbeer库中的第一个示例,您可以从这里找到。

问题是,即使我遵循了他们的所有指示,当我尝试运行 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 会是个问题。

4

5 回答 5

11

键入:execstack --version检查您是否已经安装了 execstack。

如果你得到 command not found 类型:sudo apt-get install execstack -y --force-yes

输入sudo execstack -c <file> 例如sudo execstack -c /usr/lib/libcuda.so

于 2015-11-29T05:46:24.340 回答
4

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

于 2016-09-10T10:32:51.687 回答
2

确保您没有运行 32 位 Java。如果运行 java -d64,32 位版本会打印错误。

于 2019-06-27T17:58:23.717 回答
2

确保您没有首先在 64 位 jvm 上运行 32 位 jar

于 2018-06-01T12:26:46.433 回答
0

文件/usr/lib/libcuda.so.319.37包含什么?

如果该文件是0-byte-file,则确实有问题,因此请尝试通过重新安装该库来修复系统。

我在 smartgit 中遇到了同样的问题,其中使用了本地配置文件夹中的一个库,该库以某种方式损坏并且是一个 0 字节文件。所以删除配置文件夹并重新启动应用程序对我有用。这也可能是一个解决方案。

于 2020-09-09T14:56:32.603 回答