次のようにして、2つのfloat4の間にoperator+を作成しました。
__device__ float4 operator+(float4 a, float4 b) {
// ...
}
ただし、さらにuchar4のoperator +が必要な場合は、uchar4で同じことを行うと、次のエラーが発生します。「エラー:オーバーロードされた関数「operator+」の複数のインスタンスに「C」リンケージがあります」
同じ名前で引数が異なる複数の関数を宣言すると、同様のエラーメッセージが表示されます。だから、2つの質問:
- ポリモーフィズム:Cudaで同じ名前と異なる引数を持つ複数の関数を持つことは可能ですか?もしそうなら、なぜこのエラーメッセージが表示されるのですか?
- float4のoperator+:この機能は「cutil_math.h」を含めることですでに含まれているようですが、それを含めると(
#include <cutil_math.h>
)、そのようなファイルやディレクトリがないと文句を言います...特に何かする必要がありますか?注:Python用のcudaであるpycudaを使用しています。
ありがとう!