いつもご覧いただきありがとうございます。
現在C++とCUDAでプログラムを書いているのですがテンプレートを利用した正しい書き方が分らずに悩んでいます。
環境は
- Visual Studio 2010
- CUDA 4.0
です。
CUDAのカーネル関数をC++のテンプレート関数と連携し定義するにはどうすればいいのしょうか?
以下のようにソースを記述すると
カーネル関数を呼び出す行に対して「error C2059: 構文エラー: '<'」
と表示され、コンパイルエラーとなります。
lang
1/* 2 * @file main.cpp 3 */ 4#include "header1.h" 5 6int main() 7{ 8 HostMethod(); 9 return 0; 10}
lang
1/* 2 * @file "header1.h" 3 */ 4#ifndef _HEADER1_H_ 5#define _HEADER1_H_ 6 7// カーネル関数 8template<typename Type_1, typename Type_2> 9__global__ void kernel_Method(Type_1 *src, Type_2 *dst) 10{ 11 // GPU処理 12} 13 14// カーネルを呼び出すホスト関数 15void HostMethod() 16{ 17 // ..... 18 // カーネル関数の呼び出し 19 kernel_Method<<<dim3(1), dim3(1)>>>(src, dst); 20} 21 22#endif
CUDAのインクルードパスやライブラリパス、プロジェクト設定に関してはmain.cuをエントリポイントとしたサンプルのプログラムで動くことを確認しているため、環境の面では問題ないと思われます。
どうぞよろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。