【问题标题】:Is there a way to program I OpenCL without 3rd party plugins? C#有没有办法在没有 3rd 方插件的情况下对我的 OpenCL 进行编程? C#
【发布时间】: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


【解决方案1】:

经过很长时间,我终于想出了解决我的问题的方法。我创建了与(非托管)OpenCL.dll 的绑定。然后它使用一些技巧来通过使用属性在 GPU 上运行代码。我能描述它的最好方式就像 Cudafy,但它完全不同。

感谢那些回答我问题的人。

【讨论】:

    猜你喜欢
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多