[英]NVIDIA Visual Profiler crashes on startup
我正在使用 NVIDIA 的 Visual Profiler (nvvp) 在 Pascal GPU 上分析內核(因為Nsight Compute 不支持這些內核)-在 Devuan GNU/Linux 4 系統上使用 CUDA 11.4。
當我運行nvvp
,它立即崩潰,說:
$ nvvp
java.lang.ExceptionInInitializerError
at org.eclipse.osgi.storage.Storage.<init>(Storage.java:97)
at org.eclipse.osgi.storage.Storage.createStorage(Storage.java:84)
at org.eclipse.osgi.internal.framework.EquinoxContainer.<init>(EquinoxContainer.java:75)
at org.eclipse.osgi.launch.Equinox.<init>(Equinox.java:31)
at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:295)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:231)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.net.URLClassLoader.addURL(java.net.URL) accessible: module java.base does not "opens java.net" to unnamed module @21bcffb5
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
at org.eclipse.osgi.storage.FrameworkExtensionInstaller.findMethod(FrameworkExtensionInstaller.java:52)
at org.eclipse.osgi.storage.FrameworkExtensionInstaller.findMethod(FrameworkExtensionInstaller.java:59)
at org.eclipse.osgi.storage.FrameworkExtensionInstaller.findAddURLMethod(FrameworkExtensionInstaller.java:43)
at org.eclipse.osgi.storage.FrameworkExtensionInstaller.<clinit>(FrameworkExtensionInstaller.java:37)
... 14 more
為什么會發生這種情況,我該如何規避/修復此錯誤?
編輯:在我的系統上,默認的 JAVA VM 是:openjdk 17-ea 2021-09-14。 如果我使用不同的已安裝虛擬機,例如/usr/lib/jvm/java-11-openjdk-amd64/bin/java
,我會收到相同的錯誤。 來自https://jdk.java.net/archive/ 的用於 Java 16 的 JDK 也不會改變。 添加某人向我建議的--illegal-access=permit
- 也沒有幫助。
InaccessibleObjectException
似乎是由於使用Java 17運行未為 Java 17 做好准備的 Java 代碼引起的。Java 17比以前的 Java 版本更具限制性,在這一點上破壞了向后兼容性。 此外,Java 16 比以前的版本更具限制性,並且在 Java 11 系統中缺少 Java 8 中存在的庫包。
代替 Java 17,使用 Java 16 或 11來運行基於最新 Eclipse 版本的應用程序(在.ini
文件中有--add-modules=ALL-SYSTEM
)和Java 8來運行基於舊 Eclipse 版本的應用程序。
在可執行文件(具有相同名稱)旁邊的.ini
文件中,您可以指定用於運行基於 Eclipse 的應用程序的 Java 。 或者,您可以將 Java 放在安裝目錄的jre
子目錄中。
此外,您可能會要求應用程序的供應商提供帶有嵌入式 Java 的應用程序。
更新: Robert Crovella 參考了文檔,根據該文檔, Visual Profiler 需要 Java 8 。
正如@howlger 所暗示的那樣,這是由於較新版本的 Java 比測試 NVVP 的舊版本更具限制性造成的。 因此,使用舊版本運行它:
/path/to/jdk
。nvvp.ini
; 它應該在/usr/local/cuda/libnvvp/nvvp.ini
。 -vm /path/to/jdk/bin/java
到文件(它不應該已經有這樣一行)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.