内容摘要:科研离不开计算,搭建合适的计算环境可以提高解决问题的效率。这里谈到的计算环境可以分为软件环境和硬件环境。从汇编到高级语言,从手机到超级计算机,共同构成了可解决多种需求的计算基础资源。今天我们聊聊如何选择...

1、Matlab还是Python?
基于云平台的软硬件生态系统不断地改变着传统的数据处理与分析模式。以Hadoop和Spark为代表的大数据分析工具和实现卷积神经网络(CNN)等AI算法的Tensorflow,Pytorch框架,这些大数据和人工智能领域的最新技术应用,都具有一定的平台依赖性。
如果你熟悉从Fortran到Matlab等不同语言的各种编程体验,会发现使用Fortran这类语言写程序,你需要考虑很多事情,小到每步计算中的数组大小分配,大到如何通过MPI接口协调多个进程之间的信息交互。优点是一旦程序写好,计算效率高。
而在Matlab等高级语言出现后,在各种工具包的加持下,解决很多复杂的计算问题都不是事了。但遗憾的事,Matlab的软件许可真的非常昂贵。看过前面文章的小盆朋友们知道,我很推荐Python,对!我认为现在如果你刚开始科研生涯,可以毫不犹豫地从python开始。
上来就开始解决核心的科研问题,比整天捣鼓那些别人已经做的很成熟问题强。现在的很多大数据和AI分析基础平台,都具有平台依赖性,对用户具有较高的技术门槛要求,学习曲线陡峭。把时间花在刀刃上更好!
特别是对于研发阶段技术成熟度还不高的科研原型化成果,更需要大量的调试和多用户协作,需要具有代码管理、日志查看、支持自动集成和部署特性的一体化平台系统支撑。这也是我们前面写这些短文来一点点介绍的目的。
2、大数据与HPC计算环境
近年来随着大数据和人工智能等技术的发展,地球物理数据处理与应用模式也正在逐渐地发生深刻地变革。面向数据分析、技术研发、应用的生态系统平台在架构上存在较大差异(图1)。

在大数据分析和AI模型训练的应用场景下,由于对进程之间通信的要求不高,所以天然适合GPU类型的计算框架。我们知道由于发热量问题和光速极限,单核CPU的主频提高受到了限制,随之而来的解决方案是多核。现在一个CPU之内的核越来越多,但如也需要你的程序能合理地用好多核资源。
我曾经对比过在Matlab和Python的Numpy下,来求解大规模线性方程组问题,CPU内的多核会自动加速,用户不用去考虑如何实现的。
谈到并行我们知道常见的有MPI和OpenMP两种,MPI最早用于HPC应用的节点之间通信,有很多版本。对于CPU内的多核,OpenMP这种单节点内的并行方案更适合。到了GPU时代,在一个计算核心中,有了更多的小核心,虽然每一个核心的计算能力远不及CPU,但是对于可线性分解的问题在GPU上就可以大幅加速。
网友评论