问题标签 [jcuda]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
606 浏览

java - 在 Eclipse 中找不到 mavenized JCUDA 的依赖库

我正在尝试为我正在处理的项目设置 mavenized JCUDA,并且遇到了告诉 java 在哪里找到库文件的问题。

设置并让 maven 构建.jar.dll文件运行良好,我可以在其中看到正确命名的.dll文件,project\target\lib并且我将本机库位置设置为此文件夹。

尝试从 JCUDA JCublasSample.java (www.jcuda.org/samples/JCublasSample.java) 运行其中一个程序时出现的错误是:

创建输入数据... 使用 Java 执行 Sgemm... 使用 JCublas 执行 Sgemm...

线程“主”java.lang.UnsatisfiedLinkError 中的异常:无法加载本机库。

使用基本名称“JCublas”加载本机库“JCublas-windows-x86_64”时出错操作系统名称:Windows 7 体系结构:amd64 体系结构位大小:64

尝试将库作为资源加载的堆栈跟踪:java.lang.NullPointerException:找不到名称为“/lib/JCublas-windows-x86_64.dll”的资源

在 jcuda.LibUtils.loadLibraryResource(LibUtils.java:149) 在 jcuda.LibUtils.loadLibrary(LibUtils.java:83) 在 jcuda.jcublas.JCublas.initialize(JCublas.java:93) 在 jcuda.jcublas.JCublas.(JCublas .java:81) 在 JCublasSample.sgemmJCublas(JCublasSample.java:64) 在 JCublasSample.testSgemm(JCublasSample.java:49) 在 JCublasSample.main(JCublasSample.java:25)

尝试将库加载为文件的堆栈跟踪:java.lang.UnsatisfiedLinkError: C:\Users\kristoffer.bernhem\git\SMlocalizer\target\lib\JCublas-windows-x86_64.dll: 找不到依赖库

在 java.lang.ClassLoader$NativeLibrary.load(Native Method) 在 java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941) 在 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857) 在 java.lang.Runtime .loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at jcuda.LibUtils.loadLibrary(LibUtils.java:94) at jcuda.jcublas.JCublas.initialize(JCublas.java: 93) 在 jcuda.jcublas.JCublas.(JCublas.java:81) 在 JCublasSample.sgemmJCublas(JCublasSample.java:64) 在 JCublasSample.testSgemm(JCublasSample.java:49) 在 JCublasSample.main(JCublasSample.java:25) 在jcuda.LibUtils.loadLibrary(LibUtils.java:128) 在 jcuda.jcublas.JCublas.initialize(JCublas.java:93) 在 jcuda.jcublas.JCublas.(JCublas.java:81) 在 JCublasSample.sgemmJCublas(JCublasSample.java:64) 在 JCublasSample.testSgemm(JCublasSample.java:49) 在 JCublasSample.main(JCublasSample.java:25)

正如 Guenther 所解释的,问题在于.dll缺少支持文件。我将如何解决这个错误?

这是在 Windows 7(64 位)中运行并使用 JDK1.8.0_91 运行。

0 投票
0 回答
41 浏览

java - JCusolverSp_LinearSolver_Direct 无法与 JCuda 0.7.5 或 0.7 一起编译

http://www.jcuda.org/samples/samples.html上,目前有JCusolverSamples20151013.zip可供下载。似乎 0.7.5 或 0.7 等当前版本的 jcuda 适合它。

但是,两个 java 文件之一的 JCusolverSp_LinearSolver_Direct.java 无法编译,并且它包含 3 个不同方法的 5 个错误。所有错误消息都类似于以下有关最后一个参数“Pointer”而不是“int[]”的差异的消息:

在此处输入图像描述

我还检查了 JCuda 0.7.0,关于方法的 API 是相同的。我是 Jcuda 的新手,所以我不知道如何修改示例 JCusolverSp_LinearSolver_Direct java 文件。如何让它发挥作用?

0 投票
0 回答
147 浏览

java - 执行 jcuda 添加程序时出错

我是jCUDA的新手。我正在尝试使用 windows 上的 eclipse从NVIDIA示例中编译矢量添加程序。

这是我的程序:

错误信息:

你能帮我么?

0 投票
1 回答
88 浏览

jcuda - JCuda 的 JCublas2.cublasSdot: failed to use a device Pointer for the result Pointer 参数

在JCublas2.cublasSdot的源代码注释中,注释'result'参数可以是'主机或设备指针'。

但是,我只能使用像 Pointer.to(fs) 这样的主机指针和 float[] fs ={0}。如果我使用像 'CUdeviceptr devicePtr = new CUdeviceptr(); 这样的设备指针 JCudaDriver.cuMemAlloc(devicePtr, 100 * Sizeof.FLOAT);',程序崩溃,控制台消息如下:

主机和设备之间的数据传输最小化可以节省时间。如何使用设备指针作为此方法的“结果”参数,以及其他 JCuda 方法的结果指针用 /** 主机或设备指针 **/ 注释?

0 投票
1 回答
950 浏览

cuda - 在 GTX1080 上仅使用 ~2.2GB 内存后的 CUDA 内存不足消息

我正在使用带有 CUDA 8.0 的 JCuda 版本 0.8.0RC 在 GTX1080 GPU 上进行矩阵乘法。我将两个矩阵 A 和 B 以行主向量形式加载到设备中,并从设备中读取乘积矩阵。但我发现我的设备内存比我预期的要早用完。例如,如果矩阵 A 的尺寸为 100000 * 5000 = 5 亿个条目 = 2GB 的浮点值,则:

工作正常。但是,如果我将行数或行数从 100000 增加到 110000,则在此调用中会出现以下错误(这是在矩阵 B 和 C 的内存分配之前发生的,因此这些不是问题的一部分):

问题是在设备上分配这种大小的矩阵应该只需要大约 2.2GB,而 GTX1080 有 8GB 内存,所以我不明白为什么我的内存不足。有人对此有任何想法吗?确实,我将 JCuda 0.8.0RC 与 CUDA 8 的发布版本一起使用,但我尝试下载 CUDA 8 (8.0.27) 的 RC 版本以与 JCuda 0.8.0RC 一起使用,但在使其工作时遇到了一些问题. 但是,如果版本兼容性可能是问题,我可以再试一次。

当然,100000 * 5000 的矩阵非常大,在我的神经网络项目中我暂时不需要使用更大的矩阵,但我想确信我可以在这个新的上使用所有 8GB 内存卡片。谢谢你的帮助。

0 投票
1 回答
469 浏览

cuda - 如何在不使用 nvprof 的情况下获取 CUDA 事件的开始和结束时间

我写了一些使用 JCuda 来执行一些 CUDA 内核的 Java 代码。我想分析应用程序以了解流是如何重叠的等等。我可以使用 cuda 事件调用(例如 cudaEventElpasedTime)来获取内核的执行时间,但我不知道如何获取同一内核的开始和结束时间戳。

我知道 nvprof 可以生成这样的结果并显示时间线,但我找不到使用 Java 应用程序运行 nvprof 的方法。

编辑:现在我了解了如何使用 nvprof 来分析 Java 应用程序,这要归功于答案。我仍然更喜欢使用 cudaEvent 调用来获取开始和结束时间,这样我就有更多的控制权。似乎 nvprof 可以获得该信息,但最终用户没有 API 可以这样做吗?

0 投票
1 回答
719 浏览

java - 在 JCUDA 中执行 cuCtxSynchronize() 时出现“CUDA_ERROR_ILLEGAL_ADDRESS”

我正在学习 JCuda 并使用 JCuda 样本进行学习。

当我使用 JCuda 研究 KMeans 算法代码时,执行 cuCtxSynchronize(); 行时得到“CUDA_ERROR_ILLEGAL_ADDRESS”。

这让我很困惑。我该如何解决?

这是 KMeansKernel.cu

主要方法(我的班级名为“CUDA”):

方法 KmeansKernel:

堆栈跟踪:

0 投票
1 回答
353 浏览

java - JCUDA cuda 文件未编译

http://www.jcuda.org/tutorial/TutorialIndex.html

当我编译这段代码时,我得到了这个错误。我正在使用 NetBeans 8.2 并安装了 Cuda。它在 Visual Studio 2015 中完美运行。但它不适用于java。

0 投票
1 回答
184 浏览

java - 你如何在 jcuda 中获得 CUDA 核心数?

如何获得jcuda中的 CUDA 核心数?

我已经尝试过了,但它没有产生正确的输出:

它返回 16,但我有 1 个具有 640 个 cudacore 的 Nvidia GPU。

上述属性的 JavaDoc可在此处获得。任何帮助将不胜感激。

0 投票
1 回答
825 浏览

cuda - 将 cudaStream_t 对象转换为 CUStream 对象

有没有办法将cudaStream_t对象转换为CUStream

我发现了这个 hack,但我认为它不安全。或者,有没有办法只使用 CUDA 7.5 中的对象调用cudaLaunchKernelJCuda 应用程序?cudaStream_t