如果同样的算法,在CPU上运行 和 在 GPU上运行哪个更快,因为我知道有张显卡(样卡)已经拥有72处理核了。 因为这个算法本身使用C语言写的,不知道如果在GPU上运算是否改动很大?
1:您题目中问的,“用OCL好还是CUDA好”,回答是,都好,一般而言都能完成您的需求,这主要看您的喜好。OCL可以用在其他公司的显卡和CPU上,CUDA目前只能在N卡上;不过CUDA的runtime API可能简洁易用一些。
2:您在正文中询问的“同样算法CPU快还是GPU快”,回答是,不一定,适合CPU的CPU快,适合GPU的算法GPU快。此问题类似于“跑车和卡车那个快?”,一般而言,跑赛道当然是跑车快,但是拉上10吨的货物,肯定是卡车快。同时,即使是适合GPU的算法,最终速度也和实现水平有关,在没优化好的时候,GPU也可以慢很多。
3:关于您72核样卡的问题。需要说明的是,GPU的“核”(SP/CUDA Core)相比CPU的 CPU Core,是非常轻量级的,两者不能直接用数量比较。目前的N家的GPU,多的可以有1000多CUDA core。
4:是否适合在GPU上跑,只和算法有关,而和使用何种语言无关。不过从C语言写成的CPU代码来改写成CUDA C的代码,还是要比比如说FORTRAN的CPU代码改成CUDA C方便一些。当然FORTRAN的代码可以考虑用CUDA FORTRAN来实现。
大致如上,仅供参考。
祝您编码愉快~
真心感激!ICE的专业回答!我再去查查资料。
你可以看一些基本的CUDA的资料,然后对照你的算法,看看是否能在GPU上实现.CUDA是一种SIMT模式,其并行的方式是SIMD,如果你的算法符合,那么可以考虑在GPU上实现!