CUDA的东西

CUDA的东西,对我来说似乎太高深了一点,按照我的理解,打个简单点的比方来说明一下(理解不对的请各位指正):

1、Intel做的CPU只能进行混合加减运算,例如3+4-(5+1)这样的,而我们要做乘法运算5×4.因为CPU不支持乘法,所以我们只能用软件来实现乘法的算法:5+5+5+5.性能稍微慢点(要算3次),这个也没什么问题,但现在我们要做算1×1+2×2+……+100×100。这下惨了,算的太慢了……

2、以前Intel可以加快CPU的计算速度,所以大家也就忍忍等下一代CPU出来。等不及的用两个、四个、……、很多个CPU一块算。问题是Intel的CPU现在不能再快了,于是Intel把两个/四个CPU做在一起卖。当然了,习惯了只用一个CPU计算的,还是很慢。

3、NV做了一个专门做乘法计算的东西,叫GPU,算乘法很快,而且可以同时做10次乘法运算(恩,ATi也有这样的东西)。于是1×1+2×2+……100×100,很快就能算出结果来……于是NV说,既然我的GPU也能算数,而且比Intel的CPU快,那我可以抢Intel的饭碗了。于是弄了个CUDA出来:大家算数的时候,把所有的乘法都提取出来,都交给GPU去算,就让CPU去算加和减就好了。

4、NV忽悠了很多人,于是很多人都把自己要算数里面的乘法都单独拿出去,让NV的GPU去算……恩,补充一下,NV的GPU有很多型号,有可以同时做10次乘法的,也有同时只能做8次乘法的,也有同时只能做4次乘法的……,所以用CUDA的话,为了达到最高效率,把乘法挑出来这部工作,似乎有点痛苦。这次好不容易挑好了,NV又出来个同时可以算20次乘法的……

5、Intel不服气,不就算乘法么?于是弄了个Larrabee,干的事情跟NV的GPU差不多,虽然乘法没有NV算的快,不过Larrabee还能算加减哦(就是不能带括号)……只要不带括号的算式,或者算式在括号里面的部分,都可以直接给Larrabee去算,不用单独把乘法挑出来……而且因为本来就用括号分隔的,Intel很容易就做了个编译器,编译器可以自动把括号里面的东西交给Larrabee去算,所以大家直接输入原来的算式就可以了。

6、AMD?AMD自己既有CPU,也有算专门乘法的GPU。AMD似乎什么没干,等着MS做一个叫DirectCompute的超级牛X的计算器(软件,只能跑在Windows平台),那个计算器可以自己把乘法挑出去让GPU算……AMD自己支持这个计算器就好了……Windows以外的,有另外一个计算器叫OpenCL,AMD也支持的……

以上是现状,将来么?不知道,如果NV能让CUDA接受到一条算式就能够自动把乘法都挑出来让GPU去算,那么应该会是NV赢……或者Intel能让Larrabee算乘法比NV的GPU快,那么Intel会赢……如果大家都用MS的DirectCompute计算器或者OpenCL算数,AMD还有点机会(只要AMD的GPU乘法算的足够快)

你可能感兴趣的:(算法,windows,工作,CUDA,平台,编译器)