第44章 GPU的妙用

深夜的宿舍内,只有三人起伏的鼾声。

齐凡逛遍外网各大技术论坛,还有各类论文数据库,以及各种大小期刊数据库。

他发现一个可悲的现实--没人想过要用GPU来跑深度学习模型。

所谓的深度学习,就是N层神经网络的叠加。就好比是千层糕,每一层神经网络就相当于千层糕中的一层。于是一层又一层的神经网络叠加,这块千层糕就越来高。相对来说,就是神经网络的深度越来越深。

因此,采用多层神经网络的模型才会被称为深度学习模型。

而神经网络层数越多,模型的深度越深,势必就会带来运算量的增加。

虽然深度学习的概念早就被提出了,可是碍于CPU运算能力的限制,也就是碍于硬件能力的限制,一直没得到长足发展。

齐凡好奇。既然CPU的运算量能力不足,那干嘛不上超算,搞它个一堆CPU。众人拾柴火焰高,几百个CPU一块运算,就不信这还不够。

正在他好奇之间,脑海中的系统面板有了变化。

【任务--开启并行计算。奖励:经验、积分、一次中级转盘奖励。】

齐凡嘴角邪魅一笑。他如今对这系统的尿性已经有十足了解。每当自己接触新东西时,就会触发这系统的提示。

既然眼下系统提示了,那说明自己的路子就是正确的。

并行计算?多核CPU还是用GPU?

齐凡查了下多核CPU的现状。除了那些被当成国之重器的超级计算机,一般的服务器撑死了十几个CPU就不得了了。

这系统不可能指引自己去碰超级计算机的,因为那玩意儿根本就不是如今的自己能触碰的。况且这任务的奖励是一次中级转盘,从奖励来看也不是难于上青天的任务。

那也就只有两种可能。用多核心服务器或者是用GPU。

齐凡先查了下CPU和GPU的运算原理。CPU和GPU相比,前者更像是串行计算,就是一条条数据排着队一次被CPU处理。而GPU则不同,它可以让格式雷同的数据,排排站手牵手并排地被它处理。

多核心的CPU本身并未改变CPU的计算方式,只是相当于多找了些帮手。一个核心的CPU就是一个帮手,多核心CPU相当于一群人一起干活,但是每个人干活的方式却并未改变。

那答案就呼之欲出了,肯定是用GPU来支持并行计算。

而眼下遗憾的是,齐凡并未在网上找到任何相关的资料。不过呢,这既是他的麻烦,也是他的机会。

因为没人做过,他就成了那个第一个吃螃蟹的人。

齐凡当即上英威达的官网,下载了GTX 680的底层库。他打算动手自己写。

这底层库非常不好找,在英威达官网极其角落的地方。或许连英威达官方都觉得不会有人拿显卡来跑图形计算以外的工作。底层库被打开后,也证实了这一点。

整个底层库的应用介绍中,全部都是关于图形计算的。齐凡无奈吐槽:可怕的惯性思维,待我来给你们一点小小的震撼。

贤者饮料被大口大口的灌下,齐凡快速检索着底层库的英文文档。

这显卡底层库的设计初衷,是给Photoshop和CAD等绘图软件用的。因而提供的接口文档简直稀烂。英威达官方就没打算给个人开发者使用,而对于Photoshop那类大公司产品,英威达自然会派专业工程师负责对接。

齐凡猜测,英威达肯定不会给那些大公司也提供这种晦涩难懂的破文档。这放在官网上的底层库鬼知道是什么垃圾版本,弄不好是bug一堆。可无奈,他眼下只好先凑合拿来用用。因为他要是给英威达官方发邮件,对方肯定不会鸟他。

临近拂晓,齐凡总算用C++写了个英威达显卡的Python接口库。测试了下,果然bug一堆。而且细看那些bug,很多都是无厘头,在文档上找不到半点信息的。

无奈,齐凡只好想了个折中的办法--跑去github吐槽。

齐凡登录github账号。自己的那个去除马赛克项目又涨了不少start和评论。

他灵机一动,正好利用这波小热度。

于是他fork了一个去除马赛克2.0版本。

很多人都在呼吁他出2.0版本,现在2.0版本来了。

齐凡写了个项目介绍。

“hello, everyone. V2.0 is coming.”

“i got a good ideal, we can use deap learning with GPU for this work.”

“now, all what i need is the fucking NVIDIA could offer their complete basic lib.”

齐凡的意思是:他打算用GPU加持深度学习来出去除马赛克的第二版,现在万事俱备只欠东风,他需要英威达的完整底层库。

齐凡项目刚创建,他的这个新项目就上了github首页推荐。然后项目第一条评论来自github官方维护人员。

“it's a wonderful ideal, benefiting all humanity.”(这是一个造福全人类的伟大创意)

齐凡只能感慨:果然有些东西是可以跨越种族和文化的界限。

完成这一整套操作后,齐凡拖着疲惫的身躯爬上床睡觉。

当他醒来时,宿舍已经空无一人。手机上的时间显示是下午一点。微信上自然少不了李月的消息。

齐凡先给李月回了个电话,告诉对方自己还活着。然后洗漱完毕去食堂吃饭。

至于实验楼那边,许阳三人按着先前齐凡的思路按部就班,齐凡以近日课业繁忙为借口,最近都不打算再去了。

回到宿舍后,齐凡第一件事自然是登录github。

我擦。他一声惊呼。

新创建的V2.0版本,一行代码都没有,只有一个项目介绍文件,可竟然一夜之间就获得了上千个点赞。

来自世界各地的屌丝们,对于齐凡用深度学习来去除马赛克的想法,佩服的五体投地。他们给齐凡升级了外号。

原先齐凡的外号是driver master,简称DM。如今他的外号是:rocket driver,简称RD。

大致意思是:齐凡的车速像火箭一样快,让众人始料未及。

全球各大技术公司的CTO们,往往都在github这个顶尖开源网站上有账号,英威达的CTO也不例外。

于是,英威达的CTO被一群人at。

“offer your fucking basic lib, or we will kick your ass.”

“yeah, right now, if u don't want to suck my dick.”

来自世界各地的屌丝们情绪高涨,嚷嚷着让英威达CTO快点吧完整的底层库交出来,否则就要他好看。

在一众技术屌丝们的狂轰滥炸之下,英威达CTO总算现身了。因为他要是再不现身,都有人号称要去英威达总部和他决斗。

最后,齐凡真的收到了来自英威达CTO个人邮箱发来的一封邮件。

邮件附件包含了最新的英威达显卡底层库,而且对方还表示:有任何问题都可以给他写邮件反馈。同时对方还向齐凡发来了一份实习邀请。因为齐凡在github的个人简介中有提到自己的年龄和教育背景。

齐凡当然是先感谢了对方的帮助,然后婉拒了英威达CTO的实习邀约。因为他觉得自己如今的实力还不够,正是需要学习的时候。况且,远渡重洋好麻烦的。护照、路费,一堆的问题要解决。

齐凡将最新的底层库下载下来,果然一下子就少了很多bug,他当即投入到了编码工作中。