我可以从c ++调用用cupy代码编写的cuda代码吗?

Posted

技术标签:

【中文标题】我可以从c ++调用用cupy代码编写的cuda代码吗?【英文标题】:Can I call cuda code written in cupy code from c++? 【发布时间】:2019-08-16 03:21:07 【问题描述】:

如果我有一个简单的采样 3D 点的形式

s = [[x1, y1, z1], [x2, y2, z2],[x3, y3, z3],[x4, y4, z4],.....]

在cupy中实现的体素函数中,我可以从c ++代码中调用该函数吗?我们有 c++ 代码调用 tensorflow 图并在汽车中执行。我可以将我的 cupy 代码编译成 c++ 二进制文件并从 c++ 代码中调用吗?

【问题讨论】:

【参考方案1】:

我不熟悉 CuPy,但可以看看 Python C API (https://docs.python.org/3/c-api/)。 这允许您在 C 和 C++ 中运行 Python 函数。

这是一个示例,在 pythonfile.py 中运行一个名为 functionname 的函数(尚未对此进行测试,但应该没问题)。

PyObject* pyModuleStr = PyString_FromString((char*)"pythonfile");
PyObject* pyModule = PyImport_Import(pyModuleStr);
PyObject* pyFunction = PyObject_GetAttrString(pyModule,(char*)"functionname");
PyObject_CallObject(pyFunction);

也可以提取函数的返回值,并添加参数。

希望这会有所帮助!

8)

编辑: 这是一个 *** 帖子,可能会有所帮助 (Calling a python method from C/C++, and extracting its return value)。

【讨论】:

以上是关于我可以从c ++调用用cupy代码编写的cuda代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

如果没有可用的 c++ 编译器,C 语言可以调用用 c++ 编写的 DLL 吗?

可以直接从 C 代码调用的 ESQL/C 函数?

从Java调用C#代码?

从本地C ++代码调用C ++ CX

C语言编写精确到毫秒的时间函数

如何从 C# 调用 CUDA