CUDA学习之一

CUDA 的核心有三个重要抽象概念:线程组层次结构、共享存储器、屏蔽同步(barrier synchronization),可轻松将其作为 C 语言的最小扩展级公开给程序员。

GPU 专用于解决可表示为数据并行计算的问题——在许多数据元素上并行执行的程序,具有极高的计算密度(数学运算与存储器运算的比率)。由于所有数据元素都执行相同的程序,因此对精密流控制的要求不高;由于在许多数据元素上运行,且具有较高的计算密度,因而可通过计算隐藏存储器访问延迟,而不必使用较大的数据缓存。

最新一代的 NVIDIA GPU 基于 Tesla 架构。在 NVIDIA Tesla 架构中,一个线程块最多可以包含 512 个线程。

可以通过调用 _syncthreads()_ 内函数在内核中指定同步点;_syncthreads()_ 起到屏障的作用,块中的所有线程都必须在这里等待处理。

int main()

{

    // Kernel invocation

    dim3 dimBlock(16, 16); //说明每个块里面有16*16个线程

    dim3 dimGrid((N + dimBlock.x – 1) / dimBlock.x,

                   (N + dimBlock.y – 1) / dimBlock.y);  //定义二维块。这种方法经常要用

    matAdd<<<dimGrid, dimBlock>>>(A, B, C);   //内核函数的调用

}

       一个内核可能由多个大小相同的线程块执行,因而线程总数应等于每个块的线程数乘以块的数量。这些块将组织为一个一维或二维线程块网格。

网格的维度由 <<<…>>> 语法的第一个参数指定。网格内的每个块多可由一个一维或二维索引标识,可通过内置的 blockIdx 变量在内核中访问此索引。可以通过内置的 blockDim 变量在内核中访问线程块的维度

 

存储器层次结构:

       CUDA 线程可在执行过程中访问多个存储器空间的数据。每个线程都有一个私有的本地存储器。每个线程块都有一个共享存储器,该存储器对于块内的所有线程都是可见的,并且与块具有相同的生命周期。最终,所有线程都可访问相同的全局存储器。

此外还有两个只读的存储器空间,可由所有线程访问,这两个空间是固定存储器空间和纹理存储器空间。全局、固定和纹理存储器空间经过优化,适于不同的存储器用途。

对于同一个应用程序启动的内核而言,全局、固定和纹理存储器空间都是持久的。

 

主机和设备编程模式如下图所示:

 

CUDA软件栈

CUDA 软件栈包含多个层:设备驱动程序、应用程序编程接口(API)及其运行时、两个较高级别的通用数学库,即 CUFFT CUBLAS

 

支持CUDA的显卡及其计算能力:

 

多处理器数量

计算能力

GeForce GTX 280

30

1.3

GeForce GTX 260

24

1.3

GeForce 9800 GX2

2×16

1.1

GeForce 9800 GTX

16

1.1

GeForce 8800 Ultra, 8800 GTX

16

1.0

GeForce 8800 GT

14

1.1

GeForce 9600 GSO, 8800 GS, 8800M GTX

12

1.1

GeForce 8800 GTS

12

1.0

GeForce 9600 GT, 8800M GTS 

8

1.1

GeForce 9500 GT, 8600 GTS, 8600 GT,

8700M GT, 8600M GT, 8600M GS

4

1.1

GeForce 8500 GT, 8400 GS, 8400M GT,

8400M GS

2

1.1

GeForce 8400M G

1

1.1

Tesla S1070

4×30

1.3

Tesla C1060

30

1.3

Tesla S870

4×16

1.0

Tesla D870

2×16

1.0

Tesla C870

16

1.0

Quadro Plex 1000 Model S4

4×16

1.0

Quadro Plex 1000 Model IV

2×16

1.0

Quadro FX 5600

16

1.0

Quadro FX 3700

14

1.1

Quadro FX 3600M

12

1.1

Quadro FX 4600

12

1.0

Quadro FX 1700, FX 570, NVS 320M, FX 1600M,

FX 570M

4

1.1

Quadro FX 370, NVS 290, NVS 140M, NVS 135M,

FX 360M

2

1.1

Quadro NVS 130M

1

1.1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值