
C++
更多晶体管用于数据处理,如浮点运算,对高度并行计算很有优势。GPU能通过计算隐藏内存访问延迟,而非依靠大规模数据缓存或复杂控制流来规避长时间内存延迟,这两种方式都会消耗大量晶体管资源。应用程序一般包含并行与顺序混合的部分,因此系统设计常结合GPU和CPU,以优化整体性能。高度并行的应用能充分发挥GPU的大规模并行优势,在性能上超越仅使用CPU的表现。2006年11月,NVIDIA推出了CUDA。这是一个通用并行计算平台与编程模型,能够借助NVIDIA GPU中的并行计算引擎,高效解决众多复杂的计算问题,相比在CPU上运行更具优势。CUDA构建了支持开发者使用C++进行高级编程的软件环境。从图2可见,除C++外,其他语言或技术同样受到支持,比如FORTRAN、DirectCompute和OpenACC,也包括应用程序编程接口(API)及指令式方法等多样化途径。
多核CPU与多核GPU的问世,使主流处理器芯片成为并行系统。如今的挑战在于开发能够透明扩展并行性的应用软件,以充分利用不断增长的核心数量。就像3D图形应用可以无缝将其并行性扩展到不同核心数的多核GPU一样。CUDA并行编程模型旨在解决这一难题,同时确保熟悉C等标准语言的程序员能快速上手。该模型通过三个核心抽象:线程组层次结构、共享内存和屏障同步,以最少的语言扩展,为程序员提供了简洁明了的接口。这些抽象机制兼具细粒度的数据并行与线程并行,同时嵌套于粗粒度的数据并行和任务并行之中。它们促使开发者将问题拆解为可由线程块独立并行处理的较大子问题,再将每个子问题细化成更小的部分,以便块内所有线程协同合作、并行求解。这种分解方式既保留了语言的表达能力,又实现了自动扩展性。它让线程在解决子问题时能够协作。实际上,每个线程块可以按任意顺序,以并发或顺序形式,调度到GPU中任何可用的多处理器上。这意味着编译后的CUDA程序能在任意数量的多处理器上运行(3所示),而仅需运行时系统掌握物理多处理器的数量。

NVIDIA
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号