问题标签 [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# - 使用 Cudafy 时避免 nvcc 编译
我正在使用 Cudafy,并希望我的用户能够在不安装 CUDA SDK 的情况下使用 CUDA,但他们可以使用 Cudafy DLL。为避免在 中自动完成 nvcc 编译CudafyTranslator.Cudafy(types)
,我使用以下方法:
types
s的数组在哪里System.Type
。
问题在第三行,TryDeserialize
总是返回null
。我已检查该文件是否存在且modulePath
正确且该文件是否存在。有人可以对此事有所了解吗?
如果这并不意味着重新编写我的 Cudafy 模块,我已经准备好改变我的方法。
c# - 来自.net StopWatch 的时间不一致
我有一个使用 GPU (NVIDA GTX980) 进行图像处理的 C# & .NET 应用程序。有 4 个阶段,我将 CPU 与 GPU 同步(时间不重叠)以进行计时。但数字不加起来。
Launch() 将异步启动 GPU 内核)但 synchronize() 将等到它完成。
- 总计: tThreshold:4.2827ms
- 直方图:3.7714ms
- 直方图总和:0.1065ms
- tIQR:3.8603ms
- tThresholdOnly: 0.4126ms
到底是怎么回事?
c# - Cudafy.NET - CUDA.NET 异常 ErrorInvalidValue
我正在使用 Cudafy.NET 在 GPU 上执行图像处理。我已经设置了我的类以及第一个函数(在 CPU 上运行的 PerformBarrelCorrection)来设置多个线程来执行图像中每个像素的逻辑计算。
但是,每次我在 GPU 上启动该功能时,它都会引发异常:
Cudafy.NET.dll 中出现“Cudafy.Host.CudafyHostException”类型的异常,但未在用户代码中处理
附加信息:CUDA.NET 异常:ErrorInvalidValue。
这是整个类的注释,以显示引发异常的行。
有人知道这是什么一回事吗??提前致谢。
c# - 在 CPU 上工作时,在 Cudafy 中使用算法不起作用?
我有一个工作算法来对图像执行 2D 透视变换。
算法如下:
这工作正常,输出正是我想要的。但是我做了一个非常微妙的改变,让它使用 Cudafy 在 GPU 上运行:
我返回的 byte[] 都是 0。我也尝试直接将值(255)应用于 dst_bmp 中的所有字节,它似乎只对一行像素执行操作(1280 字节,因为第一行是 320 像素,每个像素有 4 个字节)。
有任何想法吗?这真气人!
c# - GPGPU.TotalMemory 显示出极其巨大的价值
我有一张 4GB 和一张 12GB 的 CUDA gfx 卡。在我的应用程序中,我使用 CUDAfy.NET,当调用该GPGPU.TotalMemory
属性时,它显示了一个非常大的值(绝对不正确)。与 相同FreeMemory
。如何解决这个问题?
对于 4GB 卡,TotalMemory 显示 18446744072635809792 字节,FreeMemory 显示 18446744072628600832 字节。
c# - 无法在目标设备上运行 CUDAfy.NET 应用程序
我在 .NET 4.0 CP 框架上有一个现有的 WinForms 应用程序,我希望它在 CUDA 设备上进行计算。为此,我决定在 C/C++ Toolkit 周围使用CUDAfy.NET包装器,因为它(据我所知)是唯一一个最新的 CUDA SDK。开发在我的机器上没有任何重大问题,但在部署到另一台设备时遇到了麻烦。
更具体地说,当我在 VS 中构建项目然后在我的机器上运行它时,它运行良好。但奇怪的是,它在初始化 CUDAfy 模块时运行 nvcc.exe,这是 CUDA SDK 的一部分,在那里不需要。当我尝试在任何目标机器上运行二进制文件时,它会抛出这个异常:
在路径中找不到编译器 cl.exe。
这是与缺少 C++ 编译器的 VS 工具相关的错误,它不应该出现在目标设备上。现在最奇怪的事情来了;当我构建 CUDAfy.NET 附带的示例项目并尝试在目标设备上运行它时,它会引发相同的异常。
目标机器没有任何问题,根据 CUDAfy.NET 测试应用程序Cudafy Viewer,它兼容并且具有 CUDA 功能。此外,我已经在几种不同的设备上对其进行了测试,结果总是相同。我已经追踪了异常的起源,正如我在初始化 CUDAfy.NET 时指出的那样:
根据CUDAfy.NET 用户手册,它应该在满足以下要求的设备上运行良好:
- Windows 64 位
- .NET 4.0
- 具有计算能力 2.0 或更高版本的 NVIDIA GPU
- 最新的 NVIDIA 驱动程序
- CURAND、CUSPARSE、CUFFT 和 CUBLAS dll(如果使用这些数学库)
- 预编译的 CUDAfy 模块
所有这些都满足了,但它仍然没有运行。这给我留下了一个问题,我被困在那里。
一种可能性是它是由错误编译的代码导致的。根据手册,我引用,“您通常不会在部署情况下使用 .NET 代码,因为这需要完整的 CUDA SDK 和 Visual Studio。CUDAfy 模块可以在 .cdfy 文件中松散或嵌入到您的应用程序程序集中( .exe 或 .dll)通过使用 cudaycl 命令行工具。” . 这应该是自动完成的,尽管如此我已经尝试使用 cudaycl,但不幸的是没有任何改进。但由于初始化 CUDAfy 时发生异常,我认为问题的根源在其他地方。
还有什么可能导致它是我为特定架构(例如 CUDA 2.0)构建二进制文件,然后将其部署到另一个(例如 CUDA 3.0)。CUDA Toolkit Documentation中关于 nvcc 编译器的部分中提到了一些关于它的内容: “二进制代码是特定于体系结构的。使用指定目标体系结构的编译器选项 -code 生成 cubin 对象:例如,使用 -code=sm_35 进行编译为计算能力为 3.5 的设备生成二进制代码。” .
无论如何,我现在无法让它工作。如果您有任何帮助和建议,我将不胜感激。顺便说一句,我使用的是最新的 CUDAfy.NET v1.29 和 CUDA Toolkit 7.0(CUDAfy.NET 还不支持最新的)。
c# - CUDAfy CopyFromDevice 比 CopyToDevice 慢几个数量级
我正在使用小型重力模拟测试 CUDAfy,在对代码运行分析器后,我发现大部分时间都花在了 GPU 的 CopyFromDevice 方法上。这是代码:
澄清一下,this.myBodies 是一个包含 10,000 个结构的数组,如下所示:
Vector 是一个带有两个浮点数 X 和 Y 的结构体。
根据我的分析器,这三行的平均时间是 0.092、0.192 和 222.873 毫秒。这些时间是在带有 NVIDIA NVS 310 的 Windows 7 上进行的。
有没有办法提高 CopyFromDevice() 方法的时间?
谢谢
vb.net - 有没有人曾经在 VB.NET 中成功使用过 CUDAfy?
我正在尝试使用 VS2013 在 VB.NET 中使用 CUDAFy 1.29。
我正在尝试从 CUDAFy 翻译 C# 的示例,我遇到了两种类型的错误,如下所述:
我的变量
我的代码:
结束子
将在 CUDA 上运行的函数 ADICIONA
LOADER:尝试识别卡和CUDA(成功运行):
问题:
问题 1:如果我只使用dim Modulo 作为 CudafyModule = CudafyTranslator.Cudafy()我收到以下错误:不支持检查语句。有点奇怪!Cudafy 的所有文档都显示了这一行!
问题 2:因此,我尝试检查写入模块 (.CDFY) 是否存在,如果不存在,则调用 Serialize() 函数。问题是该函数在我的文件夹中创建了一个名为STRING.CDFY的文件,但不是ADICIONA.CDFY也不是ADD_LONG_LOOP.CDFY,这是正确的。由于我想避免在每次运行此代码时进行编译,如何正确地使 CUDAFy 编写它?
问题 3:当 VS 运行时,一切正常,直到调用 ADICIONA (MyGPU.Launch)!VS 停止执行,并显示一条消息“无法在模块中找到函数 'ADICIONA' ”。
有趣的是:
1- 创建临时文件(.CU、.PTX)和 .CDFY 文件。它证明 NVCC 编译器运行良好并创建了 CUDA 模块。那么,为什么代码没有找到函数 ADICIONA?
2- 用 C# 编写的所有示例都 100% 在这里运行。并且从 C# 和 VB 的转换似乎没问题(我曾使用 TELERIK 来做)。我不认为问题可能与此有关,但我可能是错的。
3-问题与 NVCC 编译器或对 VB.NET 的某些引用无关,因为代码可以编译。
我试图用 CODEPLEX 写一个答案。根本没有答案...我试图在 Internet 上查看很多示例,但所有这些示例都是为 CUDAFy C# 创建的,并且没有一个使用版本 1.29 和 CUDA 7.5。
另外,我想了解为什么基本函数 (CudafyTranslator.Cudafy()) 在 VB 中出错,但在 C# 中没有。
那么,这里有没有人使用 VB.NET 成功创建了 CUDAFy 代码?
非常感谢您的帮助。
c# - 使用 GPU 添加数组元素的所有组合
我是 CUDAfy 编程的新手,在计算数组中所有元素组合的总和时遇到了麻烦。我似乎想不出适合移植到 GPU 上的算法。非常感谢任何帮助或任何类型的算法。
序列版代码如下: