PGIトップ PGI技術情報・TIPS コンパイラ・オプションの使用方法 MPI 用オプション
MPIプログラム PGIコンパイラ オプション
このページでは、PGI コンパイラを使用して MPI 開発環境に関して説明します。現在のシステムは、1プロセッサに複数のマルチコアを搭載しているため、MPI のプログラム開発も 1 ノード上の複数の並列プロセスを使用して開発できるようになりました。こうした環境では、1ノード内のローカルなプロセス環境で MPI 並列の開発ができることから、 PGI の Workstation/Server ライセンスにおいても、ローカルノード上での MPI 用のデバッガ、プロファイラを含めた開発環境を提供しています。このページでは、主に、MPIプログラムをコンパイル・リンクする方法について説明します。なお、ローカル並びにリモート・ノードも含めた MPI の開発環境は、 PGI CDK ライセンス製品で可能となっています。
2011年3月21日 Copyright © 株式会社ソフテック
PGI Workstation / Server 製品(Linux 版)は、 PGI 7.1 以降、MPICH-1 ライブラリをバンドルし、インストール時にライブラリ一式を実装できるようになりました。これに伴い、PGI 7.1 以上のライセンスを有するお客様は、この製品系列においても MPICH1 プログラムの MPI 並列デバッギング並びにプロファイリングの機能が使用できるようになりました。その他の MPICH2 や Open MPI等のソフトウェアは、ご自身で構築していただく必要があります。MPICH2 の並列デバッグ機能はありません。これを利用したい場合は、PGI CDKライセンスが必要です。
PGI Cluster Development Kit (CDK) 製品(Linux 版)には、従来から、MPICH1、MPICH2 ライブラリがバンドルされており、これらのMPI ライブラリを使用することができます。さらに、PGI CDK 7.1 以降、高速通信媒体 InfiniBand 用の MVAPICH-1.1 ライブラリもバンドルされておりますので、この三種類の MPI ライブラリが使用でき、これらに対応可能なMPI並列デバッガとプロファイラを利用することができます。
PGI Workstation / Server 製品(Windows 版)は、 Microsoft(R) HPC Pack 2008 SDK SP1 (無償)で提供されている、MS-MPI ライブラリをコンパイル・オプションレベルで使用できるようになっております。PGI 7.1 以降の Windows 版では、業界で初めて、MS-MPI 対応の MPI 並列デバッガとプロファイラを提供しました。PGI コンパイラを使用することによって、ローカルなノード上で、MPI 開発環境を即座に構築することが可能です。
PGI Workstation / Server 製品(Mac OS X版)は、Open MPIライブラリをバンドルし、インストール時にライブラリ一式を実装できるようになりました。コンパイルは、mpif90 コマンドで行います。
PGIコンパイラ製品 MPI に関する導入・使用ガイド
PGI 9.0 以降、PGI Workstation/Server ライセンスにおいても、以下の -Mmpi= オプションが使用できます。但し、MPICH1(Linux版)、MS-MPI(Windows版)、Open MPI(Mac OS X版)以外の MPI ライブラリは実装されておりませんので、ご自身でMPIライブラリを実装する必要があります。また、PGI CDK for Linux 製品では、MPICH2ならびにMVAPICH1 が付属しており、以下のコンパイル・リンクオプションで使用できます。
| Implementation | Operating Systems | -Mmpi= オプション | バンドルしているPGI製品 |
|---|---|---|---|
| MPICH1 | Linux | -Mmpi=mpich1 | PGI Linux版に付属 |
| MPICH2 | Linux | -Mmpi=mpich2 | PGI CDKに付属 |
| MVAPICH1 | Linux | -Mmpi=mvapich1 | PGI CDKに付属 |
| HP-MPI | Linux | -Mmpi=hpmpi | -- |
| MS-MPI | Windows(R) | -Mmpi=msmpi | PGI Windows版に付属 |
| Open MPI | Mac OS X | mpif90/mpicc | PGI Mac OS X版に付属 |
MPIプログラムのコンパイル方法
● PGI Workstation and PGI Server 製品 (PGI 8.0 以降)
(Linux 版) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=mpich1 (MPICH-1ライブラリ使用) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=hpmpi (HP-MPIライブラリを別途実装した場合) 他の MPICH2、Open MPIを使用したい場合は、ご自身でオープンソースからビルドが必要 (Windows 版 MPMSI : Windows HPC pack SDK搭載したシステム上のみ) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=msmpi (Mac OS X版 プリコンパイル OpenMPI が 実装済み) OpenMPI は、Mac OS X 10.4.x (Tiger)ではサポートしません。 mpif90/mpicc -fastsse -Minfo test.f
● PGI Workstation and PGI Server 製品 (PGI 7.1,7.2)
(Linux 版 MPICH-1) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=mpich1 (Windows 版 MPMSI : Windows HPC pack SDK搭載したシステム上のみ) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=msmpi
● PGI Cluster Development Kit (CDK) 製品
(PGI CDK 7.2 以降追加) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=hpmpi (HP-MPIライブラリ使用) (PGI CDK 7.1 以降) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=mpich1 (MPICH-1ライブラリ使用) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=mpich2 (MPICH-2ライブラリ使用) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi=mvapich1 (MVAPICHライブラリ使用) (PGI CDK 7.0 以前) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi (MPICH-1ライブラリ使用) pgf95/pgcc/pgCC -fastsse -Minfo test.f -Mmpi2 (MPICH-2ライブラリ使用)
Linux における 2GB 以上のメモリ空間を有する場合のコンパイル法
Linux では、2GB 以上のオブジェクトを作成する場合のオプション -mcmodel=medium があります。このオプションを使用してコンパイルする場合の方法を説明します。MPICH1 と MVAPICH1 の場合は、-Mmpi=**** のオプションでコンパイル・リンクする方法ではなく、MPIスクリプトコマンドの mpif90/mpicc 等を使用して -shlib オプションを付加してコンパイルして下さい。
また、MPICH2 の場合もMPIスクリプトコマンドの mpif90/mpicc を使用して下さい。この場合は、-shlib オプションは必要ありません。
【MPICH1/MVAPICH1 の場合】 $ mpif90 -fastsse -Minfo -mcmodel=medium -shlib -o a.out mpihello.f $ mpicc -fastsse -Minfo -mcmodel=medium -shlib -o a.out mpihello.c ------------------------------------------------------------------------------------ 【MPICH2 の場合】 $ mpif90 -fastsse -Minfo -mcmodel=medium -o a.out mpihello.f $ mpicc -fastsse -Minfo -mcmodel=medium -o a.out mpihello.c
各 MPI ライブラリ、並列ツールの具体的な使用方法