gpt4 book ai didi

c++ - 在 CUDA 项目中使用外部库类

转载 作者:太空狗 更新时间:2023-10-29 23:07:04 24 4
gpt4 key购买 nike

我正在尝试使用 CUDA 增强一个小型 C++ 项目。我的项目正在使用自定义库的类和函数,例如 Matrix3d、Vector3d、Plane2d 等。它们主要是几何对象。

当我尝试在设备(__host__ __device__ 函数或内核)中使用我的代码时,所有库函数/对象都被视为主机代码,我收到多个警告和错误,例如 错误:标识符“Plane3d::~Plane3d”在设备代码中未定义

有没有办法在设备上也使用我的图书馆?它是如何完成的?我没有 CUDA 和 C++ 的经验(我只使用 CUDA 和没有类的简单 C 代码)所以我不太了解这个策略。

有没有办法避免更改库源代码?可以更改库的代码,但如果我能避免它会更好。

非常感谢。

最佳答案

在 CUDA 中使用 C++ 类没有特别的问题。对象模型与标准 C++ 仅略有不同。

任何结构或类数据成员都会自动定义在类或结构实例化的任何内存空间(主机或设备)中。不是自动的是类和结构中函数成员和运算符的代码生成。程序员必须明确定义和编译对象将在其中实例化的任何内存空间。后一个要求意味着您必须同时拥有 __device____host__ 您调用的每个函数的定义对象内。这包括构造函数和析构函数,后者是您在问题中显示的错误。

关于c++ - 在 CUDA 项目中使用外部库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13706757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com