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 | |