いくつかのCUDA関数には少し問題があります。C++で外部cuda関数テンプレートを宣言する方法
.cu
ファイルを.cu
ファイルと.cpp
ファイルでNvidiaサンプルから分離したいと考えています。カーネルは関数テンプレートです。私はC++ファイルの外部関数として宣言するとエラーになります。
定義は次のようになります。
template <int BLOCK_SIZE> __global__ void
matrixMulCUDA(float *C, float *A, float *B, int wA, int wB)
そして、私はこのようにC++で関数を宣言している:
template <int BLOCK_SIZE> extern void
matrixMulCUDA(float *C, float *A, float *B, int wA, int wB);
を宣言は私にすべてのエラーを与えるものではありませんが、それはこのように使われているとき:
if (block_size == 16)
{
matrixMulCUDA <16> << < grid, threads >> >(d_C, d_A, d_B, dimsA.x, dimsB.x);
}
else
{
matrixMulCUDA <32> << < grid, threads >> >(d_C, d_A, d_B, dimsA.x, dimsB.x);
}
それは私の "構文エラー '<'" 伝えます。
C++で関数を宣言する方法を教えてもらえますか? .cu
ファイルにすべてが格納されていれば、正常に実行されます。
あなたの 'matrixMulCuda'の使い方を' '>> 'としてください。 –
'.cu'ファイルや' .cpp'ファイルには "このように使われました"というコードがありますか? – Angew
@AlgirdasPreidžiusそれはCUDAカーネルの呼び出し構文です(奇妙な空間が挿入されています)。 – Angew