V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Actrace
V2EX  ›  程序员

CUDA 用来写服务器程序会咋样?

  •  
  •   Actrace · 2014-07-06 00:39:53 +08:00 · 3798 次点击
    这是一个创建于 3554 天前的主题,其中的信息可能已经有所发展或是发生改变。
    19 条回复    2014-07-06 21:43:50 +08:00
    echo1937
        1
    echo1937  
       2014-07-06 00:45:11 +08:00
    CUDA 你不上专业计算卡的话,会有精度问题吗?
    fredcc
        2
    fredcc  
       2014-07-06 02:01:52 +08:00
    请问除了特定应用,cuda哪里比cpu强了。
    yangff
        3
    yangff  
       2014-07-06 02:14:06 +08:00
    几乎不可行。
    yangff
        4
    yangff  
       2014-07-06 02:14:17 +08:00
    瓶颈不在这里。
    loading
        5
    loading  
       2014-07-06 07:14:10 +08:00 via Android
    然后你会遇到浮点数
    wy315700
        6
    wy315700  
       2014-07-06 07:44:10 +08:00
    服务器的瓶颈 一般在IO吧
    Zhang
        7
    Zhang  
       2014-07-06 08:15:58 +08:00
    不怎样,估计会更慢。
    wy315700
        8
    wy315700  
       2014-07-06 08:21:05 +08:00
    想起来了,GPU适合的不是高并发,而是高并行。
    VYSE
        9
    VYSE  
       2014-07-06 09:36:41 +08:00 via Android
    GPU的特长在于较短简单指令的反复执行,适合流水作业,复杂逻辑频繁从BUS MOVE数据还是算了吧。
    所以超算里GPU只是作为某些算法的加速器。
    当然后端需要某些用途加速的话肯定会用,例如某些视频网站
    chaixl
        10
    chaixl  
       2014-07-06 09:54:00 +08:00
    GPU通用计算的强项是高度密集的并行运算。不是高并发,两回事。
    gateswong
        11
    gateswong  
       2014-07-06 11:55:04 +08:00
    CUDA并行处理是特么快

    但是数据的传递拷贝太特么太特么太特么太特么慢了……
    chenha0
        12
    chenha0  
       2014-07-06 12:54:35 +08:00
    并发和并行怎么能简单画等号
    wdlth
        13
    wdlth  
       2014-07-06 12:55:11 +08:00
    我认为完全就是南辕北辙,缘木求鱼,首先CUDA的重点是高并行的密集的浮点计算,比如视频转换、科学计算,而大部分的程序并不是这类领域的,用CUDA只会是适得其反。
    Actrace
        14
    Actrace  
    OP
       2014-07-06 16:25:22 +08:00
    @gateswong 也就是说,GPU解决了数据的传递拷贝速度慢问题,就可以完爆CPU了?

    @chenha0 其实也不是想说简单划等号,只不过GPU这种大规模流水核心更加符合多路执行的理念.我个人是比较看好CUDA的,如果英伟达能专心把GPU计算的核心架构向CPU方向平移,也许能在某一天取代CPU也说不定,分时操作系统切换任务的性能代价是很大的.
    dndx
        15
    dndx  
       2014-07-06 16:45:02 +08:00
    对于大多数网络应用来说,瓶颈都是在 IO ,除非是特殊领域,CPU 从来就不是瓶颈。
    madeye
        16
    madeye  
       2014-07-06 16:58:33 +08:00
    对于服务器类的应用,特别是数据库、文本处理相关的应用,现在的主要瓶颈在 PCI-E,即 HOST 到 GPU 的带宽。而下一代 Power(NVLINK) 和 SoC (Denver)量产以后,有希望解决这个问题。

    一些数据可以参考我们组之前做的加速海量网页索引性能的尝试: http://on-demand.gputechconf.com/gtc/2014/presentations/S4506-indexing-documents-on-gpu-web-rt.pdf
    akfish
        17
    akfish  
       2014-07-06 16:59:26 +08:00
    除了楼上说的原因以外,GPU能做的事情并不那么通用,虽然CUDA、OpenCL都是用于通用计算的,但核心显然是在“计算”,而非“通用”。
    曾经看到一个项目,尝试在GPU上跑JS解释器,结果性能非常惨淡。
    http://www.slideshare.net/jarrednicholls/javascript-on-the-gpu
    而另外的项目,只着重用GPU对JS里并行计算进行加速,对于较小的数据反而较慢,只有较大的数据才会有加速:
    http://on-demand.gputechconf.com/gtc/2014/presentations/S4168-accelerated-javascript-accessing-gpus.pdf
    Actrace
        18
    Actrace  
    OP
       2014-07-06 21:00:37 +08:00
    @akfish
    我只是举个例子。
    其实最想表达的是"GPU这种架构更适合作为现代计算机系统的硬件架构"。
    并不是指现在就要拿CUDA的GPU去跟CPU做何种对比,甚至取代。
    所以我相信未来GPU会成为整个计算机系统的核心,这个就只能等时间来验证一切了。
    在没有机动车之前,人们总是想着让马跑得更快。
    akfish
        19
    akfish  
       2014-07-06 21:43:50 +08:00
    @Actrace 好吧。

    个人认为GPU成为计算系统核心不现实,快不是一切。OS内核跑在哪里,哪里才是核心。而OS的任务,是不符合GPU的计算模型的。即使这一点能突破,整个产业也不会花费大量的时间和精力去把已有的大量软件、硬件资源,向GPU中心的计算架构上移植。

    GPU和CPU并不是机动车和马的关系。GPU会越来越重要,但不会成为核心。只会作为增强计算性能、完成特定任务的外设出现(包括量子计算机,目前也是按这种计算模型在发展)。

    以后的发展更有可能是淡化GPU与CPU在编程模型上的差异,比如在底层(如OS层)把适当的代码JIT到GPU上执行。取代现在不可能,以后也不可能,融合才是唯一的可能。

    文字游戏一点的话,要是真有作为系统核心的GPU,在逻辑上会自动更名为CPU,CPU里的C不是白叫的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1018 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:24 · PVG 03:24 · LAX 12:24 · JFK 15:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.