支付宝和工业仿真软件似乎没有什么交集,但在网上多次看到类似的观点和言论:工业软件有那么难吗,让阿里开发一个不就行了?工业软件性能太差,运行时间太长,不能让阿里优化一下?
用过支付宝的人都有体验,在交易时,基本在秒级以内完成。有人会问类似双十一高峰,为什么这些操作都能在毫秒级完成,而工业仿真软件即使面对千万量级的数据,使用服务器,也要运行数天之久,工业仿真软件能否像支付宝一样,在秒级内完成仿真计算呢?
支付宝的快和工业软件的慢,其根源在于两者处理的数据和业务逻辑大相径庭。支付宝的每笔数据都是独立的,哪怕千亿级别的数据,不同地区的交易采用各自独立的服务器,数据和数据之间没有关联,很容易采用分治的策略,可以根据数据的特点,比如区域,年龄段,时间,交易额,规模等作出相应的分类,通过队列,映射,缓存等软硬件方法,针对不同的属性数据做出相应的对策,加速数据的处理操作。
举个简单例子,要处理无数个小球,这些小球有其属性,包括位置分布,重量,颜色,大小都不相同,可以根据这些属性还有数量,规模等进行分类,分解成不同的任务处理,不同的任务可以分配合适的资源。而仿真软件的数据就像是小球都被挂在渔网的节点上一样,小球通过网构成了一个整体,触动一个小球,会对所有小球产生影响。所以工业仿真软件处理的模型不管逻辑上还是数据上都是一个整体。
为了加速仿真,仿真软件在算法上也采用了很多加速方法,除了底层基本算法的改进外,最主要的方法也是采用分治的思想,即把模型分解成小的部分,同时处理,比如几何视图操作上的八叉树,将数据放在树结构中,避免不必要的计算;通过模型降阶(Model Order Reduction)方法降低求解模型的耦合性;再比如快速多级,也是典型的分治策略求解大规模满秩线性方程组。但是这种分治只能在高纬度上进行,最终分治的数据规模还是很大,算法复杂度仍然最低保持在N*log(N)。另外对于大部分模型求解,需要采用迭代算法,这也是性能消耗的大头。所以相当时间内,不管硬件软件怎么发展,工业仿真软性能瓶颈始终存在。当然如果量子计算出现颠覆性的突破,另当别论。
回到开头的问题,虽然支付宝改变了大家的生活方式,但公司本质上属于软件+金融公司,靠服务流量赚钱,在工业软件方面没有积累,没有人才,也没有动力去做。工业软件的工业+软件,两者都必不可缺。所以希望支付宝来做工业软件,纯属一厢情愿。
工业仿真软件的性能也是软件开发中除了功能以外的重中之重,后续会更详细介绍相关内容:
工业仿真软件研发性能之道
联系客服