【问题标题】:User-defined CUDA kernels in lua/c++lua/c++ 中用户定义的 CUDA 内核
【发布时间】:2015-12-05 21:24:40
【问题描述】:

我希望允许用户定义要在 CUDA 内核中使用(或被 CUDA 内核调用)的函数。

我不想向用户公开 CUDA API。这些函数应该看起来像典型的 c++/lua 函数。

我检查了 pyCUDA,但它似乎只是 .cu 代码的包装器。

我宁愿有一个 .lua 或 .cc 文件并使用函数指针。 远程可以吗?

【问题讨论】:

  • 问:“用户定义函数”到底是什么意思?你能举个例子吗?问:如果您不提供自己的 API,并且使用 CUDA,那么为什么不想“向用户公开 CUDA API”?你能详细说明一下吗?
  • @paulsm4 该应用程序可以在 GPU 或 CPU 上运行。 CUDA 只是变体之一。定义的函数也应该能够在 CPU 上运行。
  • 您还没有解释“用户定义的函数”是什么意思?他们是否会用 Lua 编写(例如),您的“库”是否会为他们提供您编写的功能?可以在 CPU 或 GPU 上执行的功能?还是您希望他们能够编写原始 Lua 代码并以某种方式在 CPU 或 GPU 上执行?
  • 用户定义的函数将由库执行。这些函数可以在 lua(并通过 LuaJIT 导入)或 c++ 中定义。
  • 有关在符合 c++ 的文本文件中使用用户提供的函数的示例,请查看here

标签: c++ lua cuda gpu


【解决方案1】:

不,这是不可能的。

CUDA 内核,by design, execute on the GPU。它们被编译成 (NVIDIA) GPU 专用机器语言,并在与 C++ 函数在其中运行的任何东西完全不同的执行环境中执行,更不用说 Lua。他们不能简单地调用任意代码。

您可能做的最多的事情就是编写一个编译器,将 C++/Lua 编译成一个 CUDA 库。但这对任何一种语言来说都是一项艰巨的任务。

【讨论】:

  • 我是这么认为的,但想确定一下。谢谢。
  • 我不知道 CUDA 是什么,如果我看起来像个白痴,请原谅我的愚蠢,但是有没有像 loadstring 这样的函数可以解析 Lua 函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 2021-02-07
  • 2021-07-14
  • 1970-01-01
  • 2014-04-06
  • 1970-01-01
相关资源
最近更新 更多