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

c++ - JCuda 全局共享内存导致错误

我正在尝试用 jcuda 中的共享内存做一些非常简单的事情。我的内核:

使共享内存成为全局允许我在设备函数中使用它,不幸的是,我什至不能将共享内存声明为全局的。Cuda 只是因内核崩溃而无法启动问题。我也试过这样做:

然而 nvcc 编译器给出的,不能外部链接共享内存错误。我真的想让它工作以使编写内核更容易,但我看不到办法。

0 投票
2 回答
368 浏览

maven - 使用 maven 构建 Mavenized jCuda

好吧,我已经成功安装了Nvidia驱动程序和cuda 7 ,并且已经在eclipse中构建并运行了许多jcuda(未经过 mavenized)项目。

但我想迁移到 mavenized 版本一。所以,我克隆了这个存储库并尝试构建它。我在 Ubuntu 14.04 x64 上,我也设置了nexus。但是当我想用它来构建它时, mvn clean package我得到了这个:

Downloading: http://localhost:8081/nexus/content/groups/public/jcuda/jcublas/0.7.0a/jcublas-0.7.0a.pom [WARNING] The POM for jcuda:jcublas:jar:0.7.0a is missing, no dependency information available

对于所有 *. 绒球

并在这些警告之后,构建未成功完成:

Could not resolve dependencies for project org.mystic:mavenized- jcuda:jar:0.1.2: The following artifacts could not be resolved: jcuda:jcublas:jar:0.7.0a, jcuda:jcuda:jar:0.7.0a ...

它列出了所有的 jcuda *. 罐子和 *. 索斯

我忘记了什么吗?

更新

我使用了选项-Dmaven.repo.local=repomvn clean package一切都很好。

0 投票
1 回答
175 浏览

cuda - 如何在 JCuda 中创建本机指针结构

我有一个包含结构列表的 CUDA 内核。

每个结构包含 3 个指针。

我有三个包含浮点数的设备数组,结构中的每个指针都指向三个设备数组之一中的浮点数。

结构列表表示允许内核执行递归操作的树/图结构,具体取决于发送到内核的结构列表的顺序。(此位在 C++ 中有效,因此与我的问题无关)

我想做的是能够从 JCuda 发送我的指针结构。我知道这在本机上是不可能的,除非它像这篇文章那样被展平为填充数组。

我了解发送结构列表时可能发生的所有对齐和填充问题,它本质上是一个重复的填充数组,我对此很好。

我不知道该怎么做,是用指针填充我的扁平结构缓冲区,例如,我认为我可以做这样的事情:

structListBuffer然后将以内核期望的方式包含结构列表。

那么有什么方法可以someGetUnderlyingPointerValueFunction()从 ByteBuffer 中进行操作吗?

0 投票
1 回答
482 浏览

cuda - 在 JCuda 中加载多个模块不起作用

在 jCuda 中,可以将 cuda 文件加载为 PTX 或 CUBIN 格式,并__global__从 Java 调用(启动)函数(内核)。

牢记这一点,我想用 JCuda 开发一个框架,在运行时将用户的__device__函数放入.cu文件中,加载并运行它。而且我已经实现了一个__global__函数,每个线程找出其相关数据的起点,进行一些计算,初始化,然后调用用户的__device__函数。

这是我的内核伪代码:

和用户的__device__功能:

在Java方面,这是我加载模块的部分(模块是由ptx使用此命令从cuda文件成功创建的文件制成的nvcc -m64 -ptx path/to/cudaFile -o cudaFile.ptx:)

当我尝试运行它时,我在第 3 行遇到错误:CUDA_ERROR_NO_BINARY_FOR_GPU。经过一番搜索,我发现我的ptx文件有一些语法错误。运行此建议的命令后:

ptxas -arch=sm_30 kernel.ptx

我有:

ptxas fatal : Unresolved extern function 'userFunc'

即使我将第 3 行替换为 4 以在内核之前加载userFunc ,我也会收到此错误。我被困在了这个阶段。这是加载需要在 JCuda 中链接在一起的多个模块的正确方法吗?或者甚至有可能吗?

编辑:

问题的第二部分在这里

0 投票
1 回答
574 浏览

cuda - JCuda中的JIT,加载多个ptx模块

我在这个问题中说我在 JCuda 中加载 ptx 模块时遇到了一些问题,在 @talonmies 的想法之后,我实现了他的解决方案的 JCuda 版本来加载多个 ptx 文件并将它们作为单个模块加载。这是代码的相关部分:

但是我得到了CUDA_ERROR_INVALID_IMAGE调用cuModuleLoadData方法的错误。在调试时,我看到调用cuLinkComplete方法并将图像数组作为输出传递后,数组仍然没有变化并且清晰。我是否正确传递了输出参数?这是在 JCuda 中通过引用传递变量的方式吗?

0 投票
1 回答
364 浏览

jcuda - jcuda cuModuleLoad() cannot load file using the path of getClass().getResource().getPath()

I am trying to use cuModuleLoad() in JCuda to load a vectorAdd.ptx file from /src/main/resources. The code is as follows:

But the cuModuleLoad() doesn't pick up this file. It only works when I pass in the absolute path of the ptx file. But I would like to have the ptx file shipped with compile jar files. Is there any way to accomplish this?

0 投票
1 回答
633 浏览

jcuda - 无法理解 jCuda cuLaunchKernel 是如何工作的?

我试图了解如何在 Java 中使用 Cuda。我正在使用 jCuda。

一切都很好,直到我遇到一个包含代码的示例:

核函数原型为:

问题是: 就 c 而言,我们似乎没有传递类似的东西吗?

所以基本上,我们是否总是必须拥有:

谢谢

0 投票
0 回答
86 浏览

java - 使用 JCuda 包装器使用 memcheck 调试 CUDA


我正在开发一个使用 JCuda 的图像分割程序。该项目是一个 Maven 项目,但是 JCuda 的依赖项存储在 dll 文件中,并且不使用 maven 进行管理。由于我在由 Jcuda 调用的 Cuda 内核 (*.ptx) 中遇到运行时错误,因此我想开始调试,使用 Cuda 的 Java 包装器相对困难。因此,我想使用“memcheck”,它需要一个 *.bat 文件来调用我的 Java 程序。这是我迷路的地方。我没有设法创建一个可运行的 jar 文件,我可以在我的 *.bat 文件中使用 java 命令运行它。我的问题是,有没有另一种方法可以调试我的 Cuda 代码,但不创建可运行的 jar 文件?- 如果没有,我如何从 maven 创建一个可运行的 jar 文件?

我知道其他人也有这个问题,但没有答案对我有用,这让我怀疑 dll 文件与它有关。我试图用 maven 打包项目(maven built... -> 目标:包)。当我通过命令提示符导航到创建 jar 文件的目标目录时,程序不会运行:

cmd提示符下的java

回复意味着找不到主要清单属性。这是我的 pom 文件的快照,它应该定义主类:

在 pom 文件中构建

谢谢您的帮助。这是我在这里关于堆栈溢出的第一篇文章,所以请指出我的问题中的不一致之处。

0 投票
1 回答
288 浏览

hadoop - 在 Hadoop-2.6.0 中,容器因虚拟内存不足而被杀死

我正在尝试在hadoop上实现jcuda代码,它在本地模式下工作,但是当我在hadoop集群上运行作业时,它给了我一个错误:容器被杀死这里是具体的错误报告:

16/04/29 10:18:07 INFO mapreduce.Job:任务 ID:尝试_1461835313661_0014_r_000009_2,状态:容器失败 [pid=19894,containerID=container_1461835313661_0014_01_000021] 正在超出虚拟内存限制。当前使用情况:已使用 1 GB 物理内存中的 197.5 MB;使用了 20.9 GB 的 2.1 GB 虚拟内存。杀死容器。

输入数据只有200MB,但工作要求20.9GB虚拟内存我不知道为什么。我试图增加虚拟内存,配置在yarn-site.xml中:

它不起作用,我不知道如何解决它,我为我糟糕的英语感到抱歉。

0 投票
1 回答
2213 浏览

java - 访问 CUDA 内核中的变量时的 CUDA_ERROR_ILLEGAL_ADDRESS

CUDA_ERROR_ILLEGAL_ADDRESS尝试运行用于计算Buddhabrot 分形轨道的内核时出现异常。

我现在已经尝试了多种方法,与我最初的想法相反,该错误甚至似乎都不是源于数组。例如,

会工作得很好。但是,当我尝试调试时idx(记得我首先认为错误与数组有关),我发现我不能像这样分配 idx

也不在 printf 语句中使用它

我已经尝试过同样的方法curX并且curY也拒绝工作,但是cR例如可以正常工作而不会出现任何错误。在最里面的循环内分配的变量似乎有问题(我也不能分配k),所以我尝试idx在函数开始时在所有循环之外声明,但无济于事。还是同样的错误。

堆栈跟踪:

常数:

MCVE: