2013-08-27 27 views
3

我想我有相關的調用堆棧一對夫婦的問題,但我的主要的一個是,爲什麼只能在計算能力爲2.0+的CUDA GPU設備上設置堆棧大小?

  • 「爲什麼你可以設置堆棧大小與只計算能力2.0+設備?」

  • 此外,爲什麼我只能查看調用堆棧使用nvidia Nsight的計算能力2.0及以上的設備只? 有什麼特別的2.0+設備可以讓他們做到這一點,但不是1.x設備?

我知道這是一個非常寬泛的問題,但任何洞察到上述問題的答案或對一般CUDA設備堆棧通話甚至信息將高度讚賞。

回答

5

較舊的1.x設備無法實現堆棧,所以它沒有意義。 2.0+設備能夠實現堆棧的至少一個原因是因爲它們具有將泛型指針作爲操作數的指令。這意味着編譯器不需要跟蹤每個指針在流過程序時的類型(共享,本地或全局) - 硬件只需要知道它。這使得可以實現單獨的編譯(使用堆棧和ABI),因爲編譯器不需要查看整個程序就可以跟蹤每個指針的類型。

+0

有洞察力!爲什麼你想能夠改變堆棧的大小?是否可以在堆棧上分配更多本地變量和函數調用?這個空間取自哪裏? – SaiyanGirl

+0

堆棧的大小控制函數調用和遞歸的深度。堆棧越大,遞歸越深。 –

相關問題