问题标签 [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.
c++ - JCuda 全局共享内存导致错误
我正在尝试用 jcuda 中的共享内存做一些非常简单的事情。我的内核:
使共享内存成为全局允许我在设备函数中使用它,不幸的是,我什至不能将共享内存声明为全局的。Cuda 只是因内核崩溃而无法启动问题。我也试过这样做:
然而 nvcc 编译器给出的,不能外部链接共享内存错误。我真的想让它工作以使编写内核更容易,但我看不到办法。
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=repo
,mvn clean package
一切都很好。
cuda - 如何在 JCuda 中创建本机指针结构
我有一个包含结构列表的 CUDA 内核。
每个结构包含 3 个指针。
我有三个包含浮点数的设备数组,结构中的每个指针都指向三个设备数组之一中的浮点数。
结构列表表示允许内核执行递归操作的树/图结构,具体取决于发送到内核的结构列表的顺序。(此位在 C++ 中有效,因此与我的问题无关)
我想做的是能够从 JCuda 发送我的指针结构。我知道这在本机上是不可能的,除非它像这篇文章那样被展平为填充数组。
我了解发送结构列表时可能发生的所有对齐和填充问题,它本质上是一个重复的填充数组,我对此很好。
我不知道该怎么做,是用指针填充我的扁平结构缓冲区,例如,我认为我可以做这样的事情:
structListBuffer
然后将以内核期望的方式包含结构列表。
那么有什么方法可以someGetUnderlyingPointerValueFunction()
从 ByteBuffer 中进行操作吗?
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 中链接在一起的多个模块的正确方法吗?或者甚至有可能吗?
编辑:
问题的第二部分在这里
cuda - JCuda中的JIT,加载多个ptx模块
我在这个问题中说我在 JCuda 中加载 ptx 模块时遇到了一些问题,在 @talonmies 的想法之后,我实现了他的解决方案的 JCuda 版本来加载多个 ptx 文件并将它们作为单个模块加载。这是代码的相关部分:
但是我得到了CUDA_ERROR_INVALID_IMAGE
调用cuModuleLoadData
方法的错误。在调试时,我看到调用cuLinkComplete
方法并将图像数组作为输出传递后,数组仍然没有变化并且清晰。我是否正确传递了输出参数?这是在 JCuda 中通过引用传递变量的方式吗?
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?
jcuda - 无法理解 jCuda cuLaunchKernel 是如何工作的?
我试图了解如何在 Java 中使用 Cuda。我正在使用 jCuda。
一切都很好,直到我遇到一个包含代码的示例:
核函数原型为:
问题是: 就 c 而言,我们似乎没有传递类似的东西吗?
所以基本上,我们是否总是必须拥有:
谢谢
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 文件的目标目录时,程序不会运行:
回复意味着找不到主要清单属性。这是我的 pom 文件的快照,它应该定义主类:
谢谢您的帮助。这是我在这里关于堆栈溢出的第一篇文章,所以请指出我的问题中的不一致之处。
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中:
它不起作用,我不知道如何解决它,我为我糟糕的英语感到抱歉。
java - 访问 CUDA 内核中的变量时的 CUDA_ERROR_ILLEGAL_ADDRESS
CUDA_ERROR_ILLEGAL_ADDRESS
尝试运行用于计算Buddhabrot 分形轨道的内核时出现异常。
我现在已经尝试了多种方法,与我最初的想法相反,该错误甚至似乎都不是源于数组。例如,
会工作得很好。但是,当我尝试调试时idx
(记得我首先认为错误与数组有关),我发现我不能像这样分配 idx
也不在 printf 语句中使用它
我已经尝试过同样的方法curX
并且curY
也拒绝工作,但是cR
例如可以正常工作而不会出现任何错误。在最里面的循环内分配的变量似乎有问题(我也不能分配k
),所以我尝试idx
在函数开始时在所有循环之外声明,但无济于事。还是同样的错误。
堆栈跟踪:
常数:
MCVE: