职场小钢炮 职场小钢炮男主角( 三 )


tRAS:Row Active Time 。在激活一行的命令到预充电命令前的准备时间 。可以看到这个时钟周期就比较大了 。
CL:CAS Latency,Column Access Strobe (CAS) latency,从系统发送命令到内存开始到读写特定列所消耗的时钟周期数 。时间 。也就是说,如果我们已经指定了我们要从某一行读内存,但我们要从这一行里取多个数值,每次读写数值的时候这个CL是无可避免要消耗掉的 。
tRCD:RAS to CAS Delay,激活内存中的一行后(激活动作)到读写动作(READ/WRITE)所需要消耗的时间 。如果我们是在同一行进行读写的话,不需要重新激活行的情况下,tRCD的时间只需要消耗一次 。
tRP:Row Precharge Time 。有的时候我们需要取消一行的激活,再去激活另一行以读取数据,这一部分需要对内存行进行充电,这个时间的损耗就是tRP 。
tRAS:Row Active Time 。在激活一行的命令到预充电命令前的准备时间 。可以看到这个时钟周期就比较大了 。

职场小钢炮 职场小钢炮男主角

文章插图
假设我们有一个很大的1维的数组和一堆很小的1维数组,如果前者安排在了连续空间里,那么tRCD、tRP、tRAS的损耗就小,否则tRCD/tRP/tRAS的时间损耗就比较大,这些都是overhead 。一个好的BLAS不仅能够利用好的指令集高速计算出我们需要的结果,同时对于底层C代码对内存的管理应该也有一个较清楚的认识 。
最后还是告诫大家,不要迷信高主频的内存,如果你工作在1600MHz的内存CL=8,每次取出一个数据的时间和工作在2000MHz@CL=10,2400MHz@CL=12的内存就是一个速度,根本起不到超频提速的作用 。对于给内存超频的狂热玩家经常能发现,超频之后为了保证内存工作稳定只能调高CL,这不是跟没超频一样吗?又能超频,又能保证低CL的内存一般都是大厂某一批次品质特别好的产品,而如果品质比较均匀的话,人家自己不会标一个更高的参数来卖吗?只有品质不均匀的产品你才有机会通过超频或者降低CL来发现自己买到了超值的内存 。要说我的经验的话,我对超频已经不感冒了,一般只会看DDR4(不能插在只支持DDR3的主板上,反之亦然)的频率和CL,买回来直接默认使用 。
FPGA篇
图:之前的双雄,现在有一家被收购
在Intel收购FPGA两大巨头之一的Altera之后,现在我们在FPGA市场上就有个新的双雄:Xilinx和Intel 。前一阵子我还在婊Xilinx长期做视频采集产品,对深度学习嗅觉太差,听说百度用的是Xilinx的方案,我们就来看一下国内拿FPGA做深度学习的厂子,有的自己做基础设施,有的卖产品,有的搭载云服务,各有侧重,今天就不赘述了,因为有人会问了——
『你说的这个FPGA,我怎么没听说过啊 。』
是的,就像你5年前不知道NVidia做GPGPU卡已经如火如荼一样自然,因为它已经改变了行业生态,却还没有改变人类的生活,不做技术也不做技术公司投资的你,嗅觉不够灵敏是很自然的事情 。
如果说我们的CPU、GPU是依靠着定长流水线+接受高级指令+转化低级指令+计算实现『通用计算的话』,FPGA(Field-Programmable Gate Array)就是一个灵活性不算高,但是用可编程门阵列实现指令、算力也不低的这样一种方案,它的灵活性介于CPU/GPU和ASIC之间 。好吧,又是一个新名词,ASIC?Application-specific integrated circuit,专用集成电路,常见于只做SHA256一个任务的比特币矿机 。
因为每次改变计算任务或者网络结构都要重新『烧』一次FPGA,我们还不如用FPGA来充当『训练好的模型对外提供深度学习预测』这样一个角色 。GPU训练,FPGA预测 。All good 。在云端,Intel公司已经被解除了Xeon Phi产品的禁运,并且希望在2017Q3 推出 CPU / XeonPhi / Altera X系列异构计算HPC私有云服务,但由于每次新部署的warm up都有几十毫秒延迟,所以不如只用FPGA来做Inference,也就是模型建立好之后的预测部分 。