簡體   English   中英

NVIDIA Visual Profiler 在啟動時崩潰

[英]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 的舊版本更具限制性造成的。 因此,使用舊版本運行它:

  1. jdk.java.net 上的這個存檔下載 Linux JDK(希望 11 到 16 之間的某個版本應該可以)。
  2. 安裝它; 假設它在/path/to/jdk
  3. 編輯您的nvvp.ini 它應該在/usr/local/cuda/libnvvp/nvvp.ini
  4. 添加:
     -vm /path/to/jdk/bin/java
    到文件(它不應該已經有這樣一行)。
  5. 運行NVVP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM