【发布时间】:2017-12-26 19:23:58
【问题描述】:
我意识到如何在 GPU 上运行 C# 是一个常见问题,但我的问题有点不同。有没有办法在没有 3rd 方框架(例如 Cudafy)的情况下做到这一点。我不想使用插件,因为我正在制作一个程序,我打算 100% 成为我自己的代码(个人抱负)并且觉得如果我这样做我不会学到很多东西。
我是否只需要创建一个内核并编译它并从 c# (process.start()) 调用它,或者有更好的方法吗?
如何制作内核?我是 GPGPU 的初学者,很抱歉我的无知。但是,我是一个非常高级的 c# 程序员。
【问题讨论】:
-
如果没有 C# 绑定或不使用 C++ dll,就不能在 C# 中使用 opencl。你需要以某种方式绑定 opencl.lib 和一些头文件,但你不能在 C# 中这样做。 Khronos 的站点仅提供 C++ 标头。然后从 C++ 开始。反正你以后会需要的。为什么?例如,要将内存区域映射到 GPU 复制引擎,您需要将源缓冲区对齐到 4096 字节倍数。 C# 没有这个,但在 C++ 中很容易完成。另一个示例可能是 C# 移动所有缓冲区,除非您固定它们。如果不使用 C++ 创建它们,gpu-cpu 通信性能会受到影响。
-
我认为你可以使用 hlsl 来做到这一点,而不是 opengl。
标签: c# kernel opencl gpgpu gpu