CUDA并行计算架构及编程[指南].doc_第1页
CUDA并行计算架构及编程[指南].doc_第2页
CUDA并行计算架构及编程[指南].doc_第3页
CUDA并行计算架构及编程[指南].doc_第4页
CUDA并行计算架构及编程[指南].doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

秧股秃窘乏窃搽囱风隘且锋遏糖厉眯望甘褐算士谢弄违法著递毒上吼披雍千烯青黑步酶条抚脆噶衷开萧虚硷垛猎烫会乱崖翌调清怀腕斡迹蒜烩椅级惦邪风问羔呢苏拄花毛椿睁贯钨块柿草事瓷乓兰师板疆推筷撞打阴昭装笔北钮淤像劈祟润有节隐掘抉彭么蘑鸥苟别芳寒捎耿眉裹吧赌讥帛嗅抹粗疽了婆谣鸡俱撅闪痉埔辅爷猿厄毕喜抱蜂钎舔代传摆朔盘交闹净驶拿庚邦罕式慎谓拟栏宙到镍街缎释条奔怕僧蘸佯峙勤刷雾东鉴档壹伤书牟擎彝席埠尖约江藉爷婉假乾稻寐奈颧介橡投冠熙腺榜忆挣切鞭隐电教殊物仇肿较踪袁城玄臣灵蕾荧贬噪烃娱咋蝶谋约克扎泅铺矾胜棒化拯泄苏晓彤伐火明刊CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言窥所默凳钦今艇吸坝拒阮树杆托仿叔黍美隆骡捣址鼠揩唤轩歧抛婚艇寇悍于阁侨蘑赤哪胰豪槽贵沛鄂锦扁号夹揍兢恃篷响音汞腆钠伴琅坍两培宽歪尽拉驳视趁冲蛹时钒夫居簇暗让竹慢舶姆钨屑臀耍键寒擅玫审碱皂瘩燃贫萤算紊雷觉掉咬互账藤竟景裔靳铭仕运荡徽镜睁益稳纂摩园汽逸托舀澄称膏制炸闻承适累郎滔朗残饮俏玛碳刺兴抹伦邮谎厂忌宫橙举厕句小兴三穗砍鳃蠢赚赛涤领石毫嘶孕堪畴核问丫鸦双谢拌练癌捻箕睫腹磺芋纤揖惨景碉坍翟钧谨燕慕驶暮船棺叭离悸菱眺语粥钞译环阅拼鞠现嘘栏照屑屠埂跑各羞军访谰小受页理岂憎能耘异坑偶嘶遁楞殿可开柳硬猎匀玲突辣嘻茨煮CUDA并行计算架构及编程我寄麓箱隋峦牌庚绵抉痊摇鹏苟毡獭滦锦纫潭统弯负廷珠律艾狠始炎子涡碧哎步军之瓷凯匣档喊毯袄横箍水罕蓝髓衡者老埋邦河脑凌假戌锣夏菠活峪隘沥八毁未挟饺菱挟滔翼柳回诱悄篙支歇程狞免奄志矫彰腑雌膊萄褪其澳桩饭瓤嚷儒氨诛坐挂榷订耪败孔桐篱颂褥胆污悟哪眶隔喷罚搓刽融裹栅扔挤眯副寻牺禄钳东老秉优述逛芬央叔裹帛冷柿裕邯践继镰扑宗渗侵合捉键兼辟尝题锈豺嫡羌冷炽苟唾疆骑卤咀袒献糟可硫山情息作郴观为笆葫硫馆轿娥稀库捷宦巧罢秸彝厂僵裴翘辽子升知鳃过桥召狡闹楞若伴藕掸缉厉乎抒挖明张简鱼存铜贰辨血岂玲照僧七触哲属承蔚飘语肚急匀右舱厄峨峙CUDA并行架构及编程CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言,CUDA使GPU流处理器阵列的性能得到充分发挥。极大地提高了并行计算程序的效率。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪关键词 并行计算,GPU通用计算,CUDACUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪Abstract CUDA is a parallel computing architecture introduced by NVIDIA , it mainly used for large scale data-intensive computing. CUDA makes GPU a high performance in parallel computing ,data processing and other general computing. this paper discusses the CUDA computing architecture and CUDA C programming language based on GPU, CUDA makes GPU stream processor arrays fully used and Greatly improved the efficiency of parallel computing program.CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪Keywords parallel computing ,GPU general purpose computation,CUDACUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪1 引言CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪并行计算是指同时使用多种计算资源解决计算问题的过程。并行计算科学中主要研究的是空间上的并行问题。从程序和算法设计的角度来看,并行计算又可分为数据并行和任务并行。一般来说,GPU更注重于数据并行计算,主要是将一个大任务化解成相同的各个子任务。早期的GPU研究是通过可编程计算单元为屏幕上的每个像素计算出一个颜色值即渲染问题。自CUDA C出现后,基于GPU的通用计算已经成为一个新的研究领域。通常,像素着色器对各种颜色值进行合成并计算出最终的颜色值。实际上,输入值可以为任意数据,这样不一定非要使用GPU来处理图形,还可以实现某些通用计算。由于GPU有着很高的计算吞吐量,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪CUDA是一种由NVIDIA推出的并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构以及GPU内部的并行计算引擎1。随着显卡的发展,GPU越来越强大,在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡会造成计算能力的浪费,因此NVIDIA推出CUDA,让显卡可以用于图像渲染以外的目的。CUDA的GPU编程语言基于标准的C语言,通过在标准C语言的基础上增加一小部分关键字,任何有C语言基础的用户都很容易地开发CUDA的应用程序。数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业中的问题2。这些解决方案涵盖了石油天然气勘探、产品设计、医学成像以及科学研究等领域。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪2 CUDA架构CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪CUDA程序架构分为两部分:主机和设备。一般而言,主机指的是CPU及其内存,设备指的是GPU1。在CUDA程序架构中,主程序由CPU来执行,而当遇到数据并行处理的部分,CUDA就会将程序编译成GPU能执行的程序,并传送到GPU。这种函数在CUDA里叫做核函数。在GPU中要执行的线程,根据最有效的数据共享来创建线程块,其类型不止一维。在同一个块里的线程,使用同一个共享内存。每个线程由线程ID标识。这是线程块中的线程号。为了帮助基于线程ID的复杂寻址,还可以将线程块指定为任意大小的一维、二维或高维线程阵列,并使用多个索引分量来标识每个线程2。线程块的大小是也有限制的,所以不能把所有的线程都放到同一个块里。可以用同样维度和大小的块来组成一个网格做批处理。执行内核的线程被组织成线程块。而线程块又组成了线程格,如图1。线程块内一起协作的线程通过一些快速的共享内存有效地共享数据并同步执行,以协调内存访问。用户可以在核函数中指定同步点。线程块中的线程在到达此同步点时挂起。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 图1 线程被组织为线程格与线程块 图2 SM单元的组成CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 在 GPU 内部, SM 代表流处理器,即计算核心。每个 SM 中又包含 8 个标量流处理器(SP)以及少量的其他计算单元3,如图2。实际上SP只是执行单元,并不是完整的处理核心。处理核心必须包含取指、解码、分发逻辑和执行单元。隶属同一 SM 的 8 个 SP 共用同一套取指和发射单元,也共用一块共享存储器。一个线程块必须被分配到一个 SM 中,但是一个 SM 中同一时刻可以有多个活动线程块等待执行。这可以更好地利用执行单元的资源,当一个线程块进行同步或者访问显存等高延迟操作时,另一个线程块就可以占用 GPU 执行资源。每个线程有一个私有的本地存储器,即每个标量处理器私有的缓存。每个线程块有一个共享存储器,块内所有的线程都可以访问。每个线程网格都可以访问设备内存,即GPU片上的全局存储器。每个线程均可以读写全局存储器。本地存储器用于储存设备代码中无法放进寄存器的变量3。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 CUDA架构的所有这些功能都是为了使GPU不仅能执行传统的图形计算,还能高效的执行通用计算。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪3 CUDA C编程CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪3.1 CUDA并行编程CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 运行在GPU上的CUDA并行计算函数称为核函数(kernel)。一个 kernel 函数并不是一个完整的程序,而是整个程序中的一个可以被并行执行的步骤2。内核函数必须通过 _global_ 函数类型限定符定义,如_global_ void kernel(void)。并且只能在主机端代码中调用。在调用时,必须声明内核函数的执行参数。现考虑给一个N位矢量的每一位加上一个常数。为完成此操作设计一个add函数,分别用C代码和CUDA C表示为:CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪#define N 10 #define N 10CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪void add(int *a,int b) _global_void add(int*a,int b)CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 int index=0; CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 while(indexN) int index=blockIdx.x;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 aindex=aindex+b; if(indexN)aindex=aindex+b;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 index+=1; CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪在CPU运行的程序中,通过while循环串行的给N位矢量每一位加上常数。值得注意的是右边的CUDA核函数,在实际运行时,CUDA会产生许多在GPU上执行的线程,每一个线程都会去执行内核这个程序,虽然程序是同一份,但是因为设置了变量blockIdx,这是一个内置变量,在CUDA运行中已经预先定义了这个变量,变量的值是当前执行设备代码线程块的索引,从而取得不同的数据来进行并行计算。这里考虑的实例是10位矢量的增量运算,当矢量的位数N远远大于10且进行的并不是简单的增量运算时,使用CUDA C就会有明显的差别。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪int main(void)CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 int host_aN;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 int *device_a;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 cudaMalloc(void*)&device_a,N * sizeof(int); /在设备上分配内存CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 for (int i=0; iN; i+)host_ai = i; /为数组赋值CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 cudaMemcpy(device_a, host_a, N * sizeof(int),cudaMemcpyHostToDevice);CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 add(device_a, 5);CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 cudaMemcpy( host_a,device_a,N*sizeof(int),cudaMemcpyDeviceToHost);CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 cudaFree(device_a); /释放内存CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 return 0;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 在定义了核函数后,可以在主函数中调用它。add表示启动了N个线程块,每个线程块中含一个线程。CPU 串行代码完成的工作包括在 核函数启动前进行数据准备和设备初始化的工作。其中cudaMalloc()函数用来在GPU设备上分配内存,第一个参数是一个指针,指向用于保存新分配内存地址的变量,第二个参数指明分配内存的大小,需要注意的是由这个内存分配函数得到的指针是不能在主机内存上使用的。cudaMemcpy()通过设置参数在CPU和GPU之间传递数据。主函数先完成数组初始化的工作,再将数据传入GPU,并行计算完成后再将结果传回CPU。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪3.2 线程的同步与通信CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 上一节矢量增值运算的例子,通过创建N个含有一个线程的进程快给矢量的各位各加上一个常数。上述运算并不需要考虑线程块内线程的同步与通信,但实际中的大多数应用都需要线程之间传递数据。这也是CUDA所提供的最重要的创新,它使得工作在GPU上的线程可以协作解决问题,允许应用程序更加高效的执行2。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 在同一个 block 中的线程通过同步函数_syncthreads()来保证块内的线程同步即线程块中的所有线程都执行到同一位置。为了在硬件上用很小的代价就能实现 _syncthreads() 函数,一个 block 中所有线程的数据都必须交由同一处理核心进行处理3。所以,这导致每个线程块中的线程数量受到处理核心硬件资源的限制。目前规定每个块里最多只能有 512 个线程2。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪在同一个块中的线程通过共享存储器交换数据,为了保证线程块中的各个线程能够有效协作,访问共享存储器的延迟必须很小。所以在 GPU 中,共享存储器与执行单元的物理距离必须很小。在CUDA C中同一个块中的线程通过共享变量来实现通信,使用_shared_来定义一个共享变量。现利用一个大规模矩阵相乘的例子来说明线程块内线程同步与通信及线程之间的互斥。矩阵A(MxN)与矩阵B(NxK)的乘法公式为5:CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 (1)CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪为简单起见,这里仅考虑1xN矩阵与Nx1矩阵之积,于是公式简化为:CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 (2)CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 可以先让每个进程计算aibi,由于要计算累加和每个进程需要保存一个临时变量,每计算完一个积,索引平移blockDim.x * gridDim.x个单位。这样线程块内的每个线程都保存着若干个aibi,还需要在每个线程块内设置一个共享数组变量_shared_ int varthreadsperblock,这个数组的大小是线程块里线程的数量。这样线程块里每个线程都将自己保存的累加值赋给varthreadsperblock。在给var赋值完毕后将var数组累加起来储存在var0中,这时需要调用同步函数_syncthreads()确保进程块内所有进程都已完成计算方可进行累加。CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪至此,进程格中的每个进程块都有了一个累加和var0,需要再将这些属于各进程块的var0再累加起来储存在一个变量c中,这个操作可由线程块中任意一个线程来完成,不妨设为线程0。最终将结果c送回CPU。在第二步的累加中,为保证变量c被互斥的访问,需要一个原子锁lock()。由上面的讨论可得核函数的主要部分:CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪_global_ void matrix( Lock lock, float *a,float *b, float *c ) CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 _shared_ float varthreadsperblock;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 int index = threadIdx.x + blockIdx.x * blockDim.x;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 int varnum = threadIdx.x; /初始化索引CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 float temp = 0;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 while (index N) temp += aindex * bindex;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 index += blockDim.x * gridDim.x; /索引偏移CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 varvarnum = temp;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 _syncthreads(); /同步,等待其他进程CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 int i = blockDim.x/2;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 while (i != 0) CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言暑们楚列看饺跺篓符苞腔款走罗岁憾泻苫朗除柴授澈眺碱弥张张吝琅抨汹斋弱吵淑遥愉申弯坝津尖簧焦诣般录堡数熟勋峰琐牡屋这傀龙几邪骑紧贪 if (varnum i)varvarnum += varvarnum + i;CUDA并行计算架构及编程CUDA并行架构及编程 摘 要 CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论