问题标签 [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.
java - 在 Mac OSX 10.9.3 上打包 JCUDA 0.6.0
我能够在 Mac OSX 10.9.3 64 位系统 ( http://www.jcuda.org/downloads/downloads.html ) 上编译 JCuda 的本机 0.6.0 库。不幸的是,我不够聪明,无法将所有东西都打包到一个罐子里。有人可以帮我这样做吗?我创建了一个 Netbeans 项目并将所有提供的 Java src 文件夹的内容复制到其中。然后我把所有东西都打包进一个罐子里。然后,我使用 Jarsplice 0.4.0 尝试构建一个 Jar 文件,其中包含下面列出的所有本机库文件(第一个 .a 文件除外)。不幸的是,当我将生成的 jar 链接到我的项目并运行它时,它没有工作,因为缺少 libJCudaRuntime-apple-x86_64.jnilib。
提前谢谢你
我的 lib 文件夹包含: libCommonJNI.a libJCublas-apple-x86_64.dylib libJCublas2-apple-x86_64.dylib libJCudaDriver-apple-x86_64.dylib libJCudaRuntime-apple-x86_64.dylib libJCufft-apple-x86_64.dylib libJCurand-apple-x86_64.dylib libJCusparse-apple-x86_64.dylib
cuda - 在 Jcuda 中如何进行错误处理?
在 CUDA 中,我们可以通过检查 cudaMemcpy()、cudaMalloc() 等函数的返回类型来了解错误,即 cudaError_t 和 cudaSuccess。JCuda 中是否有任何方法可以检查 cuMemcpyHtoD()、cuMemAlloc()、cuLaunchKernel() 等函数的错误?
cuda - jCUDA 中的函数 cuMemcpyHtoD 出错
我是 java 编程新手,并试图在 jCUDA 中编写矩阵乘法程序。
在将数据从主机传输到设备时,反之亦然,我使用:
这里,devMatrixA、devMatrixB 和 devMatrixC 是要存储在设备内存中的矩阵。hostMatrixA、hostMatrixB 和 hostMatrixC 是存储在我的主机内存中的矩阵。
当我调用上述函数进行数据传输时,它给了我以下错误“指针类型中的方法 to(byte[]) 不适用于参数 (float[][])”和“指针.to”中的“to” (' 是红色下划线。我正在使用 eclipse。我已经给出了我的完整代码,如下所示。
请原谅我的Java知识,如果我走错方向,请提出建议。
eclipse - 在 Eclipse 中从 SDK 编译 jCUDA 示例时出错“找不到输入文件:JCudaVectorAddKernel.cu”
我也是 jCUDA 和 java 的新手。我正在尝试在 Redhat Linux 上使用 eclipse 从 NVIDIA 示例中编译矢量添加程序。
我遵循的步骤: 1. 输入:nvcc -ptx JCudaVectorAddKernel.cu -> 它生成 JCudaVectorAddKernel.ptx 文件 2. 执行以下程序:JCudaVectorAdd.java:
包 JCudaVectorAdd;
JCudaVectorAddKernel.cu:
'JCudaVectorAddKernel.cu' 和 'JCudaVectorAddKernel.java' 都在同一路径上:/home/sandeep/workspace1/jCuda/jCudaVectorAdd/src/jCudaVectorAdd
当我在eclipse中执行程序时,它给了我以下错误:
有什么与编译命令相关的事情吗?或 ptx/.cu 文件路径?如果我走错方向,请指导我。
cuda - 内核调用 cuLaunchKernel() 中“sharedMemBytes”参数的意义是什么?
我正在尝试使用 JCuda 中的共享内存来实现简单的矩阵乘法程序。
以下是我的 JCudaSharedMatrixMul.java 代码:
以下是我的 JCudaSharedMatrixMulKernel.cu 代码:
在我上面的示例中,每个块使用的总共享内存为 2*4*4*4 = 128 字节。在 cuLaunchKernel 中,当我将 sharedMemBytes参数定义为 0(零)时,它会给我以下错误:
当我将其定义为 128 时,它会给出与上述相同的错误。但是当我把它设为 129 时,它会给我正确的输出!当我给出 129 到 49024 之间的任何值时,它会给我正确的结果。我的问题是为什么我将其定义为 128 时无法获得正确的输出?另外可以定义的最大共享内存是多少?为什么这个 129-49024 范围在这里工作?
cuda - 在不使用共享内存的情况下执行矩阵元素径向平均的有效方法
我正在尝试在 CUDA 中实现矩阵元素的径向平均值,我必须在其中找到并打印每个矩阵元素的所有相邻元素(包括其自身)的平均值。以下是我最终得到的结果(对于半径 = 1):
我上面的代码检查顶行、底行、最右边和最左边的列元素的条件,它必须计算 6 个元素的平均值。Ans 也适用于 4 个角元素,它必须计算 4 个元素的平均值。对于剩余的内部元素,它必须计算 9 个元素的平均值。上面的代码只是一个简单的将 C 转换为 CUDA 的程序。我正在寻找最有效的方法,而不使用共享内存来编写程序。对于任何给定的半径。任何算法、伪代码或建议都可以。提前致谢。
java - Jcuda 并行化 for 循环
我是 Java 的 cuda 新手。我有一个简单的任务要做:并行化一个 for 循环。
我的 for 循环非常简单,我有一个对象数组,我必须对数组中的每个对象执行一些“评估”:
我想知道我可以并行化这个。我只在 JCuda 中找到了复杂事物的示例。
感谢您的帮助
玛丽亚
java - 如何让 Mavenized JCuda、Eclipse 和 Windows 一起工作?
- NVidia 不分发适用于 Windows 的 NSight IDE(仅限 Linux 和 MacOSX)
- 我不想使用 Visual Studio,因为我不熟悉它;作为一名 Java 开发人员,我更喜欢 Eclipse。
- 我想使用 Maven,因为每个人都应该使用,Mavenized JCuda似乎是一个好的开始。
所以这就是我所做的:
- 从NVidia 网站下载了 CUDA Developer Toolkit 6.5 版。
- 获得 Eclipse J2EE 版本,因为它具有内置的 Maven 支持。
- 将 mavenized-jcuda 项目克隆到我的工作区中。
- 尝试运行示例程序,但出现错误。
堆栈跟踪:
我尝试向我的 -Djava.library.path="..." JVM 参数添加一堆路径,包括:
- C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v6.5
- C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v6.5\bin
- C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v6.5\lib\x64
- ETC...
但仍然得到同样的错误。更令人担忧的是,我的计算机上的任何地方都没有该名称的文件(JCudaRuntime-windows-x86_64.dll)。那么如何解决这些链接问题呢?
java - 使用 JCufft 进行实数到复数 FFT
我正在使用 org.apache.commons.math3.transform 库进行从实数到复数的 FFT,如下所示:
这给了我一个带有结果的 org.apache.commons.math3.complex 数组。这工作正常。
现在我想用 JCufft 库执行完全相同的操作。我试图这样做:
但是,当我比较结果时,它们彼此不同。我没有考虑到什么,我做错了什么?
谢谢你的帮助。
java - JNI库在垃圾收集时释放内存?
我正在使用 JCUDA,想知道 JNI 对象是否足够聪明,可以在垃圾收集时释放它们?我可以理解为什么这可能不适用于所有情况,但我知道它会在我的情况下工作,所以我的后续问题是:我怎样才能做到这一点?有我可以设置的“模式”吗?我需要建立一个抽象层吗?或者也许答案真的是“不,永远不要尝试”,那为什么不呢?
编辑:我只指通过 JNI 创建的本机对象,而不是 Java 对象。我知道所有 Java 对象都被同等对待 WRT 垃圾回收。