问题标签 [cudafy.net]
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# - CudafyModule km = CudafyTranslator.Cudafy(); 编译错误
我试图在我的算法上获得更好的性能,所以我为此尝试了 cudafy。已经做了很多教程,但它仍然错过了一些东西。
这里发生的错误:
编译错误:C:/Users/Nuno/Desktop/KuhnPokerFinal/KuhnPokerFinal/bin/Debug/CUDAFYSOURCETEMP.cu(10):错误:标识符“random”未定义
编译“C:/Users/Nuno/AppData/Local/Temp/tmpxft_00002724_00000000-8_CUDAFYSOURCETEMP.cpp1.ii”时检测到1个错误。在此处输入代码
c# - CUDAfy.Net / OpenCL,包含字节数组的结构导致非 blittable 异常
好的,所以我使用的是 CUDAfy.Net,我有以下 3 个结构:
现在,只要我将一组 Collider 对象发送到 GPU,使用
我收到以下错误:
有没有人对 CUDAfy.Net 或 OpenCL 有任何经验(因为它基本上可以编译成 OpenCL ),知道我该如何做到这一点吗?整个问题在于 Texture 的字节数组,因为当我没有 Texture 结构时,一切都工作得很好,据我所知,该数组是不可 blittable 部分。我发现了几个关于同一问题的问题,他们使用固定大小的数组修复了它。但是,我无法做到这一点,因为这些是纹理,其大小可能有很大差异。
编辑:现在,我正在 CPU 上执行以下操作:
然后我将此纹理结构附加到碰撞器,并将它们发送到 GPU。这一切都没有任何错误。但是,一旦我尝试在 GPU 上使用纹理,就像这样:
我收到以下错误:
顺便说一下,Texture 结构看起来像这样:
我又完全不知所措了。。
c# - Cudafy.NET编译错误:两个不同地址空间的指针之间的非法隐式转换
我在编译下面的方法时遇到问题。如果选择 CUDA 作为目标,它编译得很好,但是如果选择 OpenCL,它会抛出错误。
错误:
错误:具有不同地址空间的两个指针之间的非法隐式转换
我没有足够的知识来纠正这个问题(我刚刚开始 GPGPU 编程)。
c# - 将非托管 System.IntPtr 字节向量复制到 2D 设备字节数组的 GPU 行
我正在使用 C# 和 CUDAfy.net(是的,这个问题在带有指针的直接 C 中更容易,但考虑到更大的系统,我有使用这种方法的原因)。
我有一个视频帧采集卡,它以 30 FPS 的速度收集字节 [1024 x 1024] 图像数据。每 33.3 毫秒,它填充一个循环缓冲区中的一个槽,并返回一个System.IntPtr
指向 的非托管 1D 向量的*byte
; 循环缓冲区有 15 个插槽。
在 GPU 设备 (Tesla K40) 上,我想要一个全局 2D 数组,该数组被组织为密集的 2D 数组。也就是说,我想要类似循环队列的东西,但在 GPU 上组织为密集的 2D 数组。
如何每 33 毫秒填写不同的行?我是否使用类似的东西:
在我的内核头文件中是:
我确实尝试过这些方面的东西。但是 CudaFy 中没有 API 模式用于:
所以我使用 gpu.Cast 函数将 2D 设备数组更改为 1D。
我尝试了下面的代码,但我得到了 CUDA.net 异常:ErrorLaunchFailed
仅供参考:当我尝试使用 CUDA 模拟器时,它在 CopyToDevice 上中止,声称Data 不是主机分配的
emgucv - CudaFy.net 和 OpenCV
我想在 CudaFy.net 项目中使用一些 OpenCV 例程(2D 卷积、区域标记和质心)。
- 这是一个愚蠢的想法吗?
- 从开源示例中用 C# 实现算法会更好吗?
- OpenCV 的一些输入已经在全局 GPU 内存中,您可以将指针传递给 OpenCV GPU 例程并说矩阵已经在 GPU 中吗?
- 有没有这样做的简单例子
我确实看到有人使用 EMGU 和 openCV,但确实遇到了一些问题。有没有人成功做到这一点的例子?[ https://cudafy.codeplex.com/discussions/356649 ]
cuda - 使用 CUDA 压缩“稀疏数据”(CCL:连接组件标签缩减)
我有一个 500 万个 32 位整数列表(实际上是 2048 x 2560 图像),其中 90% 是零。非零单元是完全不连续或以任何方式连续的标签(例如 2049、8195、1334300、34320923、4320932)(它是我们自定义连接组件标签 CCL 算法的输出)。我正在使用 NVIDA Tesla K40,所以如果它需要任何前缀扫描工作,我会喜欢它,它使用 SHUFFLE、BALLOT 或任何更高的 CC 功能。
我不需要一个完整的例子,只是一些建议。
为了说明这一点,这里有一篇由我们的 CCL 算法标记的博客。
其他 blob 将具有不同的唯一标签(例如 13282)。但是所有都将被零包围,并且是椭圆形的。(我们针对椭圆体优化了 CCL,这就是我们不使用这些库的原因)。但一个副作用是 blob 标签不是连续的数字。我们不关心它们的编号顺序,但我们想要一个标记为#1,另一个标记为#2,最后一个标记为#n,其中n 是图像中的斑点数。
我是什么意思标签#1?我的意思是所有 2242 个单元格都应该用 1 替换。所有 13282 个单元格都应该是 #2,等等。
我们 CCL 的最大 blob 数等于 2048x2560。所以我们知道数组的大小。
实际上,罗伯特·克罗维拉(Robert Crovella)在一天前已经对此给出了很好的答案。这并不准确,但我现在看到了如何应用答案。所以我不需要更多的帮助。但他在时间和精力上非常慷慨,并要求我用示例重新编写问题,所以我这样做了。
c# - 从向量计算相交坐标
给定一个向量(或两个点),我如何获得该向量在某个给定区间内相交的离散坐标?
我正在使用它,给定射线(矢量),我可以计算图像中与该射线相交的像素,并将这些像素用作图像的索引。在 3D 的情况下,光线始终位于图像的平面内。
此外,矢量来自另一个坐标系,而不是用于图像索引的坐标系,但这只是坐标系之间的缩放。
我正在寻找 3D 的解决方案,但可以接受 2D。
编辑:间隔是二维空间,所以解决方案是这个二维间隔中的一组点。这将在带有 CUDAfy.NET 的 GPU 上运行
c# - Cudafy 内核无法编译
使用 Cudafy 迈出第一步并尝试编写一个函数,该函数将获取其线程的位置,并在此基础上将一些 int 值保存到数组元素中。我的代码:
所以我无法计算threadY
这里。如果我在计算中使用多个变量,Cudafy 翻译类会引发错误(CudafyModule cm = CudafyTranslator.Cudafy();
引发 Cudafy.CudafyLanguageException)。
我究竟做错了什么?
更新:这是在 GPU 上运行内核的代码:
cudafy.net - Creating register variable arrays with CudaFy
My CUDA kernel would run much faster if instead of a shared memory array (L1) I was able to use thread register memory.
I can do this in CUDA-C with the following declaration:
but in C# when I try:
I get a run-time error about not being able to create arrays in CudaFy. I don't want a global memory array, or a shared memory. (which are most of the discussion issues). I am running with SM35 architecture.
cuda - “未找到 CUDA 目录”
我第一次尝试安装 CUDAfy.NET,但安装后我在 CUDAfy 查看器上单击“运行 CUDA 测试”时收到此错误。我环顾四周,但在这里只能找到这个问题的一个实例:https ://cudafy.codeplex.com/workitem/953 。
当我尝试执行该方法时,我也会遇到同样的错误CudafyTranslator.Cudafy()
这可能是什么原因造成的?我需要指向目录吗?