问题标签 [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 回答
785 浏览

cuda - CUDA (JCUDA) 共享内存 (?) 问题/未定义行为

我正在研究我的游戏项目(塔防),我试图使用共享内存计算所有小动物和带有 JCuda 的塔之间的距离。对于每座塔,我用 N threds 运行 1 个街区,其中 N 等于地图上小动物的数量。我正在计算给定块的所有生物与塔之间的距离,并将迄今为止发现的最小距离存储在块的共享内存中。我当前的代码如下所示:

问题是,如果我多次使用相同的输入重新运行代码(每次运行后我释放主机和设备上的所有内存),每次执行代码块(塔)编号 > 27 时,我都会得到不同的输出。 .我相当确定它与共享内存和我处理它的方式有关,因为无论何时执行代码,重写代码以使用全局内存都会给出相同的结果。有任何想法吗?

0 投票
2 回答
1858 浏览

java - 无法在 Windows 7 64 位、Sun JDK 7 和 IntelliJ 11.1 上通过 CUDA 4.0 运行 JCUDA 0.4.1

这个问题列出了所有相关的版本。

我正在尝试运行http://www.jcuda.org上的示例文件之一:JCublasMatrixInvert.java。

我已经安装了 NVIDIA CUDA 驱动程序;我已经下载了 JCUDA 0.4.1 绑定并将它们的 /lib 目录添加到我的 java.library.path 中。以下是我在运行时设置的 JVM 参数:

然而,当我尝试运行该类时,我得到以下堆栈跟踪:

我可以在路径上看到据称丢失的 dll

我错过了什么?我究竟做错了什么?任何成功运行此示例的人都可以告诉我吗?谢谢。

0 投票
1 回答
596 浏览

cuda - 库达。重用已使用的指针

我在使用 JCUDA 时遇到了麻烦。我的任务是使用 CUFFT 库进行 1D FFT,但结果应该乘以 2。所以我决定使用 CUFFT_R2C 类型进行 1D FFT。接下来负责这个的类:

负责乘法的方法使用 cuda 核函数。Java方法代码:

接下来是核函数:

但是,当我试图将指向 FFT 结果的指针(在设备内存中)传递给 multiplyOn2 方法时,它会在 cuCtxSynchronize() 调用上引发异常。例外:

我试图使用 Visual Studion C++ 做同样的事情,这没有问题。请你帮助我好吗。

PS我可以解决这个问题,但是我需要将数据从设备内存复制到主机内存,然后在每次调用新的cuda函数之前通过创建新指针复制回来,这会减慢我的程序执行速度。

0 投票
1 回答
298 浏览

java - 使用 gpgpu 进行大量矢量计算的最佳方法?

我有一个 100 万列 x 100 万行的矩阵。

我的算法需要做:

或者你也可以说:

我的问题:为这个问题分配内存和初始化内存的正确方法是什么:

- 我应该为完整矩阵分配内存,用完整矩阵初始化它,然后运行算法吗?
- 或者我应该为向量列表分配内存,然后遍历这个列表?
- 要不然??

我担心的是我想尽量减少到 gpu 的传输时间。我已经通过修改JCublas hello world 示例来尝试这种计算,以对 2 个向量进行 sgemm 操作,但是在我的大量向量上执行此操作时,最终导致传输时间删除了 gpu 加速的好处。

谢谢!PS:实现可以在任何Java库中

0 投票
1 回答
294 浏览

java - cublasSgemmBatched 与 jcuda 的使用

我一直在尝试在jcuda中使用 cublasSgemmBatched() 函数进行矩阵乘法,但我不确定如何正确处理指针传递和批处理矩阵的向量。如果有人知道如何修改我的代码以正确处理此问题,我将非常感激。在此示例中,C 数组在 cublasGetVector 之后保持不变。

0 投票
1 回答
182 浏览

java - JCuda 编译器错误

我已经开始使用 JCuda。当我编译程序时,我收到“jcuda.cuda exception cuda_error_launch_failed”错误。我已按照安装指南中给出的步骤操作但不起作用。网上可用的资源很少。所以,请帮助我.这是我的代码:

我安装了 nvidia 460 gtx gpu 和 cuda 驱动程序和工具包。

0 投票
1 回答
546 浏览

cuda - 在程序中多次调用 jcuda.driver.JCudaDriver/cuInit 是否安全?

我正在使用动态语言 (Clojure) 以使用 JCuda 的交互式开发方式创建 CUDA 上下文。通常我会调用一个初始化器,其中包含对jcuda.driver.JCudaDriver/cuInit. 多次调用 cuInit 是否安全?另外,有没有类似cuInit的destroy方法?CUDA_ERROR_DEINITIALIZED我问,因为它可能返回错误代码。

0 投票
2 回答
675 浏览

java - 使用 CUDA 和 Java 分配大型固定内存块

我正在用 Java 编写的程序中实现 GPU 计算。为此,我正在使用jcuda绑定。我需要一个快速的主机到设备的内存传输,有时是相对较大的数组。如果我想使用流,我必须使用固定内存。问题是如果我想分配大于 cca 600 Mbs RAM 的主机固定内存,我会得到“CUDA_ERROR_OUT_OF_MEMORY”异常。这是我用来测试可用固定内存大小的代码:

现在,我知道操作系统可以阻止我使用过多的固定内存,因为它是不可分页的。问题是我有 48Gb(45Gb 空闲)的物理内存,我需要一种强制操作系统给我更多的方法。有没有办法做到这一点(如果可能的话,优雅地)?

编辑:操作系统是 64 位 Windows 7 Professional SP1

0 投票
2 回答
796 浏览

cuda - 带有 += 赋值的嵌套 for 循环

我在Java中有以下代码:

我最多简化了它,所以你不应该在那里搜索真正的逻辑:)。

由于循环中的 += 语句,我在 CUDA 中转换了几个小时。

我从这样的事情开始:

但很快意识到它无法工作,因为所有线程都试图设置相同的变量。

我在此演示文稿中阅读了点积的示例,但我真的不知道如何根据我对 in 的二维需求进行调整。

我不要求一个完整的解决方案,但任何方向肯定会受到赞赏。

谢谢,

0 投票
1 回答
1311 浏览

java - 在 Java 中运行工作 CUDA 代码的最简单方法是什么?

我有一些用 C 编写的 CUDA 代码,它似乎工作正常(它是普通的旧 C 而不是 C++)。我正在运行一个 Hadoop 集群并希望整合我的代码,因此理想情况下我希望在 Java 中运行它(长话短说:系统太复杂了)。

目前,C 程序解析一个日志文件,占用几千行,在 GPU 上并行处理每一行,将特定的错误/事务保存到一个链表中,并将它们写入驱动器。

做到这一点的最佳方法是什么?JCUDA 是到 C CUDA 的完美映射还是完全不同?或者从 Java调用C 代码并共享结果是否有意义(链接列表是否可以访问)?