2010-10-14 79 views
11

在Cuda編程指南中,我似乎找不到這個簡單問題的答案:編譯內核時使用nvcc,什麼大小的整數由short,int,long和漫長的?它取決於我的主機架構,所以我應該使用int16_t,int32_t和int64_t,還是始終是固定大小?編程cuda內核時整數大小

回答

10

它取決於主機編譯器。具體而言,nvcc對這些類型的定義將與主機編譯器的表示形式一致。

在實踐中,charshort,和int數據類型具有CUDA支撐件(8,16和32位分別地)所有平臺上的預測的大小。然而,long的大小因平臺而異。

+1

您確定這是對的嗎?設備代碼需要轉換爲ptx命令。如果這個過程是主機架構特定的,那將會很奇怪。我查看了CUDA文檔,但無法找到任何內容。 – nsanders 2010-10-15 01:43:34

+2

是的,設備數據類型必須與主機類型匹配,否則將無法預測要向主機執行多少memcpy操作。 – Edric 2010-10-15 07:20:04

+0

謝謝。這正是我需要的。它確實有道理,因爲如果我負責匹配我的主機代碼和我的內核代碼之間的類型,那將是一場噩夢。 – 2010-10-15 16:26:03