GPU除了用處圖形渲染領域外,還可以用來做大規模的并行運算,這裡我們稱其為GPGPU(General Purpose GPU);GPGPU計算通常采用CPU+GPU異構模式,由CPU負責執行複雜邏輯處理和事務管理等不适合資料并行的計算,由GPU負責計算密集型的大規模并行計算。比如醫學上對圖像進行重建、解大規模方程組等,接下來讓我們進入GPU高性能運算之CUDA的世界吧!
CUDA程式設計:
CUDA程式設計中,習慣稱CPU為Host,GPU為Device。Grid、Block和Thread的關系
Kernel :在GPU上執行的程式,一個Kernel對應一個Grid。
Grid :一組Block,有共享全局記憶體
Block :由互相合作的一組線程組成。一個block中的thread可以彼此同步,快速交換資料,最多可以同時512個線程。
Thread :并行運算的基本機關(輕量級的線程)
其結構如下圖所示:
?
1 2 3 4 5 6 7 8 9 10 |
?
1 2 3 4 5 6 7 | |
?
1 2 3 4 5 | |
?
1 2 3 4 5 6 7 8 9 | |
?
1 2 3 4 5 6 7 8 9 10 | |
?
1 2 | |
?
1 2 3 4 5 |
?
1 2 3 4 5 6 7 |
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | |