11
在Cuda編程指南中,我似乎找不到這個簡單問題的答案:編譯內核時使用nvcc,什麼大小的整數由short,int,long和漫長的?它取決於我的主機架構,所以我應該使用int16_t,int32_t和int64_t,還是始終是固定大小?編程cuda內核時整數大小
在Cuda編程指南中,我似乎找不到這個簡單問題的答案:編譯內核時使用nvcc,什麼大小的整數由short,int,long和漫長的?它取決於我的主機架構,所以我應該使用int16_t,int32_t和int64_t,還是始終是固定大小?編程cuda內核時整數大小
它取決於主機編譯器。具體而言,nvcc
對這些類型的定義將與主機編譯器的表示形式一致。
在實踐中,char
,short
,和int
數據類型具有CUDA支撐件(8,16和32位分別地)所有平臺上的預測的大小。然而,long
的大小因平臺而異。
您確定這是對的嗎?設備代碼需要轉換爲ptx命令。如果這個過程是主機架構特定的,那將會很奇怪。我查看了CUDA文檔,但無法找到任何內容。 – nsanders 2010-10-15 01:43:34
是的,設備數據類型必須與主機類型匹配,否則將無法預測要向主機執行多少memcpy操作。 – Edric 2010-10-15 07:20:04
謝謝。這正是我需要的。它確實有道理,因爲如果我負責匹配我的主機代碼和我的內核代碼之間的類型,那將是一場噩夢。 – 2010-10-15 16:26:03