如何在 c++ 中调用另一个 mex (MATLAB) 对象文件中的一个 cuda 对象文件的函数?

How do I call one cuda object file's function inside other mex (MATLAB) object file in c++?

本文关键字:文件 对象 一个 函数 cuda MATLAB c++ 调用 mex 另一个      更新时间:2023-10-16

我正在编写 mex 代码和 cuda 代码。我想知道每个代码有两个目标文件并从 mex 文件调用 cuda 内核,因为我通过组合他们的目标文件来获得可执行文件。因此,我需要知道(如果可能的话)如何从另一个对象文件调用一个对象文件的函数。使用单独的编译器编译 mex 和 cuda 并以这种方式组合它们是否有效?

这是完全可能的。 我前一阵子玩过这个。 目前支持的方法使用 MATLAB 并行计算工具箱。 这里有说明。

扩展一点,编译的 mex 文件实际上只是带有已编译 mex 网关的动态库。 只要您有网关,适当地链接您的文件,并为生成的编译文件(如 mexa64、mexmaci64 等)提供适当的 mex 扩展名,该文件就可以工作。

需要注意的是,您不需要使用 MATLAB 中的 mex 函数来编译文件。 这允许一些不支持的方式,你可以在 MATLAB 之外进行编译。 如果您没有并行工具箱,如果您需要对正在发生的事情进行更微妙的控制,或者更喜欢在工作流程中使用 make,这可能很有用。有关如何开始此操作的说明,请参阅此处。