首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • GPU + CPU 并行运算 ,谁能说一说
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jj456
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-03-09 16:23:56 楼主
    比如说要处理大量数据,怎样才可以再把其中一部分数据送到显存后并用GPU计算的同时让cpu也同时运算其余的数据,是不是再把数据和运算规则都交给GPU后cpu就自由了,可以在GPU运算的同时也运算剩余数据,还是要等GPU运算完成之后CPU才能开始运算。 
      就是GPU,CPU能不能并行, 
      随着PCIE接口的出现成熟,现在读写显存的速度已经非常快了,浮点运算超级强劲的GPU(比CPU快不知道多少倍,GPU都有256位的了!)不好好用用有点可惜,想法可能幼稚些,别笑我
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • videosender
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-15 22:40:041楼 得分:0
    当然可以并行了,cpu可以干别的了,等会回来拿结果就行了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • huawenguang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-18 22:02:122楼 得分:0
    理论上讲,应该可以做到CPU与GPU并行运算,但实际应用上,我们一般不会这样做。
    这里我们所说的并行运算,指的是GPU内部的并行运算,而不是GPU与CPU之间的并行。
    后者我觉得意义不大。你想一想,如果GPU足够能大,瞬间就把数据都算好了,
    那你CPU还有时间分心去做其它事情吗?


    ========================================
    www.physdev.com
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ypz_2006
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-21 12:16:123楼 得分:0
    现在的1.1应该只支持同步的调用kernel,也就是说cpu必须等到kernel完成才能返回。当然如果有其他cpu线程的话那是可以利用这段时间并行计算的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wbfbull
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-25 10:31:414楼 得分:0
    现在的1.1应该只支持同步的调用kernel,也就是说cpu必须等到kernel完成才能返回。当然如果有其他cpu线程的话那是可以利用这段时间并行计算的。
    ====
    cpu在同一个线程内没办法和gpu并行,所以如果希望cpu与gpu同时运算,就得各开一个线程。但要注意线程共享数据和同步刷新等问题。可以参考侯捷译的windows多线程编程。很经典。
    另外挑个jj456的小错误,gpu的256位是内存带宽,不是处理器的字长。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wbfbull
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-03-25 10:33:565楼 得分:0
    还有啊,pcie的接口是内存到显存的。显存到gpu有专门的接口。其特性非常有意思,在高性能cuda编程中要注意到这个特性。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • knowledge_Is_Life
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-01 15:28:396楼 得分:0
    什么呀
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DING_YIMING
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-03 09:57:337楼 得分:0
    1) GPU 的很多操作,包括kernel执行,内存拷贝等都可以和CPU操作并行执行的。还有CUDA通过流的概念来支持平行操作,多个顺序操作组成一个流,多个流之间并行执行:

    参见以下章节:

    NVIDIA CUDA Compute Unified Device Architecture Programming Guide

    4.5.1.5 Asynchronous Concurrent Execution
    In order to facilitate concurrent execution between host and device, some runtime functions are asynchronous: Control is returned to the application before the device has completed the requested task. These are:

    Kernel launches through __global__ functions or cuGridLaunch() and cuGridLaunchAsync();
    The functions that perform memory copies and are suffixed with Async;
    The functions that perform device ↔ device memory copies;
    The functions that set memory.

    Applications manage concurrency through streams. A stream is a sequence of operations that execute in order. Different streams, on the other hand, may execute their operations out of order with respect to one another or concurrently.

    2) PCI-Ex16总线拥有16倍PCI-E x1的带宽。以PCI-E的全双工双向带宽计算,可达8GB/s,其它PCI-E标准的带宽速度参见下表。


    虽然PCIE带宽大,GPU内存分为On-Chip Memory and Device Memory, 从Device Memory传数据到On-Chip还需600时钟周期,而On-Chip Memory大小是很有限的。

    可参见:《利用GPU进行高性能数据并行计算》  例子中使用流的方法。

    http://topic.csdn.net/u/20080425/10/320c7e70-f3a8-43b5-acab-db9e31bac60f.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shangqiulin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-22 12:46:558楼 得分:0
    该回复于2008-10-22 13:23:23被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lijianjoin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-17 23:01:519楼 得分:0
    所有的并行化还是得要并行算法来支持的。现在好像除了矩阵运算可以并行化之外,其余的算法并行化并不是很理想的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kate_wu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-12-19 10:03:3610楼 得分:0
    GPU构建1U服务器,TESLA新动向
    本文网址:http://bbs.bitscn.com/198753 复制


    NVIDIA TESLA产品问世已经一年多了,由于主要是面向行业用户进行科学计算的产品,DIY玩家可能对TESLA并不太清楚。2008年6月,NVIDIA在德国发布了TESLA的第二代产品,TESLA 10系列方案,包括新的1U服务器和TESLA C1060处理器。借这个机会,我们简单介绍一下TESLA的构成、应用和近年来的发展。    NVIDIA的CUDA经过一段时间的宣传,玩家应该比较熟悉了,简单来说就是C语言编写的一种API,通过CUDA可以利用GPU来进行一些软件的加速运算,使GPU不仅仅在图形领域发挥作用。而TESLA正是以CUDA为基础开发的、面向行业科学计算的产品。


    塔式TESLA产品

        TESLA处理器以GPU为核心,外观来看跟显卡非常相似,只是没有显示输出接口,我们可以理解为没有视频输出接口的显卡。而这种“显卡”的主要作用就是,多块并联,通过CUDA来进行行业科学运算。和传统服务器/工作站相比,塔式TESLA主机也有CPU等常规硬件,只是内部有多块“显卡”组多路SLI,如图所示。
        了解了基本的硬件构成,对于熟悉CUDA的玩家来说,TESLA产品就非常好理解了,简单来说就是“显卡服务器”。通过多路显卡的强大并行处理能力去使一些以往主要依靠CPU计算的领域大大提速,甚至使部分传统依靠CPU无法完成的计算成为可能。
    之前我们都曾经了解过,由于显卡的多个流处理器(例如GT200核心的240个SP)并行计算的机构,通过CUDA进行某些领域应用加速运算的时候可以比单纯依靠CPU提升很多倍。例如PC玩家比较感兴趣的视频编码加速、Photoshop运算提速等。不过TESLA针对的是行业计算领域,应用重点领域自然会有所区隔。
        生命科学: 用于癌症研究的Autodock软件提速,据美国国家癌症研究所报告,模拟速度提升高达12倍,将等待结果的时间从2个小时缩短至10分钟。AutoDock的作者、美国斯克利普斯研究所Garrett Morris博士表示:“从长远角度来讲,我们只希望能够通过Silicon InformATIcs公司的产品来加速找到各种疾病的治疗新药。其中包括从癌症到阿耳茨海默氏症、从艾滋病到疟疾等各种疾病。”
        科学: 美国国家大气研究中心气象研究和预报(WRF) 模型计算,WRF的1%已通过CUDA实现,整体速度提升了20%,节省了一个星期的分析时间。


    实时观察服装设计的效果

        金融:Hanweck Associates Volera 实时期权评估引擎,利用三台NVIDIA Tesla S870实时评估美国上市的整个期权市场。
        设计: 用于服装布料物理特性的CAD设计,实时观察成品的效果。


    TESLA在多个领域发挥的作用

        此外,TESLA产品还在多项科学计算领域发挥了不小的提速作用。图片显示的是8系列TESLA产品在不同领域发挥的作用。

    传统X86架构CPU为主构建的服务器,由于自身架构方面的原因,计算集群的数量比较庞大,并且随着服务器的增加,计算能力并非直线等比上升。而GPU服务器不同,大家对GPU在构建SLI或者CrossFire系统后性能的提升幅度都比较清楚。因此多个GPU构建服务器,性能提升比传统服务器更大。


    TESLA C1060计算处理器,可以堪称没有视频输出接口的显卡

        随着NVIDIA新一代GT200核心GPU的发布,TESLA产品也以此为基础进行了更新。其中,C1060计算处理器的处理能力达到了1Tflops,“显存”也增加为4GB。
        有了这种基础,TESLA在10系列不再只是考虑组建塔式服务器,而是进军机架式服务器领域,这就是新的S1070 1U服务器系统。从构造就可以看出,该1U系统内部主要由4片“显卡”——C1060组成,其它除了散热系统和电源系统,没有别的设备了。


    核心为4片GPU的1U服务器

        S1070的计算能力达到了4Tflops,功率为700W。不过,正如我们看到的其内部架构的原因,S1070是不能单独上机架使用的,需要和CPU服务器配合使用。
        根据NVIDIA的数据,1个4核心CPU 1U服务器计算能力大约0.07Tflops,单价2000美元,功率400W。假如要构建一个100TF处理能力的数据中心,需要1429台服务器,造价310万美元,总功率571KW。如果搭配S1070 1U服务器使用,单台S1070的造价是8000美元。那么只需要25台CPU服务器和25台S1070就可以构建一个100TF的数据中心,造价31万美元,功率21KW。
        清华大学微电子研究所的邓仰东教授分析了GPU在EDA软件方面的应用。所谓EDA软件,是指设计集成电路的软件工具,例如设计CPU等。以现有45nm CPU的典型设计规模举例,大约是100M逻辑门,1G时需路径,1T版图图形。


    清华大学微电子研究所的邓仰东教授

        而自1970年以来,处理器的复杂度大大提高。1971年的Intel 4004只有2300个晶体管,而Core 2 Extreme的晶体管达到了2亿9千1百万个。相对于处理器的发展,设计团队的规模增加却不到10倍。原因就是EDA软件自动化设计能力。
        如今,主流工艺向45nm过渡,集成电路复杂度仍然在增加,并且由于高昂的制造成本,需要在设计阶段高强度验证保证首次投片成功。对于计算需求量的大幅度提升,目前主流多核CPU的性能对应提升,是非常有限的。而CUDA和TESLA产品的出现使得EDA软件具有更多的机会。
        使用CUDA加速,传统利用CPU需要1小时的全芯片STA利用GPU只需要1小时即可完成。而传统CPU进行全芯片统计性STA几乎不可行,利用GPU则是可行的。
        此外,GPU运算还有故障仿真、快速门逻辑仿真、电路布局等多方面运算的优势。由于专业性太强,这里就不过多介绍了。需要明白的就是,微电子研究所的专家对于GPU对EDA软件的加速前景非常看好。
        单就性能来看,CUDA加速和TESLA无疑是很有优势的。不过,服务器和科学计算相对来说,是一个专业性和封闭性比较强的行业。TESLA的计算方式,相对于传统来说无疑是一个革命性的挑战。并且,NVIDIA并非一个服务器供应商,不会直接销售产品给终端用户。很显然NVIDIA需要首先说服大的服务器供应商采用他们的TESLA方案。
        另外,之前不少人有疑问,对于“显卡服务器”这样新概念的产品,如果只有NVIDIA一家去推广并且和传统产品竞争,显然不如生产GPU产品的厂商一起来使用并推广更好。对此,Sumit表示,CUDA完全是开放的C语言编写的API,其它GPU厂商想要使用无需授权。但是,其它厂商GPU的架构、技术等方面,从目前来看并不太适合通过CUDA来进行加速运算。
        从前景来看,TESLA在计算方面和传统的服务器/工作站相比是很有优势的,但是面临的问题也有一些。首先NVIDIA需要在产品和软件上进一步完善,其次市场的推广和用户接受方面需要进一步加大力度。很多用户并不知道TESLA到底是做什么用的,由哪些硬件和软件组成,有什么样的处理能力,效果如何,等等。还有TESLA已经发布一年多了,公开表示支持并发售TESLA相关产品的服务器厂商还不够多。这些都还需要NVIDIA方面去做。
        国内目前已经通过测试并且开始销售TESLA服务器的生产厂商有AMAX集团,其他一些服务器生产厂商仍然在测试当中。
    【转自bbs.bitsCN.com】


    TESLA供应厂商,AMAX集团
    联系方式:
    联系人:吴怡
    电话:021-58436761-247
    网站:www.amax.com
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cudaopencl
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2009-03-24 12:46:2911楼 得分:0
    当今想要充分利用GPU的上百个核心都需进一步发展,C+G就目前来看还较难。
    特别是超级计算机的应用。不过它是一个未来的发展方向,代表一种趋势。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinacodec
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2009-03-24 20:57:2312楼 得分:0
    多线程,异步拷贝
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sicanier
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2009-06-23 20:31:4813楼 得分:0
    CUDA就是强大啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • springleo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2009-06-24 09:57:3014楼 得分:0
    GPU  和CPU 并行运算显然是可以的,但没必要把数据分成两块,因为GPU比CPU快多了,可以让CPU运行串行部分的程序

    这是类似master-slave模式

    (1)分配苦活累活给民工GPU
    (2)CPU自己也别闲着,做点轻松的小活
    (3)估计GPU快做完了,去GPU把结果取回来,


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • darkstorm2111203
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2009-06-24 12:14:1715楼 得分:0
    可以
    但是目前的CUDA事件管理用的是轮询,不是中断
    因此在查询GPU是否还在进行计算的时候,需要很高的CPU占用率
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • l7331014
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2009-06-24 18:22:3816楼 得分:0
    引用 15 楼 darkstorm2111203 的回复:
    可以
    但是目前的CUDA事件管理用的是轮询,不是中断
    因此在查询GPU是否还在进行计算的时候,需要很高的CPU占用率


    小活干完了,再查询.呵呵.
    修改 删除 举报 引用 回复