cutil.h ヘッダーが CUDA サンプルから削除されたため、helper_cuda.h、helper_functions.h などの新しいヘッダーがいくつか導入されました。
私が使用する主なキーワードの 1 つは CUDA_CHECK_ERROR で、これは checkCudaErrors に置き換えられたと思います。
私のコードのほとんどで、マクロはコンパイルされ、うまく機能します。ただし、check(..)という名前の関数を持つクラスで使用すると、checkCudaErrors関数でコンパイルエラーが発生します。
次に例を示します。
#include <stdio.h>
#include <cuda_runtime.h>
#include <helper_cuda.h>
#include <helper_functions.h>
template<typename T>
class Trivial {
public:
void check()
{
}
void initialize()
{
checkCudaErrors(cudaMalloc(NULL, 1));
}
T val;
};
int main(int argc, char **argv)
{
Trivial<int> tt;
tt.initialize();
return 0;
}
コンパイルの結果: (GCC 4.5 でコンパイルした場合も同じエラーが表示されます!)
1>------ Build started: Project: ZERO_CHECK, Configuration: Release x64 ------
2>------ Build started: Project: massivecc, Configuration: Release x64 ------
2> trivial_main.cpp
2>..\src\trivial_main.cpp(19): error C2660: 'Trivial<T>::check' : function does not take 4 arguments
2> with
2> [
2> T=int
2> ]
2> ..\src\trivial_main.cpp(18) : while compiling class template member function 'void Trivial<T>::initialize(void)'
2> with
2> [
2> T=int
2> ]
2> ..\src\trivial_main.cpp(29) : see reference to class template instantiation 'Trivial<T>' being compiled
2> with
2> [
2> T=int
2> ]
3>------ Skipped Build: Project: ALL_BUILD, Configuration: Release x64 ------
3>Project not selected to build for this solution configuration
========== Build: 1 succeeded, 1 failed, 1 up-to-date, 1 skipped ==========
テンプレート パラメータを削除すると、同じエラーが発生します。