AutoDock Vina,这个工具可是大家都知道的分子对接神器,好多研究都拿它当标准。不过问题是,这玩意儿太费时间了。所以凌明他们就想出个好招,给它装上现场可编程门阵列(FPGA)做加速器,就是我们常说的Vina-FPGA。这个加速器可给力了,一下子就能让速度上去不少。可是仔细一看,发现它里面的计算模块其实用得不是很充分。因为Vina的循环结构挺复杂的,每次迭代的情况都不一样。不过有一点特别好,Vina用的是蒙特卡洛方法,每次的计算都是独立的。凌明他们就抓住这个机会,搞出了一个Vina-FPGA2,主要就是想把那些计算模块串起来搞流水线并行。 具体来说,他们先把计算任务(Task)一个一个塞进去,让它们各自独立干活儿。然后再加个标签检查的模块来协调一下,这样不同模块之间就能流水作业了。这套方案就叫Vina-FPGA2-Baseline。为了让硬件资源用得更合理,他们还把设计转化成优化问题,用强化学习的方法去解。最后在Xilinx UltraScale XCKU060这个平台上搞出来了Vina-FPGA2-Enhanced。 效果怎么样?实验数据说话!Vina-FPGA2-Enhanced比中央处理器(CPU)平均快12.6倍,比原来的Vina-FPGA还快3.3倍。跟GPU比起来的话,能效也能提高7.2倍呢。这篇文章是东南大学的凌明、唐诗迪、陈睿祺还有李鑫他们写的。