CUDA学习--4

整理自《基于CUDA的并行程序设计》 刘金硕、邓娟、周峥、曾秋梅等

1.  多核CPU和纵核GPU组合形成的异构计算系统不仅可以得到传统的技术积累,还有利于推动高性能计算技术的创新。

CPU作为主处理器(host),主要执行控制逻辑和事务处理等串行计算;而GPU作为协处理器(co-processor)或者设备(device),主要执行计算密度高、逻辑分之简单的大规模数据并行计算。CPU和GPU通过PCI-E总线相连,同时拥有各自的存储空间,分别为主存和显存。

2.  如果一个计算任务可以被划分为多个相互独立或者彼此之间依赖性很小的子任务,同时处理这些子任务不需要复杂的控制流,则该任务适合由GPU来进行并行处理。

3.  nvcc命令用来编译CUDA程序,它会自动调用gcc编译器来编译C语言代码,NVIDIA PTX编译器来编译CUDA代码。

4.  已声明为__device__的函数,只能从其他__device__函数或者从__global__函数中调用它们。


《GPU高性能运算之CUDA》张舒 褚艳利 

1、一个kernel函数中存在两个层次的并行,即Grid中的block间并行和block中的thread间并行。

两层并行模型是CUDA最重要的创新之一。

2、实质上,kernel是以block为单位执行的,CUDA引入了grid只是用来表示一系列可以并行执行的block的集合。各block是并行执行的,block间无法通信,也没有顺序。这样,无论是只能同时处理一个线程块的GPU上,还是在能同时处理数十乃至上百个线程块的GPU上,这一编程模型都能很好地适用。

3、在同一个block中的线程,可以进行数据通信。

4、CUDA中属于同一线程块的线程不仅能够并行执行,而且能够通过共享存储器和栅栏同步实现block内的线程间通信。

这样,同一grid中的不同block之间存在不需要通信的粗粒度并行,同一block内的线程之间又形成了允许通信的细粒度并行。

这些就是CUDA的关键特性:线程按照两个层次进行组织、在较低的层次通过共享存储器和栅栏同步实现通信。

5、runtimea API 中的函数以cuda为前缀,driver API中的函数则以cu为前缀。

6、

你可能感兴趣的:(CUDA,cuda)