第一次知道有显卡(GPU)编程这个东西,是去年比特币最热门的时候,看了几篇关于比特币的文章,说比特币挖矿要靠显卡,CPU的速度与GPU根本就没法比,于是就非常好奇,显卡是什么神奇的东西?为什么运算速度会比CPU快很多?当时也只是好奇而已,根本没想过这东西会与自己有任何关系。
去年年底的时候,我开始研究机器学习,试着用PHP编了几个遗传算法和神经网络算法的程序,发现很有趣,功能很强大,我一直想做医学方面的人工智能开发,觉得机器学习这个东西很有用,但就是运算速度太慢,估算了一下按程序的运行速度,要初略的解决我的问题至少要算一两个星期,如果要以较高的精确度解决我的问题,可能要算几个月。仔细权衡利弊之后,我决定从头学C语言,毕竟C是高级语言中运算速度最快的(现在后悔,当时要从C++开始学就更好了)。从初学到把我的PHP程序改写为C,一共花了两个星期左右,可喜的是运算速度提高了大约150倍。
后来发现神经网络用遗传算法来驱动远不如用退火算法驱动效率高,并且神经网络算法可以有很多冗余计算可以去掉,这样一来,我的算法效率前前后后又提高了一万多倍,与最初的PHP程序相比,运算效率已经提高了大约200万倍。 尽管如此,我还是不满意,因为问题稍微复杂些,且要求的精度再高些,我的电脑还是要没日没夜转好几天,我希望程序运算速度能够再有至少一个数量级的提升,在软件上能改进的地方几乎都改进了,只能在硬件上想办法了。
我本以为,按照摩尔定律,CPU的运算速度每一年半要提升一倍,不怕大家笑话,我现在的电脑是2007年买的,已经过去七年了,最新的CPU速度应该提升二十多倍了,于是我上网查了一下,竟然发现最新款的电脑,CPU的主频不过比我的多10%左右,这是怎么回事?再查才知道,原来CPU的摩尔定律到2008年左右就失效了,这么多年来CPU主频都没有大的变化,主要靠不断增加CPU的数量(双核、四核、八核.......)进一步提高电脑性能,但这种多核结构对于我要解决的问题,帮助似乎并不明显。
于是我就想到比特币文章中提到的GPU运算——