谨以此文,向陈卫中先生以及所有在推广FPGA技术中默默做出贡献的人们致敬!
在两年多前,陈卫中先生找到我。希望我能撰写一本介绍基于OpenCL流程来开发FPGA的书。我当时并没有很愿意答应,因为那时候我刚刚从瑞典回来不久,学术研究正进入出成果的关键期。另外我对于写一本书实在是没有信心,对自己驾驭这么长的文字的能力实在是没有信心。但后来在陈总的一再坚持下,我也还是硬着头皮上了。原以为3个月时间足够搞定了,结果没想到写了5个多月还是没有搞定。后来加上三审三校,持续了快7个月才终于出版。期间陈总一直督促让我不要懈怠,力争尽快抢占先机出版。
这本书在当时出版的时候也是费尽波折。现在按照“市场规律”办事,出版社也确实是要自负盈亏的。当时找了好几家出版社,都要求做“市场评估”。按照诚信的原则,我给出的市场评估就是:“不知道”。那时候异构计算还是GPU+CPU的代名词,各类技术人员对于用FPGA+CPU来构建是异构计算平台是陌生甚至是抵触的。作为传统的FPGA开发人员来说,用基于OpenCL的开发流程来完成FPGA的开发不但意味着自己要重新学习一整套知识和开发流程,在很多应用场景下确实也满足不了需求。而有潜力成为这一开发流程的主要使用者的软件工程师,则对FPGA完全不了解。因此站在当时的时间点上看这本书的未来市场,确实难以预料。那么如实相告的结果就是很多家出版社评估下来,要么婉言谢绝,要么索要高额的出版费。最后也是在陈总的全力协调和支持下,书才能够顺利出版。
托人工智能和阿尔法狗的福,作为人工智能的实现平台,异构计算这个在以前算是非常生僻的领域也一起被带火了一把。作为构建异构计算的方案之一,CPU+FPGA的计算模式由于其具备比其它竞争平台更高的能效而被大家重视起来。目前已经有大量的互联网公司、金融机构、行业应用公司开始部署CPU+FPGA的异构计算平台。而作为能够快速开发和部署CPU+FPGA的开发流程,基于OpenCL的开发流程也一并被带火了。一时间咨询、讨论OpenCL开发流程的人就多了起来。作为第一本也是目前唯一一门专门讨论FPGA异构计算的技术类书籍,本书的销量也被小小的带火了一把。经过两次加印,目前《FPGA异构计算》的销量已经超过了3000本。作为一本非常小众的专业书籍,取得这样的销量已实属不易。这一成果的取得也离不开陈总的大力支持和推广宣传,ChinaAET网站的支持和多次活动配合。
书虽然顺利出版了而且还卖的不错,但《FPGA异构计算》这本书还留下了很多遗憾。最大的遗憾是这本书是以较早期的OpenCL SDK为基础编写了,其版本号是0.9。换言之,我们当时用的还不是正式发布版。为什么不用更新的版本来做呢?说起来挺心酸的,因为穷!OpenCL SDK需要和有特定的BSP支持的特定板卡配合使用。而正式版本发布后却不支持当时我们使用的DE4-530开发板。而当时能够支持正式版本的只有DE5-net系列板卡,几万人民币的采购费用对于没有科研经费支持的我们来说已经属于天价。而直到2015年8月我们获得了研究生电子设计大赛的Altera专项一等奖以后,通过陈总从中协调把奖品从DE4开发板换DE5-net以后我们才拥有了可以支持正式版OpenCL SDK的硬件平台。而近两年来FPGA异构计算技术发展迅猛,无论是工具、开发流程还是优化方法都有了非常显著的进步。这就使得旧版的书显得过于落伍,也容易给大家学习时造成不好的影响。
第二大遗憾是由于当时出书的时水平有限且时间比较紧张,书本中有很多错误未来得及及时校对,也有很多说法现在看来不够准确。虽然书上市以后收到的总体反馈还是很不错的,但还是有不少读者提出了尖锐的批评意见。在此对提出批评的读者们表示感谢,在阅读过程中给你们造成的不便我们深表歉意。
第三大遗憾是由于当时手头积累的案例和成果还不多,在书里面只写了少量简单的案例。同时由于这些案例都是基于DE4-530开发的,后期由于开发工具的升级使得这些案例的源代码通用性存在一定的问题,准备实施的案例开源计划也就失去了意义。有很多热心的读者一直关心何时能够把案例开源,由于案例迟迟未能开源而给大家造成的困扰我们同样深表歉意。
针对这三大遗憾,此次再版我们将采取以下措施来加以改善。
首先我们将使用Quartus II 16.0及与之配套的OpenCL SDK为基础来撰写本书的第二版,从介绍基本软件安装和环境搭建开始对FPGA异构计算加以介绍。由于现在使用Linux开发环境越来越多,本书第二版也将介绍Linux下如何搭建开发环境。第二版介绍的所有案例也都将在实际的开发环境中验证并验证各种最新的优化方法对其优化后取得的效果。
其次这次我们将以连载的形式在ChinaAET上全文公开我们要撰写的内容,欢迎各位网友积极的评价和挑错。这其实也是目前主流的一种“畅销书销售模式”。无论是像“鬼吹灯”这样的小说,还是像“大话通信”这样的技术书籍,都是通过先连载后出版的方式来销售的。而且从实际的销售结果来看,销量普遍都还不错。而在网上连载的过程实际上也成了一个“众包”的纠错过程,通过网友们的讨论也可以充分改进和丰富书的内容。但这一点不是每个出版社都同意的。有些出版社还是想着如果网上都可以看了,书的销量是不是会受到影响。但是目前我们有意向合作的这家出版社,完全同意这样的做法。他们还推荐我们建立微信公众号来推广这本书。但目前我们由于有了ChinaAET的支持,应该不用再建单独的微信公众号了。
最后我们将联合一切可以联合的力量,尽量的来丰富案例,并尽力开源这些案例。目前我们已经和多个高校老师、公司已经初步达成了合作意向。同时我们自己在近两年多来的研究中也积累了更多的案例,我们自己的案例将首先开源出来。目前准备开源的第一部分是KNN和K-means这两个最简单也最常用的机器学习算法。
现在的FPGA异构计算,犹如春天刚刚划开的江面,江水挣脱了冰的束缚正在奔涌而下。而为了这个春天,江水已经默默的在冰面下流淌了整整一个冬季。希望更多有兴趣的朋友加入到FPGA异构计算的学习和讨论的行列中,如同这春天滚滚而下的江水,去冲击残存在江面上坚冰。