问题标签 [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 投票
1 回答
1133 浏览

java - jcuda 或 cuda:over 与其他的优缺点

我的母语是 Java(我知道我知道,但你不能改变你是谁)。

所以我想了解做 CUDA 与 JCUDA 的优缺点。

我刚刚发现有一个jcuda.org

提前致谢。

0 投票
1 回答
247 浏览

java - 使用 Java 中的 cuda 设备内核?

我正在使用带有 Jcuda 库的 Java 来访问 CUDA.. 我能够运行一个简单的应用程序(如 vectorAdd).. 但是,我的内核代码说变得非常大.. 有没有办法在内核中使用设备功能.cu 文件?我知道如果我使用 CUDA C 是可能的,但是使用 Java 会出错?谁能帮忙

提前致谢

0 投票
1 回答
863 浏览

cuda - JCuda 固定内存示例

JCuda + GEForce Gt640 问题:

在 GPU 计算出结果后,我试图减少与将内存从设备复制到主机相关的延迟。执行简单的 Vector Add 程序,我发现大部分延迟确实是将结果缓冲区复制回主机端。源缓冲区到设备端的传输延迟可以忽略不计 ~.30 毫秒,而将结果复制回大约 20 毫秒。

我进行了研究,发现复制结果的更好替代方法是使用固定内存。据我所知,这个内存是在主机端分配的,但内核可以通过 pci-e 直接访问它,从而产生比在批量计算后复制结果更高的速度。我正在使用以下示例,但结果并未达到我的预期。

内核:{用于说明要点的简单示例,仅启动 1 个块 1 个线程}

爪哇:

1.) 构建内核:root@NVS295-CUDA:~/JCUDA/MySamples# nvcc -ptx JCudaKernel.cu root@NVS295-CUDA:~/JCUDA/MySamples# ls -lrt | grep ptx -rw-r--r-- 1 根根 3295 Mar 27 17:46 JCudaKernel.ptx

2.)构建Java:root@NVS295-CUDA:~/JCUDA/MySamples# javac -cp "../JCuda-All-0.5.0-bin-linux-x86/*:." JCudaTest.java

3.) 运行代码:root@NVS295-CUDA:~/JCUDA/MySamples# java -cp "../JCuda-All-0.5.0-bin-linux-x86/*:." JCudaTest 0 0 0 0 0

期待:1 2 3 4 5

注意:如果这很重要,我正在为 x86 使用 JCuda0.5.0。

请让我知道我做错了什么,并提前感谢:Ilir

0 投票
2 回答
447 浏览

debugging - 调试JCuda程序


我想知道 JCuda 项目的最佳调试器是什么(如果存在)。
我知道对于普通的 CUDA 应用程序,有 cuda-gdb 和 cuda-memcheck 之类的工具,我想知道是否可以将它们中的任何一个或类似的工具用于 JCuda 项目。
谢谢!

0 投票
1 回答
798 浏览

cuda - JCuda:将多维数组从设备复制到主机

我已经使用 JCuda 几个月了,我无法将多维数组从设备内存复制到主机内存。有趣的是,我在相反的方向上这样做没有问题(我可以使用多维数组调用我的内核,并且一切都使用正确的值)。

简而言之,我将内核的结果放在一个二维数组中,这个数组的第一个维度是线程的数量,这样每个人都可以在不同的位置写入。

这里有一个例子:

我究竟做错了什么?

编辑

显然,有一些限制不允许将设备分配的内存复制回主机,如此(以及更多)线程中所述:link

任何解决方法?我正在使用 CUDA Toolkit v5.0

0 投票
1 回答
801 浏览

java - 需要帮助添加 OpenCL(GPU 使用)

好吧,我决定我更喜欢使用 GPU 而不是 CPU,尤其是因为我正在开发一款游戏,而我期望的 FPS 会增加。问题是我不知道从哪里开始。我可以轻松实现 JOCL 或 JCUDA,但之后我不知道在哪里将它从使用 CPU 替换为 GPU。帮助表示赞赏:)

0 投票
1 回答
534 浏览

cuda - cuda 运行时 api 和动态内核定义

使用驱动程序 api 会阻止在同一应用程序中使用运行时 api ([1])。不幸的是,cublas、cufft 等都是基于运行时 api。如果想要同时在 cuModuleLoad 和 cublas 中定义动态内核,有哪些选择?我有这些,但也许还有更多:

A. 等待传闻支持驱动程序和运行时 API 在同一应用程序中和平共存的计算能力 3.5。

B. 将内核编译为 .so 文件并 dlopen。他们会在 dlcose 上卸载吗?

C. 尝试使用驱动程序 api 中的 cuModuleLoad,但其他一切都来自运行时 api。不知道这是否有任何希望。

我没有屏住呼吸,因为 jcuda 或 pycuda 几乎处于相同的状态,他们可能已经知道了。

[1] CUDA 驱动程序 API 与 CUDA 运行时

0 投票
1 回答
189 浏览

java - jCuda指针函数中的索引

如何使用 jCuda 中的函数 pointer.to(int[ ]) 在一个索引中,比如说一维“结果”数组。我想将一大块数据写入“Result”的前 n 个位置,然后将下一块数据写入 Result[0 + chunk],依此类推。

与 C 不同,我不能说 Result+chunk 并继续生活。那么我如何索引到中间位置呢?

0 投票
1 回答
244 浏览

gpu - JCuda中提供的免费功能在实时应用程序中没有释放GPU内存,如何释放JCuda中的GPU内存?

这里 cuMemFree 没有释放 GPU 内存。

0 投票
1 回答
3823 浏览

c - 从使用 OpenGL 的 CUDA 生成的顶点缓冲区对象绘制图像

我正在使用 CUDA 生成这个 ABGR 输出图像。有问题的图像存储在 uchar4 数组中。数组的每个元素代表图像中每个像素的颜色。显然,这个输出数组是一个 2D 图像,但它在 CUDA 中被分配为交错字节的线性内存。

我知道 CUDA 可以轻松地将这个数组映射到一个 OpenGL 顶点缓冲区对象。我的问题是,假设我有图像中每个像素的 RGB 值,以及图像的宽度和高度,我如何使用 OpenGL 将此图像绘制到屏幕上?
我知道必须涉及某种着色器,但由于我的知识很少,我不知道着色器如何使用每个像素的颜色,但将其映射到正确的屏幕像素。

我知道我应该增加我在 OpenGL 方面的知识,但这似乎是一项微不足道的任务。如果我有一种简单的方法来绘制这个图像,我宁愿不花太多时间学习 OpenGL。