[转]OpenMP并行程序库开发建议
微处理器的发展到达了一个转折点,传统的提高主频的方式已经走到了头。
微处理器下一步的主要发展方向一个是64位机,另一个是多处理机。
传统程序基本上是为顺序处理器书写的程序,大部分程序在多处理器上不
能直接获得加速。解决这个问题的一条途径是使用多处理器编译器,把顺序程序自
动转换为并行程序。世界上主要的多处理器编译器的开发公司有INTEL和Portland
Group。虽然多处理器编译器的自动并行化功能能够解决一部分问题,但是依然不能
令人满意,比如INTEL的编译器要花费数小时进行编译,程序的加速只是10%-30%。
解决这个问题的另一条途径是手工重写程序库。长期以来,计算机界积累
了大量的库程序,尤其是在科学计算领域,有名的算法均已收入库程序。如果把程
序库中所有程序全部用适合并行计算的方法重写,那么用户在写应用程序时可以直
接调用这些并行程序库,从而加速程序的运行。
工业标准OpenMP是对C语言的一个扩展,它的目的是支持并行程序设计。书
写OpenMP程序同书写C语言程序相似,只是在C程序中加入了OpenMP的编译指示。这
些编译指示描述了程序应该以何种方式并行执行。加入了OpenMP指示的C程序可以由
任意支持OpenMP的编译器编译,在不同平台的硬件上执行。也就是说,OpenMP程序
同C语言程序一样可移植。因此,用OpenMP重写的程序库也是可移植的。
INTEL有一个OpenMP的数学库,售价$399,支持服务更新费$160。库中包括
线性代数,离散富里叶变换,向量数学。AMD也有类似的库,同样以线性代数和向量
处理为主。然而,对于各个具体领域里的丰富的应用软件开发,以上库函数还远远
不够。人们还需要微分方程求解,图像处理,多媒体等等方面的程序。
开发OpenMP库需要大量的人力资源,这项工作适合在中国进行。OpenMP库
在未来的经济效益可以同微软的操作系统相比。后者为用户顺利使用PC提供工具软
件支持,前者为顺利使用多处理器提供库函数支持。世界正在进入多处理器时代,
OpenMP库将成为程序员必不可少的工具,同时也会为投资人带来巨大的收益。
[1] Intel Math Kernel Library 7.2
http://www.intel.com/cd/software/products/asmo-na/eng/perflib/mkl/219928.htm