首页 新闻 论坛 群组 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  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-15 22:40:041楼 得分:0
    当然可以并行了,cpu可以干别的了,等会回来拿结果就行了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-18 22:02:122楼 得分:0
    理论上讲,应该可以做到CPU与GPU并行运算,但实际应用上,我们一般不会这样做。
    这里我们所说的并行运算,指的是GPU内部的并行运算,而不是GPU与CPU之间的并行。
    后者我觉得意义不大。你想一想,如果GPU足够能大,瞬间就把数据都算好了,
    那你CPU还有时间分心去做其它事情吗?


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

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved