关于我们

强劲算力,源源动力

GPU与CUDA
发布时间:2023-05-08 11:00:48    来源:吴锡洪

        GPU(图形处理单元)是连接到图形卡的流处理器集群sm,是用于加快速度处理大容量数据集。但是GPU在可编程性涉及面向图形的细节,这使得应用程序非常有限。英伟达为开发者提供了一个开发环境,名称为计算统一设备架构(CUDA),CUDA是可以允许开发者跟以前传统的CPU发开编程一样,可以直接从计算机的内存和操作的角度进行思考。CUDA为开发者生成在GPU执行的并行代码提供了一种简单的方法。


        在一般情况下,可以支持CUDA的GPU是安装在计算机主机的独立设备,然后是通过外围组件互连快速PCI-e总线的接口进行通信交互,这个总线作用是用于在各个设备之间传输数据和命令。而每一个GPU是可以看作成一个独立运行的设备,与主处理器分开运行,主处理器和所有GPU可以同时执行计算。除了少数与主机共享显示内存的设备外,GPU也是有物理内存,尽管GPU内存的大小有限,但是可以提供比传统主机内存更高的内存带宽.


       CUDA内核是可以从主机调用的函数,在CUDA设备上执行,这也说明了主机把内核排队,只是在GPU上执行,不等待内核完成,而是继续执行其他工作。由于是异步机制,CUDA内核是没有办法返回值,但是CUDA也是提供了一些同步接口,这样可以使得主机可以确定内核或者管道应该是在什么时间段完成。


        CUDA线程是GPU上的基本执行单元,每一个线程都是有单独的处理器,具有不同的寄存器和线程标识,在共享内存环境中运行,内核应该利用多个线程来执行这项工作。能够并发运行的线程数由GPU计算能力决定。板载GPU硬件线程调度程序负责线程切换和调度,这对CUDA开发人员是透明的。内核源代码中的执行配置定义了将运行内核的线程数量及其在1D、2D或3D计算网格中的排列。