Cからcudaのヘッダにアクセスする方法

__global__
void func(){}

のような関数がある場合、その関数はソースファイルに隠蔽しなければならない。すなわち

//func.cuh
//cudaのヘッダ
void func();
//func.cu
//cudaのソース
__global__
void funcDevice(){
  //CudaCode
}

void func(){
  //...
  cudaDevice<<<1,1>>>();
  //...
}
//func.cpp
//cudaのヘッダ
#include "func.cuh"
int main(){
  //...
  func();
  //...
  return 0;
}

みたいな感じにプログラムを組めば大丈夫。要はcuhでCudaのヘッダを書いてはいけない。書く場合はCコードからincludeしない。ということらしい。
知らなかったー。