- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用jCuda 中的函数pointer.to(int[ ]) 来索引一维“结果”数组。我想将一 block 数据写入“Result”的前 n 个位置,并将下一个数据 block 写入 Result[0 + chunk],依此类推。
与 C 不同,我不能说 Result+chunk 并继续生活。那么我如何索引到中间位置?
最佳答案
假设您从 jcuda.org 引用 JCuda:
当您使用 Pointer#to(int[]) 创建指向 int 数组的指针时,您可以使用 Pointer#withByteOffset(long) 创建具有特定字节偏移量的指针方法。所以在这个例子中:
Pointer p = Pointer.to(intArray);
Pointer next = p.withByteOffset(chunkSize * Sizeof.INT);
此方法仅在数组中的特定位置创建“ View ”。它不复制任何数据等。结果指针将仅指向数组的第“chunkSize”元素。因此,它是 C 构造的“Java 版本”
int *p = ...
int *next = p + chunkSize;
你提到的。
重要提示:确保将预期偏移量确实乘以数组中元素的大小!它必须是 BYTE 偏移量,因此“chunkSize”必须乘以 Sizeof.INT
才能真正指向 int[] 数组中的正确位置。 (在 C 中,此乘法是根据指针类型隐式完成的。但由于 Java 中的指针没有关联类型,因此您始终必须指定 BYTE 偏移量)
提示:当您经常需要特定类型的偏移指针时,可以使用这样的辅助方法来提高可读性
private static Pointer at(Pointer p, int offsetInInts)
{
int offsetInBytes = offsetInInts * Sizeof.INT;
return p.withByteOffset(offsetInBytes);
}
您可以在方法调用中使用:
// C version:
cudaMemcpy(p + chunkSize * i, ...);
// Java version:
cudaMemcpy(at(p, chunkSize * i), ...);
关于java - jCuda 指针函数中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20603893/
如何使用jCuda 中的函数pointer.to(int[ ]) 来索引一维“结果”数组。我想将一 block 数据写入“Result”的前 n 个位置,并将下一个数据 block 写入 Result
在 CUDA 中,我们可以简单地通过检查函数的返回类型来了解错误,例如 cudaMemcpy()、cudaMalloc() 等,即 cudaError_t 和 cudaSuccess。 JCuda 中
我已经开始使用 JCuda。当我编译程序时出现“jcuda.cuda exception cuda_error_launch_failed”错误。我已经按照安装指南中给出的步骤进行操作,但不起作用。在
在jCuda中,可以将cuda文件加载为PTX或CUBIN格式并调用(启动)__global__来自 Java 的函数(内核)。 考虑到这一点,我想使用 JCuda 开发一个框架来获取用户的 __de
我已经看过这个http://www.javacodegeeks.com/2011/10/gpgpu-with-jcuda-good-bad-and-ugly.html这说我必须修改我的内核以仅采用一维
我正在用java计算图像的肤色。 转换 yCbCR 中图像的像素。 检查图像像素是否在特定范围内,则它是肤色。 通过除以总像素来计算百分比。 它在 CPU 代码中工作正常,但是当我将其转换为 GPU
我刚刚使用 JCUDA 开发了我的第一个程序(在 eclipse 上),我想在其他没有我用来开发它的 nvidia 驱动程序和编译器的计算机上执行它。 如何将可执行文件导出到另一台计算机并执行它而不重
如何获取 jcuda 中的 CUDA 核心数? 我已经尝试过,但它没有产生正确的输出: int cudacount = cudaDeviceAttr.cudaDevAttrMultiProcessor
我只是找不到 JCuda 的最简单任务之一的示例:将两个值数组添加到第三个数组。 我总是只找到 C/C++ 示例,它们依赖于某些 CUDA 预编译器,因此对我来说无法使用。那里发生了可怕的事情,例如:
我正在使用动态语言 (Clojure) 以使用 JCuda 的交互式开发方式创建 CUDA 上下文。通常我会调用一个初始化器,其中包含对 jcuda.driver.JCudaDriver/cuInit
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我在 GPU 端(cuda)定义了一个新的数据类型: typedef union { int i; double d; long l; char s[16]; } da
我正在尝试设置 JCuda 并执行示例附加内核。当我在编译 JCudaVectorAdd.java 后尝试执行 JCudaVectorAdd 时,出现以下错误: Exception in thread
我能够在 Mac OSX 10.9.3 64 位系统 ( http://www.jcuda.org/downloads/downloads.html ) 上编译 JCuda 的 native 0.6.
我已在 Gradle 中导入以下库: compile group: 'org.jcuda', name: 'jcuda-natives', version: '0.9.2' compile group
问题列出了所有相关版本。 我正在尝试运行 http://www.jcuda.org 处的示例文件之一:JCublasMatrixInvert.java。 我已经安装了 NVIDIA CUDA 驱动程序
我是一名优秀的程序员,十分优秀!