图形处理器(Graphics Processing Unit, GPU)和中央处理器(Central Processing Unit, CPU)相对,是显卡的核心芯片;统一计算设备架构(Compute Unified Device Architecture, CUDA),是由英伟达(NVIDIA)推出的通用并行计算架构,作为开发GPU的编程接口,CUDA通过CPU任务分发和GPU并行处理来提升计算效率。
在CUDA平台下,CPU和GPU是如何分工协作的?
1. CPU负责任务调度和管理。
2. GPU负责并行计算:使用大量CUDA核心执行任务,完成大规模向量计算。
3. 数据交换:CPU和GPU之间存在数据交换,GPU显存决定并行处理规模和计算速度。
cuDNN是NVIDIA提供的针对深度神经网络基元的一个优化 GPU 库,这些基元包括前向传播、卷积、反向传播、激活函数(如 sigmoid、ReLU 和 tanh)和梯度下降,cuDNN 是大多数主流深度神经网络框架(如 Tensorflow)在 NVIDIA GPU 上的底层支撑。
GPU硬件的一个核心组件是SM(Streaming Multiprocessor,流式多处理器),SM采用的是SIMT(Single-Instruction, Multiple-Thread,单指令多线程)架构,CUDA Warp(线程束)是CUDA中的最小执行单元,由 32 个线程或更少组成,运行在精确的32个GPU核心上,就像网格由块组成一样,块由Warps组成,Warp的多少取决于块使用的线程数。
本帖最后由 ljg2np 于 2024-11-7 14:22 编辑CUDA是英伟达非常伟大的设计。
GPU与CPU通过PCIe总线连接,CPU一侧称为主机端(host),GPU一侧称为设备端(device);CUDA是NVIDIA公司开发的GPU编程模型,它提供了GPU编程的简易接口,基于CUDA编程可以构建基于GPU计算的应用程序。CUDA程序的执行流程如下:
1、分配host内存,并进行数据初始化;
2、分配device内存,并从host将数据拷贝到device上;
3、调用CUDA的核函数在device上完成指定的运算;
4、将device上的运算结果拷贝到host上;
5、释放device和host上分配的内存。
引用: wangerxian 发表于 2024-11-7 13:09 CUDA是英伟达非常伟大的设计。
分布式并行计算技术一直在发展,英伟达通过CUDA将显卡芯片发展为GPU,极大降低了普通用户参与AI实现的门槛。
在CUDA中通过函数类型限定词区分host和device上的函数,kernel(核函数)是在device上线程中并行执行的函数,用_global__符号声明;在device上执行时启动很多线程,一个kernel启动的所有线程称为一个网格(grid),同一个网格上的线程共享相同的全局内存空间,网格分为很多线程块(block),每个块包含了若干线程。主要的三个函数类型限定词如下:
1、__global__在device上执行,从host中调用,返回类型是void,不能成为类成员函数;
2、__device__在device上执行,仅在device中调用,不和_global__同时用;
3、__host__在host上执行,仅在host上调用,可省略不写,不和_global__同时用,可和__device__一起使用,函数在device和host都被编译。
本帖最后由 ljg2np 于 2024-11-8 09:31 编辑引用: zpw0316 发表于 2024-11-7 17:11 能不能描述清楚一点?485通信速率难道不是波特率决定的吗?
波特率的概念更为普遍适用,不止RS485,对RS422、RS232都可以采用的;对于GPU来说,它本身是作为显卡的芯片,侧重于图形处理和显示器适配的,随着芯片技术的发展,增强了性能,引入了并行计算功能,而且借助于显示器是电脑的标配的缘故,很方便的得到了应用和推广;实际上,它并不是专门从事并行、分布、集群的超大规模计算的。