[英]Double precision floating point in CUDA
CUDA是否支持雙精度浮點數?
另外,同樣的原因是什么?
如果您的GPU具有計算能力1.3,那么您可以進行雙精度。 您應該知道,1.3硬件每個MP只有一個雙精度FP單元,必須由該MP上的所有線程共享,而有8個單精度FPU,因此每個活動線程都有自己的單精度FPU。 換句話說,您可能會發現雙精度性能比單精度高8倍。
作為提示:
如果要使用雙精度,則必須將GPU架構設置為sm_13
(如果您的GPU支持它)。
否則它仍然會將所有雙打轉換為浮點數並僅發出警告(如faya的帖子中所示)。 (如果你因為這個問題得到錯誤,非常煩人:-))
標志是: -arch=sm_13
根據Paul R的評論,Compute Capability 2.0設備(又名Fermi)具有更高的雙精度支持,性能僅為單精度的一半。
這篇Fermi白皮書詳細介紹了新設備的雙重性能。
正如其他人所說,舊的CUDA卡不支持double
類型。 但是如果你想要比你的舊GPU提供的更精確,你可以使用類似於雙重雙重技術的float-float解決方案。 有關該技術的更多信息,請閱讀
當然,在現代GPU上,你也可以使用雙倍來實現大於兩倍的精度。 在PowerPC上, double-double
也用於long double
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.