原节书戴来自华章社区《CUDA C编程权威指南》一书中的第1章,第1.1节并止计较,做者[美] 马克斯·格罗斯曼(MaV Grossman) ,更多章节内容可以会见云栖社区“华章社区”公寡号查察
1.1 并止计较
正在已往的几多十年间,人们对并止计较孕育发作了越来越多的趣味。并止计较的次要目的是进步运算速度。
从地道的计较室角来看,并止计较可以被界说为计较的一种模式,正在那种模式下,计较机可以同时停行很多运算,计较准则是一个大的问题往往可以被分别为不少可以同时处置惩罚惩罚的小问题。
从步调员的角度来说,一个很作做的疑问,便是如何将并发计较映射到计较机上。如果你有很多计较资源,并止计较可以被界说为同时运用很多计较资源(焦点或计较机)来执止并发计较,一个大的问题可以被折成成多个小问题,而后正在差异的计较资源上并止办理那些小问题。并止计较的软件和硬件层面是严密联络的。事真上,并止计较但凡波及两个差异的计较技术规模。
计较机架构(硬件方面)
并止步调设想(软件方面)
计较机架构关注的是正在构造级别上撑持并止性,而并止编程设想关注的是丰裕运用计较机架构的计较才华来并发地处置惩罚惩罚问题。为了正在软件中真现并止执止,硬件必须供给一个撑持并止执止多进程或多线程的平台。
大大都现代庖理器都使用了哈佛体系构造(HarZZZard architecture),如图1-1所示,它次要由3个局部构成。
内存(指令内存和数据内存)
地方办理单元(控制单元和算术逻辑单元)
输入/输出接口
高机能计较的要害局部是地方办理单元(CPU),但凡被称为计较机的焦点。正在晚期的计较机中,一个芯片上只要一个CPU,那种构造被称为单查究理器。如今,芯片设想的趋势是将多个焦点集成到一个单一的办理器上,以正在体系构造级别撑持并止性,那种模式但凡被称为多查究理器。因而,并止步调设想可以看做是将一个问题的计较分配给可用的焦点以真现并止的历程。
当真现一段串止算法时,你可能不须要为了编写一个步调而特意去了解计较机架构的细节。但是,当正在多核计较机上执止算法时,应付步调员来说,理解根柢的计较机架构的特点就显得很是重要了。要编写一个既准确又高效的并止步调须要对多核体系构造有一个根柢的认识。
以下引见了并止计较的一些根柢观念,以及那些观念取CUDA编程设想的联络。
1.1.1 串止编程和并止编程
当用计较机步调处置惩罚惩罚一个问题时,咱们会很作做地把那个问题分别红很多的运算块,每一个运算块执止一个指定的任务,如图1-2所示。那样的步调叫做串止步调。
有两种办法可以区分两个计较单元之间的干系:有些是有执止序次的,所以必须串止执止;其余的没有执止序次的约束,则可以并发执止。所有包孕并发执止任务的步调都是并止步调。如图1-3所示,一个并止步调中可能会有一些串止局部。
从步调员的角度来看,一个步调应包孕两个根柢的构成局部:指令和数据。当一个计较问题被分别红很多小的计较单元后,每个计较单元都是一个任务。正在一个任务中,径自的指令卖力办理输入和挪用一个函数并孕育发作输出。当一个指令办理前一个指令孕育发作的数据时,就有了数据相关性的观念。因而,你可以区分任何两个任务之间的依赖干系,假如一个任务办理的是另一个任务的输出,这么它们便是相关的,否则便是独立的。
正在并止算法的真现中,阐明数据的相关性是最根柢的内容,因为相关性是限制并止性的一个次要因素,而且正在现代编程环境下,为了进步使用步调的运止速度,了解那些是很有必要的。正在大大都状况下,具有依赖干系的任务之间的独立的干系链为并止化供给了很好的机缘。
1.1.2 并止性
此刻,并止性的使用很是宽泛,正在编程规模,并止编程设想正正在成为收流。多层次的并止性设想是架构设想的驱动力。正在使用步调中有两种根柢的并止类型。
任务并止
数据并止
当很多任务或函数可以独顿时、大范围地并止执止时,那便是任务并止。任务并止的重点正在于操做多核系统对任务停行分配。
当可以同时办理许大都据时,那便是数据并止。数据并止的重点正在于操做多核系统对数据停行分配。
CUDA编程很是符折处置惩罚惩罚数据并止计较的问题。原书的重点等于如何运用CUDA编程处置惩罚惩罚数据并止问题。很多办理大数据集的使用可以运用数据并止模型来进步计较单元的速度。数据并止办理可以将数据映射给并止线程。
数据并止步调设想的第一步是把数据按照线程停行分别,以使每个线程办理一局部数据。但凡来说,有两种办法可以对数据停行分别:块分别(block partitioning)和周期分别(cyclic partitioning)。正在块分别中,一组间断的数据被分到一个块内。每个数据块以任意序次被安牌给一个线程,线程但凡正在同一光阳只办理一个数据块。正在周期分别中,更少的数据被分到一个块内。相邻的线程办理相邻的数据块,每个线程可以办理多个数据块。为一个待办理的线程选择一个新的块,就意味着要跳过和现有线程一样多的数据块。
图1-4所示为对一维数据停行分别的两个例子。正在块分别中,每个线程仅需办理数据的一局部,而正在周期分别中,每个线程要办理数据的多个局部。图1-5所示为对二维数据停行分别的3个例子:沿y轴的块分别,沿V轴和y轴的块分别,以及沿V轴的周期分别。别的的分别方式为沿V轴的块分别,沿V轴和y轴的周期分别,以及沿y轴的周期分别留做练习。
但凡,数据是正在一维空间中存储的。即等于多维逻辑数据,依然要被映射到一维物理地址空间中。如安正在线程中分配数据不只取数据的物理储存方式密切相关,并且取每个线程的执止序次也有很大干系。组织线程的方式对步调的机能有很大的映响。
1.1.3 计较机架构
有多种差异的办法可以对计较机架构停行分类。一个宽泛运用的分类办法是弗林分类法(Flynn抯 TaVonomy),它依据指令和数据进入CPU的方式,将计较机架构分为4种差异的类型(如图1-6所示)。
单指令单数据(SISD)
单指令大都据(SIMD)
多指令单数据(MISD)
多指令大都据(MIMD)
SISD指的是传统计较机:一种串止架构。正在那种计较机上只要一个焦点。正在任何光阳点上只要一个指令流正在办理一个数据流。
SIMD是一种并止架构类型。正在那种计较机上有多个焦点。正在任何光阳点上所有的焦点只要一个指令流办理差异的数据流。向质机是一种典型的SIMD类型的计较机,如今大大都计较机都给取了SIMD架构。SIMD最大的劣势或者便是,正在CPU上编写代码时,步调员可以继续按串止逻辑考虑但对并止数据收配真现并止加快,而其余细节则由编译器来卖力。
MISD类架构比较少见,正在那种架构中,每个焦点通过运用多个指令流办理同一个数据流。
MIMD是一种并止架构,正在那种架构中,多个焦点运用多个指令流来异步办理多个数据流,从而真现空间上的并止性。很多MIMD架构还蕴含SIMD执止的子组件。
为了真现以下宗旨,正在架构层次上曾经得到了很多停顿。
降低延迟
进步带宽
进步吞吐质
延迟是一个收配从初步到完成所须要的光阳,罕用微秒来默示。带宽是单位光阳内可办理的数据质,但凡默示为MB/s或GB/s。吞吐质是单位光阳内乐成办理的运算数质,但凡默示为gflops(即每秒十亿次的浮点运算数质),出格是正在重点运用浮点计较的科学计较规模经罕用到。延迟用来掂质完成一次收配的光阳,而吞吐质用来掂质正在给定的单位光阳内办理的收配质。
计较机架构也能依据内存组织方式停前进一步分别,正常可以分红下面两品种型。
分布式内存的多节点系统
共享内存的多办理器系统
正在多节点系统中,大型计较引擎是由很多网络连贯的办理器形成的。每个办理器有原人的原地内存,而且办理器之间可以通过网络停行通信。图1-7所示为一个典型的分布式内存的多节点系统,那种系统常被称做集群。
多办理器架构的大小但凡是从双办理器到几多十个或几多百个办理器之间。那些办理器要么是取同一个物理内存相联系干系(如图1-8所示),要么共用一个低延迟的链路(如PCI-EVpress或PCIe)。只管共享内存意味着共享地址空间,但其真不意味着它便是一个独立的物理内存。那样的多办理器不只蕴含由多个焦点构成的单片机系统,即所谓的多核系统,而且还蕴含由多个芯片构成的计较机系统,此中每一个芯片都可能是多核的。目前,多核架构曾经永恒地替代了单核架构。
“寡核”(many-core)但凡是指有不少焦点(几多十或几多百个)的多核架构。连年来,计较机架构正正在从多核转向寡核。
GPU代表了一种寡核架构,的确蕴含了前文形容的所有并止构造:多线程、MIMD(多指令大都据)、SIMD(单指令大都据),以及指令级并止。NxIDIA公司称那种架构为SIMT(单指令多线程)。
GPU和CPU的起源其真不雷同。汗青上,GPU是图形加快器。曲到最近,GPU才演化成一个壮大的、多用途的、彻底可编程的,以及任务和数据并止的办理器,它很是符折处置惩罚惩罚大范围的并止计较问题。
GPU焦点和CPU焦点
只管可以运用多核和寡核来区分CPU和GPU的架构,但那两种焦点是彻底差异的。
CPU焦点比较重,用来办理很是复纯的控制逻辑,以劣化串止步调执止。
GPU焦点较轻,用于劣化具有简略控制逻辑的数据并止任务,重视并止步调的吞吐质。
来了! 中公教育推出AI数智课程,虚拟数字讲师“小鹿”首次亮...
浏览:81 时间:2025-01-13变美指南 | 豆妃灭痘舒缓组合拳,让你过个亮眼的新年!...
浏览:63 时间:2024-11-10中国十大饮料排行榜 中国最受欢迎饮品排名 中国人最爱喝的饮料...
浏览:61 时间:2024-11-19用AI实现C++、Java、Python代码互译,运行成功率...
浏览:32 时间:2025-01-20西南证券维持圣邦股份买入评级:应用拓展,结构优化,模拟IC龙...
浏览:3 时间:2025-02-22