私はCUDAで小さなC++プロジェクトを強化しようとしています。私のプロジェクトでは、たとえばカスタムライブラリのクラスや関数Matrix3d, Vector3d, Plane2d
などを使用しています。これらはほとんどが幾何学的なオブジェクトです。
デバイス(__host__ __device__
関数またはカーネル)でコードを使用しようとすると、すべてのライブラリ関数/オブジェクトがホストコードと見なされ、たとえば複数の警告とエラーが発生しますerror: identifier "Plane3d::~Plane3d" is undefined in device code
デバイスでライブラリを使用する方法はありますか?それはどのように行われますか?私はCUDAとC++の経験がないので(クラスのない単純なCコードでのみCUDAを使用しました)、戦略をうまく理解できません。
ライブラリのソースコードを変更しないようにする方法はありますか?ライブラリのコードを変更することは可能ですが、それを避けることができればもっと良いでしょう。
どうもありがとう。