GT200 顯示晶片是屬於 CUDA compute 1.3(之前 G80 系列是 1.0,而 G84/86/92 則是 1.1)。目前不清楚哪些顯示晶片會是 1.2。根據最新的 programming guide,1.2 新增的功能包括:
- Shared memory 有 atomic 操作功能
- Global memory 的 atomic 操作,增加 64 bits 運算(1.1 只有 32 bits)
- 支援 warp vote
- 每個 MP 暫存器數目加倍至 16,384 個
- 每個 MP 同時可以進行的 warp 數目增加到 32 個(原為 24 個)
- 每個 MP 同時可以進行的 thread 數目增加到 1024 個(原為 768 個)
- 增加 double precision 的支援
Warp vote 則是用來減少同一個 warp 中,因為不同的分支而造成 serialization 的問題。這是因為在 CUDA 中,同一個 warp 的各個 thread 如果有不同的條件分支結果,就會需要 serialize,造成速度上變慢。利用 warp vote,就可以強迫一個 warp 只有一種條件分支結果,以避免 serialization 出現。
另一個值得注意的就是 GT200 的 double precision 運算。根據 Programming Guide 的資料,double precision 的四則運算和平方根,完全符合 IEEE 754 的規範(single precision 的除法和平方根無法符合 754 規範的精確度,因為它是用乘上倒數的方式做的)。這對一些科學計算的應用會比較方便。Double precision 的加法、乘法、和 FMA 也支援 IEEE 754 規定的各種不同的 rounding mode(single precision 只支援 round-to-zero 和 round-to-nearest)。
沒有留言:
張貼留言