2
我想知道.cu
編譯單元中隱含包含哪些標題。舉例來說,我們需要一些基本的例子:默認情況下,.cu源文件中包含哪些標題?
#include <iostream>
__global__ void kernel(int a, int b, int *c)
{
*c = a * b;
}
int main()
{
int c, *dev_c;
cudaMalloc((void **) &dev_c, sizeof(*dev_c));
kernel<<<1,1>>>(5, 3, dev_c);
cudaMemcpy(&c, dev_c, sizeof(*dev_c), cudaMemcpyDeviceToHost);
cudaFree(dev_c);
std::cout << c << std::endl;
}
根據C++標準的所有功能之前,必須先自己使用(同樣的,因爲C99 C)宣佈,所以我想,這些CUDA頭都包含「背後的李宗紅」。
這個問題是相關的,因爲我想在CUDA API調用的Visual C++中獲得IntelliSense,我還沒有發現任何「官方」參考。
有可能'cuda_runtime.h'是下面這些的「頂部標題」嗎?我的意思是,如果'#include'指令的順序與上述相同,那麼假設這可能是有道理的。在'/ usr/include/stdc-predef.h'的情況下,我認爲這是一種不同的故事,自從4.8版以後,它被添加到GCC中。 –
不幸的是,nvcc不支持'-H'標誌,否則我們可能會打印[包含文件的層次](http://stackoverflow.com/a/6685693/678093)。是的,我認爲來自'/ usr/include /'的頭文件來自GCC。 –
謝謝,我認爲第二個列表可能會因爲有條件的'#include'指令而有所不同,具體取決於各種設置。例如我的'host_config.h'副本檢查是否定義了'__CUDACC__'宏。如果沒有,那麼它跳過一些部分。有可能比我想象的要多。 –