云计算与数据中心建设2云计算中的并行数据处理.ppt

上传人:仙人指路1688 文档编号:2248520 上传时间:2023-02-06 格式:PPT 页数:185 大小:8.76MB
返回 下载 相关 举报
云计算与数据中心建设2云计算中的并行数据处理.ppt_第1页
第1页 / 共185页
云计算与数据中心建设2云计算中的并行数据处理.ppt_第2页
第2页 / 共185页
云计算与数据中心建设2云计算中的并行数据处理.ppt_第3页
第3页 / 共185页
云计算与数据中心建设2云计算中的并行数据处理.ppt_第4页
第4页 / 共185页
云计算与数据中心建设2云计算中的并行数据处理.ppt_第5页
第5页 / 共185页
点击查看更多>>
资源描述

《云计算与数据中心建设2云计算中的并行数据处理.ppt》由会员分享,可在线阅读,更多相关《云计算与数据中心建设2云计算中的并行数据处理.ppt(185页珍藏版)》请在三一办公上搜索。

1、1,云计算中的并行数据处理,2,目录,背景并行处理硬件系统并行处理软件系统消息传递接口大规模异构并行架构,3,1.背景,物联网、云计算=?麦肯锡:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”,4,BigData,May 2011,麦肯锡,Big Data:The next generation frontier for innovation,competition and productivity 2012年3月,美国奥巴马政府宣布投资2亿美元启动“大数据研究和发展计划”,2012年12月24

2、日 人民日报发表当“大数据”来敲门,5,国内,2012年9月计算机学会通讯刊登了李国杰院士等撰写的学术界谈大数据的专题文章 人民日报发表当“大数据”来敲门等相关文章 第一届中国云计算大会,2009年5月主办单位:中国电子学会第五届,指导单位:工业和信息化部、国家发展和改革委员会、科学技术部,6,领域,搜索引擎电子商务(淘宝网,)生物天气预报核物理 3D动漫图像处理,7,遥感大数据,“十二五”期间的目标100颗卫星在轨稳定运行4月26日,我国高分辨率对地观测系统首发星“高分一号”成功发射 2012年,我国首颗高分辨率测绘卫星“资源三号”在太原卫星发射;每天接收、处理和存储的数据达到1790GB

3、NASA在2011 年10 月1 日至2012年9 月30 日期间统计EOSDIS 平均每日数据存档增长为6.4 TB/d,终端用户平均每日分发数据量为17.1TB/d,总存档数据量达7.4 PB.,8,遥感的数据处理平台,加拿大PCI Geomatica 美国的ENVI 美国ERDAS公司的ERDAS IMAGING 法国的像素工厂(Pixel Factory)中国测绘科学研究院研制的PixelGrid,9,并行遥感数据分析,ESRI provides several cloud-based GIS solutions:ArcGIS Server on Amazon EC2,云检索 云存储云

4、订购 云服务云发布,10,IBM超级计算机再次战胜人类 大数据分析,由IBM和美国德克萨斯大学联合研制的超级计算机“沃森”(Watson)近日在美国最受欢迎的智力竞猜电视节目危险边缘中击败该节目历史上两位最成功的选手肯-詹宁斯和布拉德-鲁特,成为危险边缘节目新的王者。Watson由90台IBM Power 750服务器和DeepQA分析软件组成,(2880 cores and 16 Terabytes of memory),11,技术分析,Watson通过摄像头拍下屏幕上的文字,然后进行光学识别,得到以文字而不是图像形式存储的题目文本:信息检索能力+信息的提取以及分析+自动推理+Natural

5、 Language Processing watson需要一个语音合成引擎将这个答案的文本转换成语音并播放出来就可以了。,12,大数据与云计算,以“大数据大带宽推动云计算应用与创新”为主题的第五届中国云计算大会 在以客户为中心,来构建大网络和大数据,最终以云计算服务模式来交付,以达到最终的愿景:即正确的时间、精确的位置、适当的方法和终端,让客户得到所需的服务。”采集存储分析,13,大数据与云计算,14,目录,背景并行处理硬件系统并行处理软件系统消息传递接口大规模异构并行架构,15,世界Top500,16,IBM Sequoia(红杉),compute nodes:32*16*2*96=9830

6、4,17,国内Top100,18,天河一号,103个机柜、占地面积近千平方米、总重量155吨,每年电费可高达1800万元 计算结点B(Intel XeonEP+NVIDIA GPU):7168个,含14336个CPU、7168个GPU;点点通信带宽40Gbps;延迟1.2us 总容量为1PB;,19,国产三台千万亿次机,20,国家超算中心,上海超级计算中心天津超级计算中心(投资6亿元)深圳超级计算中心(总投资8亿元)长沙超级计算中心(总投资7.2亿元)济南超级计算中心(投资6亿元)广州超级计算中心(投资16亿元)。,21,高校高性能计算平台建设,南京大学高性能计算机系统 花费二千万元建成的。在

7、“2009年第七,在全国高校系统“科学计算/教育”领域中排名第一。南京微结构国家实验室 吉林大学高性能计算中心 1300万元,40万亿次,在2010年6月TOP500 第239位,居全国高校首位。清华大学 3千万元,100T,CPU计算峰值可达104万亿,GPGPU部分的计算峰值可达68万亿次/秒,百万亿次超算系统在9个机柜中即可实现,22,地方政府,北京亦庄的北京云计算基地 上海云海计划 成都云计算中心 无锡城市云计算中心 鄂尔多斯绿色云计算数据中心,23,并行计算基础-计算机体系结构,并行计算机 共享存储的对称多处理器系统 SMP 分布存储的大规模并行处理系统(MPP)计算机集群系统(Cl

8、uster)集群系统优点:可靠性、扩展性和性价比,24,图 世界500强计算机体系结构发展趋势图,集群系统的发展,25,系统总体架构,26,27,集群系统,由节点和集群互连网络组成,再配置上全局软件,是一种松散耦合的多机系统.通过各节点的并行运行,可以实现高性能的并行计算.节点:机架式或者刀片式 网络:InfiniBand和千兆以太网.,28,性能评测,29,集群性能评测,理论峰值主频每个时钟周期浮点运算的次数CPU数,HPL(High Performance Linpack),30,Green500&Graph500,Green500也有一个衡量指标,即每瓦功耗所获取的运算性能(MFLOPS

9、/W)。Graph500 benchmark;Data intensive computing,31,软件环境组成,操作系统作业调度系统管理和监控软件并行开发软件客户端软件,32,High performance Linpack,1、操作系统 LINUX2、并行软件MPICH2 3、数学库 Gotoblas,BLAS(Basic Linear Algebra Subprograms)4、HPL,33,34,并行计算平台的使用,申请帐号熟悉软件:putty 和winscp熟悉常用Linux命令掌握MPI函数Linux环境下vi编辑器编写程序 或者本地编写后上传程序 Linux编译链接运行,35,

10、摩尔定律的困境,CPU发展规律:“摩尔定律”:由于物理定律的限制,采用提高CPU制程和主频的办法遇到了工艺上的壁垒,暂时无法突破GPU发展规律:1993年开始,GPU的性能以每年2.8倍的速度增长,峰值发展趋势,带宽发展趋势,36,二者的区别与联系,CPU和GPU的联系都是计算机体系结构中的重要部分超大规模集成电路元件能够完成浮点运算功能GPU的设计目标与CPU是不同的:CPU的微架构是按照兼顾“指令并行执行”和“数据并行运算”的思路而设计。CPU的大部分晶体管主要用于构建控制电路和CacheCPU的5%是ALU,控制电路设计更加复杂CPU的内存延迟是GPU的1/10GPU其实是由硬件实现的一

11、组图形函数的集合。GPU控制电路相对简单,而且对Cache的需求小,所以可以把大部分的晶体管用于计算单元GPGPU的40%是ALUGPGPU的内存带宽是CPU的10倍,37,GPU(graphics processing unit),NVIDIA公司在1999年发布GeForce256图形处理芯片时首先提出GPU的概念。1999年,T&L(Transform and Lighting,多边形转换与光源处理)2000年,微软发布了DirectX 8.0,像素渲染(Pixel Shader)与顶点渲染(VertexShader),使GPU真正成为了可编程的处理器,,38,GPU对3D图形的处理图形

12、的生成渲染,1、顶点生成2、顶点处理3、光栅化计算 4、纹理帖图5、像素处理6、最终输出,39,RADEON X1900 Architecture,40,统一渲染架构和几何着色,2006,微软发布了DirectX 10.0,统一渲染架构和几何着色。,41,nVIDIA GTX680,4个Graphics Processing Clusters(GPC)每个GPC由2SMX组成每个SMX当中包含192CUDA Core核心 共拥有1536个CUDA Core 3.09 TFLOPs,42,nVIDIA Tesla,43,AMD/ATI GPU 的发展,2006年7月24日,AMD购并ATI,20

13、11,7970,7950 HD 7970 具有2048个流处理器(单精度浮点 3.79TFlops,双947GFlops),Tahiti拥有32个GCN阵列,每个GCN阵列里面包括4个SIMD单元,每个SIMD包括16个1D标量运算单元,44,Future-融合,CPU向多核化,GPU向众核化发展GPU-CPU融合Intel-Sandy Bridge AMD-Accelerated Processing Unit(APU)Nvidia-Project Denver,45,GPU是一种高度并行的,多线程的,众核处理器;非常适合处理计算密集型的数据并行任务;Sandy Bridge:每颗CPU核心

14、、高速缓存段、核显和内核管理中心等可以互相交换数据,GPU普适性,46,Intel HD Graphics,HD Graphics(6 execution units)HD Graphics 2500(6)HD Graphics 4000(16)HaswellHD Graphics(GT1,6)HD Graphics 4200,4 XXX,(GT2,20)HD Graphics 5000,Iris Graphics 5100(GT3,40Iris Pro Graphics 5200,47,Accelerated Processing Unit,APU,CPU通过北桥访问内存;采用Fusion

15、Compute Link来将北桥、GPU、IO连接在一起,同时在GPU和北桥之间搭建Radeon Memory Bus,目的是让GPU与内存进行高速数据交换,从而提升3D性能与并行计算性能。,48,GPU开发软件,DirectX(MS)OpenGLCUDA(2007年6月,NVIDIA)Open CLDirect Compute,C+AMPMatlabOpenACC PortlandGroup(PGI),PGI Accelerator,49,CUDA,2006年11月与G80一同诞生2007年6月,1.0版与Tesla 2013年5,CUDA 5.5,50,Compute Unified De

16、vice Architecture,51,Open Computing Language,苹果发起,Khronos开发2008年6月苹果公司提出AMD,Intel,ARM,NVIDIA,Qualcomm,Nokia,IBM,Samsung,TI等Microsoft是例外适合CPU、GPU、CELL、DSP架构AMD AMD Accelerated Parallel Processing SDK 2.5,全面支持OpenCL 1.1NVIDIA支持OpenCL,52,开发工具,intel 2012年,推出SDK for OpenCL Applications http:/AMD 2012年,推出

17、了CodeXL 1.0 beta 帮助开发者更好利用CPU,GPU和APU计算性能的综合开发工具套装,具有强大的GPU调试、CPU和GPU代码分析、及静态的OpenCL kernel性能分析等能力。,53,OpenACC,英伟达、Cray、Portland Group(PGI)以及 CAPS OpenACC:Directives for GPUs,OpenMPvoid saxpy_parallel(int n,float a,float*x,float*restrict y)#pragma acc kernels for(int i=0;i n;+i)yi=a*xi+yi;,54,图形API,

18、DirectX OpenGL1.0 September 30,1995 January 1992.2.0 1996 September 7,2004 3.0 September 15,1996 July 11,2008 4.0 Never launched March 11,20105.0 August 4,1997 6.0 August 7,1998 7.0 September 22,1999 8.0 November 12,2000 9.0 December 19,2002 10.0 November 30,2006 11 october 22,2009,55,DirectCompute,

19、2009年10月22日,微软公司正式发布Windows 7,DirectX 11集成在Windows 7 中同步登场 DirectCompute是Microsoft DirectX的一部分。DirectX 10:DirectCompute 4.0 DirectX 10.1:DirectCompute 4.1 DirectX 11:DirectCompute 5.0。2011,6月16,AMD Fusion开发者峰会上,微软发布了C+AMP,(Accelerated Massive Parallelism),56,C+AMP,微软于11年6月推出的一个异构并行编程框架,Visual Studio

20、 11开发者预览版起支持。六个特征 C+而不是 C 主流 最小的改动 可移植的 通用且不会过时 开放,57,MIC-Xeon Phi,入门级3100高端5100顶级7100 XeonPhi5110P拥有60个核心,每一个核心都有着4个线程,1.05GHz,2级缓存为30MB,最大支持8GB的GDDR5内存寻址,内存带宽高达320Gbps,双精度浮点计算能力能够达到1TFLOPS$2,649,58,Xeon Phi,开发代号为KnightsCorner PCI Express Vector Processing Unit(VPU).OS由Linux修改,uOS Micro Operating S

21、ystem 包括C、C+和Fortran 支持OpenMP、pThread、MPI,59,计算的发展,1997年,top 1,美国桑迪亚国家实验室的“ASCI 红”,是世界上首个突破每秒一万亿次(TeraFLOPS)浮点运算的系统,它采用了9298个英特尔奔腾 Pro处理器,成本约每一万亿次55,000,000美元。,2011年,每一万亿次(TeraFLOPS)的拥有成本降到了低于1000美元。高性能计算确确实实已经为所有人触手可及。,60,云终端,Imagination Technologies,PowerVR的SGX系列(PowerVR G6230/6430,100GFLOPS 高通(QU

22、ALCOMM)Adreno320,OpenCL 1.2 博通(Broadcom)BCM系列NVIDIA TegraARM的Mali图形处理单元。Mali-T628核心数量4-8个,OpenCL,61,并行处理软件系统,基础知识OpenMP消息传递接口MatlabOpenCL,62,负载均衡问题,63,负载均衡问题,64,负载均衡问题经典算法,65,负载均衡问题,66,性能分析,67,Amdahl定律,68,Gustafson定律,69,加速比性能定律,Sun&Nis Law:Base on Memory Bounding充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解。是Am

23、dahl定律和Gustafson定律的推广。公式推导:设单机上的存储器容量为M,其工作负载W=fW+(1-f)W 当并行系统有p个结点时,存储容量扩大了pM,用G(p)表示系统的存储容量增加p倍时工作负载的增加量。则存储容量扩大后的工作负载为W=fW+(1-f)G(p)W,所以,存储受限的加速为 特别地:当G(p)=1时,为Amdahl定律;当G(p)=p时,为Gustafson定律;,70,Open Multiprocessing(OpenMP),支持C、C+和 Fortran编译指导语句而GCC 4.4 支持OpenMP 3 标准Microsoft Visual Studio 支持 适用于

24、共享存储架构,71,Fork-Join执行模式,在开始执行的时候,只有主线程的运行线程存在主线程在运行过程中,当遇到需要进行并行计算的时候,派生出(Fork,创建新线程或者唤醒已有线程)线程来执行并行任务在并行执行的时候,主线程和派生线程共同工作在并行代码结束执行后,派生线程退出或者挂起,不再工作,控制流程回到单独的主线程中(Join,即多线程的会和)。,72,并行Hello world,#include#include int main(int argc,char*argv)int nthreads,thread_id;printf(I am the main thread.n);#prag

25、ma omp parallel private(nthreads,thread_id)nthreads=omp_get_num_threads();thread_id=omp_get_thread_num();printf(Hello.I am thread%d out of a team of%dn,thread_id,nthreads);printf(Here I am,back to the main thread.n);return 0;,73,几点说明,#pragma omp parallel,创建并行区:并行区里每个线程都会去执行并行区中的代码。控制并行区中线程的数量 并行区内线程

26、数=系统中核的个数。set OMP_NUM_THREADS=4 gcc:gcc-fopenmp hello.c-o hello,74,循环并行化,循环并行化是是把一个循环分成多部分在不同的进程上执行。#pragma omp parallel for for(int i=0;in;i+)zi=xi+yi;工作原理:将for循环中的工作分配到一个线程组中,线程组中的每一个线程将完成循环中的一部分内容;,75,消息传递接口(MPI),MPI库函数MPI目前支持C、C+和FORTRAN语。一个MPI并行程序由一组运行在相同或不同计算机上的进程构成。进程组(process group)进程号(rank)

27、,76,消息传递接口(MPI),下面给出基于C语言的并行程序框架#include 并行库int main(int argc,char*argv)使用MPI_Init函数初始化并行计算环境;使用MPI_Comm_size函数返回指定通信器中进程的数目;使用MPI_Comm_rank函数返回指定通信器中本进程的进程号;并行程序代码和进程通信代码;使用MPI_Finalize退出并行计算环境,并行程序结束;Return 0;,77,并行Hello world,#include mpi.hint main(argc,argv)int argc;char*argv;int rank,size;MPI_I

28、nit(,Hello world from process 0 of 3Hello world from process 1 of 3Hello world from process 2 of 3,78,MPI程序的的编译与运行,mpif77 o hello hello.f 或mpicc o hello hello.c生成hello的可执行代码.mpirun np 4 hello4 指定np的实参,表示进程数,由用户指定.hello 要运行的MPI并行程序.,%小写o,np:The number of process.,79,通信模式,点对点通信(point to point communic

29、ation)阻塞型:MPI_Send和MPI_Recv。非阻塞型:MPI_Isend和MPI_Irecv。聚合通信(collective communication)一对多通信:广播MPI_Bcast多对一通信:数据收集MPI_Gather,多对多通信:全交换MPI_Alltoall,80,发送消息语法,MPI_Send(void*buf,int count,MPI_Datatype datatype,int dest,int tag,MPI_Comm comm)将缓冲区中的count个datatype数据类型的数据发送到目的进程dest,本次发送的消息标志是tag,使用这一标志就可以把本次发

30、送的消息和本进程向同一日的进程发送的其它消息区别开来;MPI_SEND操作指定的发送缓冲区是由count个类型为datatype的连续数据空间组成,81,接收消息语法,MPI_Recv(void*buf,int count,MPI_Datatype datatype,int source,int tag,MPI_Commn comm.,MPI_Status*status)从指定的进程source接收消息,其它参数意义与发送操作类似;应该注意的是,接收到消息的长度必须小于或等于接收缓冲区的长度,这是因为如果接收到的数据过大,而MPI没有截断机制,接收缓冲区会发生溢出错误。,82,/*first.

31、c*/,#include“mpi.h”/*MPI的头函数,int main(int argc,char*argv)int rank,size,tag=333;int buf20MPI_Status status MPI_Init(,83,聚合通信(Collective Communication),从一个进程到本组内的所有进程的播送 broadcast从本组所有进程收集数据到一个进程gather从一个进程分散数据到本组内的所有进程sactter,84,85,2023年2月,MPI并行程序设计,85/217,数据聚集ReduceAllreduceReduce-scatterScan,MPI 预定

32、义全局数据运算符:MPI_MAX/MPI_MIN;MPI_SUM 求和 MPI_PROD 求积MPI_LAND 逻辑与 MPI_LOR 逻辑或 MPI_MAXLOC/MPI_MINLOC 最大/小值求下相应位置,86,87,88,int p,myrank;float buf;MPI_Comm comm;MPI_Init(,Broadcast-数据广播,int MPI_Bcast(void*buffer,/*发送/接收buf*/int count,/*元素个数*/MPI_Datatype datatype,int root,/*指定根进程*/MPI_Comm comm)根进程既是发送缓冲区也是接

33、收缓冲区,89,Gather-数据收集,int p,myrank;float data10;/*分布变量*/float*buf;MPI_Comm comm;MPI_Init(,data.MPI_Gather();.,data.MPI_Gather();.,data.MPI_Gather();.,Process 0myrank=0,Process 1myrank=1,Process p-1myrank=p-1,根进程接收其他进程来的消息(包括根进程),按每在进程在通信组中的编号依次联接在一下,存放在根进程的接收缓冲区中.int MPI_Gather(void*sendbuf,int sendcn

34、t,MPI_Datatype sendtype,void*recvbuf,int recvcount,MPI_Datatype recvtype,int root,MPI_Comm comm),buf,90,Scatter-数据分散,int p,myrank;float data10;float*buf;MPI_Comm comm;MPI_Init(,data.MPI_Scatter();.,data.MPI_ Scatter();.,data.MPI_ Scatter();.,Process 0myrank=0,Process 1myrank=1,Process p-1myrank=p-1,

35、根进程中存储了p个消息,第i个消息将传给第i个进程.int MPI_Scatter(void*sendbuf,int sendcnt,MPI_Datatype sendtype,void*recvbuf,int recvcnt,MPI_Datatype recvtype,int root,MPI_Comm comm),buf,91,Reduce-全局数据运算,int p,myrank;float data=0.0;float buf;MPI_Comm comm;MPI_Init(,data.MPI_Scatter();.,data.MPI_ Scatter();.,data.MPI_ Scat

36、ter();.,Process 0myrank=0,Process 1myrank=1,Process p-1myrank=p-1,对组中所有进程的发送缓冲区中的数据用OP参数指定的操作进行运算,并将结果送回到根进程的接收缓冲区中.int MPI_Reduce(void*sendbuf,void*recvbuf,int count,MPI_Datatype datatype,MPI_Op op,int root,MPI_Comm comm),buf,+,92,MPI集合通信函数,All:表示结果到所有进程.V:Variety,被操作的数据对象和操作更为灵活.,%,93,避免死锁deadlock

37、,发送和接收是成对出现的,忽略这个原则 很可能会产生死锁,总会死锁的通信调用次序,94,安全的通信调用次序,95,实例分析:求PI,96,串行代码,h=1.0/(double)n;sum=0.0;for(i=1;i=n;i+)x=h*(double)i 0.5);sum+=f(x);pi=h*sum;,double f(double a)return(4.0/(1.0+a*a);,97,并行代码,h=1.0/(double)n;sum=0.0;for(i=myid+1;i=n;i+=numprocs)x=h*(double)i 0.5);sum+=f(x);mypi=h*sum;MPI_Red

38、uce(,double f(double a)return(4.0/(1.0+a*a);,98,cpi.c,#include mpi.h#include#include double f(double);double f(double a)return(4.0/(1.0+a*a);,99,cpi.c,int main(int argc,char*argv)int done=0,n,myid,numprocs,i;double PI25DT=3.141592653589793238462643;double mypi,pi,h,sum,x;double startwtime=0.0,endwti

39、me;int namelen;char processor_nameMPI_MAX_PROCESSOR_NAME;MPI_Init(,100,cpi.c,n=100;while(!done)if(myid=0)startwtime=MPI_Wtime();MPI_Bcast(,101,cpi.c,if(n=0)done=1;else h=1.0/(double)n;sum=0.0;for(i=myid+1;i=n;i+=numprocs)x=h*(double)i-0.5);sum+=f(x);mypi=h*sum;,102,2023年2月,MPI并行程序设计,cpi.c,MPI_Reduce

40、(,103,CUDA架构发展,104,CUDA逻辑结构及内存结构,在CUDA的程序架构中,程序执行区域分为两个部分:Host 与Device。Host 指在CPU上执行的部分Device指在GPU 上执行的部分,这部分又称为“kernel”通常,Host 程序会将需要并行计算的数据复制到 GPU 的显存,再由 GPU 执行 Device程序,完成后再由Host 程序将结果从GPU 显存中取回,105,示例,cuda.cu,#include/*运行在GPU端的程序*/_global_ void vectorADD(int*a,int*b,int*c)int index=threadIdx.x;/

41、获得当前线程的序号 if(index blockDim.x)c=a+b;int main()/*定义10个GPU运算线程*/int N=10;/*本地开辟三个数组存放我们要计算的内容*/int*h_a=(int*)malloc(N*sizeof(int);/*h_b,int*h_c;/*初始化数组A,B和C*/for(int i=0;iN;i+)h_a=i;h_b=i;h_c=0;,106,示例,cuda.cu,int size=N*sizeof(int);/*计算10个int型需要的空间*/*在GPU上分配同样大小的三个数组*/int*d_a;int*d_b;int*d_c;cudaMall

42、oc(void*)/*验证计算结果*/,107,数据并行与任务并行,数据并行是所有线程中执行的内核(kernel)是相同的,只是处理的数据会根据内核代码分支等原因而不同。任务并行则在每个线程中执行不同的代码,108,OpenCL,开放计算语言Open Computing Language苹果发起,Khronos开发2008年6月苹果公司提出AMD,Intel,ARM,NVIDIA,Qualcomm,Nokia,IBM,Samsung,TI等Microsoft是例外适合CPU、GPU、CELL、DSP、ARM、FPGA、Altera,109,OpenCL,由一个并行计算API和一种针对此类计算的

43、编程语言组成C99编程语言并行扩展子集;适用于各种类型异构处理器的坐标数据和基于任务并行计算API;基于IEEE 754标准的数字条件;与OpenGL、OpenGL ES和其他图形类API高效互通提供了基于任务分割和数据分割的并行计算机制Khronos Grouphttp:/www.khronos.org/opencl/,110,OpenCL四种模型,OpenCL allows parallel computing on heterogeneous devicesCPUs,GPUs,Cell,DSPs,etc)Provides portable accelerated code平台模型(Pla

44、tform Model)执行模型(Execution Model)内存模型(Memory Model)编程模型(Programming Model),111,Platform Model,Each OpenCL implementation(i.e.an OpenCL library from AMD,NVIDIA,etc.)defines platforms which enable the host system to interact with OpenCL-capable devicesCurrently each vendor supplies only a single platf

45、orm per implementationOpenCL uses an“Installable Client Driver”modelThe goal is to allow platforms from different vendors to co-existCurrent systems device driver model will not allow different vendors GPUs to run at the same time,112,Platform Model,The model consists of a host connected to one or m

46、ore OpenCL devicesA device is divided into one or more compute unitsCompute units are divided into one or more processing elementsEach processing element maintains its own program counter,113,Host/Devices,The host is whatever the OpenCL library runs on x86 CPUs for both NVIDIA and AMDDevices are pro

47、cessors that the library can talk to CPUs,GPUs,and generic acceleratorsFor AMD All CPUs are combined into a single device(each core is a compute unit and processing element)Each GPU is a separate device,113,114,执行模型,OpenCL的执行模型可以分为两部分,一部分是在 host上执行的主程序(host program),另一部分是在 OpenCL设备上执行的内核程序(kernels),

48、OpenCL通过主程序来定义上下文并管理内核程序在OpenCL设备的执行。OpenCL执行模型的核心工作就是管理 kernel在OpenCL设备上的运行。在 Host创建一个 kernel程序之前必须先为该 kernel创建一个标识了索引的工作空间,kernel会在工作空间每个节点(workitem)上执行,115,Thread Structure,Work-items can uniquely identify themselves based on:A global id(unique within the index space)A work-group ID and a local I

49、D within the work-group,116,Thread Structure,API calls allow threads to identify themselves and their dataThreads can determine their global ID in each dimensionget_global_id(dim)get_global_size(dim)Or they can determine their work-group ID and ID within the workgroupget_group_id(dim)get_num_groups(

50、dim)get_local_id(dim)get_local_size(dim)get_global_id(0)=column,get_global_id(1)=rowget_num_groups(0)*get_local_size(0)=get_global_size(0),117,Memory Model,118,使用OpenCL编程的6个步骤,查找支持OpenCL的硬件设备(Device),并创建上下文(Context)创建命令队列(Command Queue)及包含了内核的程序(Program);如果该程序是源代码,则还需进行在线编译。创建程序执行过程中需要的内存对象(Buffer)及

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号