CUDA執行模式
為了管理執行各種不同程式的數百個執行緒,多處理器利用了一種稱為SIMT(單指令、多執行緒)的新架構。多處理器會將各執行緒對映到一個標量處理器核心,各標量執行緒使用自己的指令地址和暫存器狀態獨立執行。多處理器SIMT單元以warp為單位來建立、管理、排程和執行執行緒,構成warp的各個執行緒在同一個程式地址一起啟動,嚴格序列。
為一個多處理器指定了一個或多個要執行的執行緒塊時,它會將其分成warp塊,並由SIMT單元進行排程。將塊分割為warp的方法總是相同的,每個warp都包含連續的執行緒,遞增執行緒索引,第一個warp中包含全域性執行緒過索引0-31。每發出一條指令時,SIMT單元都會選擇一個已準備好執行的warp塊,並將指令傳送到該warp塊的活動執行緒。Warp塊每次執行一條通用指令,因此在warp塊的全部32個執行緒執行同一條路徑時,可達到最高效率。如果一個warp塊的執行緒通過獨立於資料的條件分支而分散,warp塊將連續執行所使用的各分支路徑,而禁用未在此路徑上的執行緒,完成所有路徑時,執行緒重新匯聚到同一執行路徑下,其執行時間為各時間總和。分支僅在warp塊內出現,不同的warp塊總是獨立執行的--無論它們執行的是通用的程式碼路徑還是彼此無關的程式碼路徑。
SIMT架構類似於SIMD(單指令流多資料流)向量組織方法,共同之處是使用單指令來控制多個處理元素。一項主要差別在於SIMD向量組織方法會向軟體公開 SIMD寬度,而SIMT指令指定單一執行緒的執行和分支行為。與SIMD向量機不同,SIMT允許程式設計師為獨立、標量執行緒編寫執行緒級的並行程式碼,還允許為協同執行緒編寫資料並行程式碼。為了確保正確性,程式設計師可忽略SIMT行為,但通過維護很少需要使一個warp塊內的執行緒分支的程式碼,即可實現顯著的效能提升。
另外一個重要不同是SIMD中的向量中的元素相互之間可以自由通訊,因為它們存在於相同的地址空間(例如,都在CPU的同一暫存器中),而SIMT中的每個執行緒的暫存器都是私有的,執行緒之間只能通過shared memory和同步機制進行通訊。
在SIMT程式設計模型中如果需要控制單個執行緒的行為,必須使用分支,這會大大的降低效率。例如,如果一個warp中需要進行分支(即warp內的執行緒執行的指令指標指向不同的位置),效能將急劇的下降。如果一個warp內需要執行N個分支,那麼SM就需要把每一個分支的指令發射到每一個SP上,再由SP根據執行緒的邏輯決定需不需要執行。這是一個序列過程,因此SIMT完成分支的時間是多個分支時間之和。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23057064/viewspace-628302/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡述CUDA執行緒及求CUDA中執行緒索引執行緒索引
- CUDA執行緒層次執行緒
- Ubuntu上使用QT creator執行cuda程式UbuntuQT
- CUDA程式設計模式程式設計設計模式
- PHP執行模式PHP模式
- PHP 執行模式PHP模式
- 執行時報錯RuntimeError: expected device cpu but got device cuda:0ErrordevGo
- CUDA優化之執行配置和暫存器優化優化
- Spark學習(一)——執行模式與執行流程Spark模式
- 認識PHP執行模式PHP模式
- 多執行緒Reactor模式執行緒React模式
- Jboss 後臺執行模式模式
- ros 多執行緒模式ROS執行緒模式
- QTP測試指令碼的維護 - 使用Update執行模式和Maintenance執行模式QT指令碼模式AINaN
- 淺談tomcat執行模式Tomcat模式
- PHP五大執行模式PHP模式
- Seata的AT模式的執行流程模式
- 24. 一個普通main方法的執行,是單執行緒模式還是多執行緒模式?為什麼?AI執行緒模式
- ShardingSphere Mode 模式新起航:執行模式詳解模式
- 設計模式之單例模式(執行緒安全)設計模式單例執行緒
- standalone執行模式下 應用模式作業部署模式
- Future --- 多執行緒設計模式執行緒設計模式
- 執行緒安全的單例模式執行緒單例模式
- EventBus四種執行緒交付模式執行緒模式
- tomcat執行模式(bio,aio,apr)Tomcat模式AI
- linux init六種執行模式Linux模式
- java 多執行緒 master worker模式Java執行緒AST模式
- 多執行緒設計模式之Worker Thread模式執行緒設計模式thread
- 第三篇:CUDA 標準程式設計模式程式設計設計模式
- 管道模式執行全域性中介軟體模式
- 使程式執行更高效——原型模式原型模式
- PHP-FPM 的三種執行模式PHP模式
- JAVA_多執行緒_單例模式Java執行緒單例模式
- 【Mongo】shell命令列模式執行mongo命令Go命令列模式
- Java多執行緒設計模式(1)Java執行緒設計模式
- Windows下IIS以FastCGI模式執行PHPWindowsAST模式PHP
- Windows下Apache以FastCGI模式執行PHPWindowsApacheAST模式PHP
- COM元件中的執行緒模式 (轉)元件執行緒模式