zoukankan      html  css  js  c++  java
  • 重新认识Intel软件产品-从编译器到FFT、LAPACK、SCALAPACK、ITC、ITA应有尽有

    首先是编译器,这个不多说了,谁都知道。

    更重要的是Intel的数学库,称为Math Kernel Library-MKL

    还有,Intel有一套Cluster Tools,里面包含了Cluster MKL、ITC、ITA、Intel MPI等。

    我们都知道,高性能计算大多用于工程计算,目前的工程计算主要需要这样几个东西:FFT(快速傅立叶变换)、LAPACK(线性代数Package)、BLAS(基础线性代数函数库)、SCAPACK(高扩展的LAPACK,主要用于分布式内存体系结构,也就是Cluster结构的并行化的LAPACK)。这些东西都有免费的开源实现,如FFTW(MIT做的FFT)、LAPACK和SCALAPACK都有免费实现,其中SCALAPACK还需要BLACS(基础线性代数通讯函数库)、BLAS也有atlas的、GOTO的等等。这个东西以前没接触过,这里有张Intel提供的图,很直观明了(从图上就能看出这个玩意是基于MPI的一个针对线性代数的库):

    附件1

    针对上面,Intel的MKL和Cluster MKL都提供了,而且性能都比以上开源的那些要好的多!其中,MKL能提供BLAS、LAPACK、FFT,Cluster MKL在此基础上,还提供了SCALAPACK和经过优化的Linpack执行程序-xhpl。所以,我们给集群用户推荐Intel的MKL,应该推Cluster MKL才对!以前居然都不知道!

    举两个例子吧,Linpack的xhpl就需要BLAS的支持;GROMACS需要FFTW;并行版的VASP需要FFT、SCALAPACK、BLAS。这些其实都可以直接用Intel的Cluster MKL,不需要手动再去自己编译那些开源的库了,而且性能更好!

    不过这里有一个小麻烦,就是FFT。快速傅立叶变换有很多很多种,FFTW,也就是MIT做的这个现在使用的非常广泛,很多代码都是针对这个库写的,而Intel在此基础上做了一个改进,同时,Intel的FFT的API也和FFTW不完全一样,这就导致了我们迁移应用的时候会带来一些困难和问题。比如,一个应用是针对FFTW写的,现在要迁移到Intel的MKL或Cluster MKL上来,就有可能需要做一些修改,因为两者的API不完全一样,这里有个Intel的官方文档,有一些这方面的Instruction:

    OK,通过上面的描述,现在我们应该知道,对于这些工程数学库来说,Intel的MKL是很好的解决方案,除了FFT有点小麻烦。:)

    最后,来看一下Intel整个软件产品线,做一些简单的讲解:

    1、Intel Compilers-不说了

    2、vTune - 这是一个非常power的性能调优工具,因为首先他不需要被调试的程序有源码,只要有可执行文件就行;其次,他可以分析目标,然后给出目标每句代码占用了多少个时钟周期,在程序的执行过程中,可以看到L1 Cache、L2 Cache等的hitrate!所以,非常强大。但是,vTune似乎只能调试SMP结构上的程序,无法调试Cluster结构上的程序。

    3、Intel Performance Primitives(IPP)-这个东东好像是用来做视频/音频编解码的,和HPC关系不大

    4、Intel Math Kernel Library和Intel Cluster Math Kernel Library-上面讲过了

    5、Intel Thread Tools-线程调试工具,和HPC关系不大,不谈了

    6、Intel Cluster Toolkit-其实这个东东就是整合了Intel MPI、ITC、ITA和Intel Cluster MKL的一个总包!呵呵,买这一个包就不用单独买那些了,也会便宜一些吧,HOHO

    7、Intel Trace Analyser和Intel Trace Collector(ITA和ITC)-Cluster程序的调优工具。首先,我们在链接一个程序的时候,要把ITC的库链接进去,然后,程序跑完之后,ITC就会生成一堆数据文件,然后,用ITA就可以看到分析结果了。他主要能分析程序中计算和通信的比重,从而告诉我们程序的瓶颈在哪。换句话说,我们只要拥有一个程序的.o文件或者是源文件,就可以为这个程序分析了(只有一个可执行文件就不行喽)。高级功能可以分析特定的一段代码,不过这就要求代码有一些改动了。

    8、Intel MPI-基于MPICH开发的MPI,特点在于能兼容Infiniband、Myrinet等多种互连,而且其他的一些东西可以通过Intel的一种什么开发语言集成到Intel的MPI中来。总体感觉就是Intel的MPI不在于提高性能,在于能集成多种互连或其他模块,向上提供一个统一的界面。
  • 相关阅读:
    SPOJ GSS4 Can you answer these queries IV ——树状数组 并查集
    SPOJ GSS3 Can you answer these queries III ——线段树
    SPOJ GSS2 Can you answer these queries II ——线段树
    SPOJ GSS1 Can you answer these queries I ——线段树
    BZOJ 2178 圆的面积并 ——Simpson积分
    SPOJ CIRU The area of the union of circles ——Simpson积分
    HDU 1724 Ellipse ——Simpson积分
    HDU 1071 The area ——微积分
    HDU 4609 3-idiots ——FFT
    BZOJ 2194 快速傅立叶之二 ——FFT
  • 原文地址:https://www.cnblogs.com/super119/p/2036391.html
Copyright © 2011-2022 走看看