PGIコンパイラ ターゲット CPU プロセッサ
PGI コンパイラ製品がサポートするプロセッサの種別とその利用可能なハードウェア機能を以下に纏めました。 以下の表の中にある 'target' をコンパイルコマンドのオプションとして指定すると、指定された CPU の特性に応じた最適化が可能なクロス・コンパイルが可能となります。CPU target オプションの詳細は、こちらに説明しています。また、「クロスコンパイルの方法」については、こちらのページをご覧ください。
現在コンパイラを使用しているシステムのプロセッサのタイプを見る方法は、以下のようにコンパイラコマンドに -V オプションを付して実行してください。そのターゲットプロセッサ名が表示されます。
$ pgfortran -V pgf90 20.1-0 LLVM 64-bit target on x86-64 Linux -tp nehalem PGI Compilers and Tools Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.
コンパイラ技術は、AMD64/Intel(R)64 のコード生成機能だけではなく、NUMA / UMA と言ったメモリアーキテクチャに対しても柔軟に最適化できる能力が求められています。PGI コンパイラは、 NUMA アーキテクチャに対しても最適化機能を有した「コンパイラ」です。
PGI Workstation 2020 Supported Processors | |||||||||
---|---|---|---|---|---|---|---|---|---|
Supplier | CPU | -tp <target> |
Memory Address |
Floating Point HW | |||||
SSE1 | SSE2 | SSE3 | SSSE3 | SSE4 | ABM &SSE4a |
||||
Intel | Knights Landing processor | knl | 64-bit | Yes | Yes | Yes | Yes | Yes | Yes |
Intel | Skylake以降 | skylake | 64-bit | Yes | Yes | Yes | Yes | Yes | Yes |
Intel | Haswell | haswell | 64-bit | Yes | Yes | Yes | Yes | Yes | Yes |
Intel | Sandy Bridge | sandybridge | 64-bit | Yes | Yes | Yes | Yes | Yes | Yes |
AMD | Zen architecture (EPYC, Ryzen) | zen | 64-bit | Yes | Yes | Yes | No | Yes | Yes |
AMD | Piledriverr | piledriver | 64-bit | Yes | Yes | Yes | No | Yes | Yes |
AMD | Bulldozer | bulldozer | 64-bit | Yes | Yes | Yes | No | Yes | Yes |
Generic | Generic | px | 64-bit | Yes | Yes | Yes | Yes | Yes | Yes |
Intel(R)社のプロセッサにも、AMD社のプロセッサにも、どちらにも最適化可能
PGI コンパイラの大きな特長は、AMD 社の AMD64 プロセッサとインテル社の インテル64(EM64T) プロセッサ、それぞれの CPU のマイクロアーキテクチャに応じた最適化を行うことができるコンパイラであることです。詳細は、こちらをご覧ください。
特に、インテルプロセッサと AMDプロセッサでは、メモリアクセス、キャッシュ最適化に係る部分の最適化は大きく異なるため、インテル社製コンパイラで生成された Intel64 コードは、AMD64 マシン上では性能が大きく劣化する場合があります。AMD プロセッサ用のコンパイラは、 PGI 社のコンパイラをお求めください。 例えば、Intel(R) 64 の場合、CPU ターゲットを指定するコマンド・ライン・オプションである -tp nehalem-64 等を指定することで、Intel(R)64 である Nehalem (Core i7 等)に特化した最適化を行います。PGI コンパイラは、AMD64 ネイティブな最適化と Intel(R)64用の最適化を切り替えることが可能なクロス・コンパイル機能を有します。従いまして、PGI コンパイラを利用することで、将来、ご使用システムを Intel64 もしくは AMD64 のどちらかの CPU プラットフォームに変更したとしても、共通コンパイラ基盤としてどちらのプラットフォームに対してもご利用いただけます。
Intel64 は、基本的に AMD64 アーキテクチャとの互換を図り、64bit命令(演算、アドレッシング)を追加した技術です。従って、Intel64は、 AMD64 とバイナリレベルで互換性が保たれています。PGI コンパイラは、最新のインテル社のプロセッサを常にサポートします。