XL C/C++ 概要

XL C/C++ Advanced Edition は、 PowerPC アーキテクチャーを持つ PowerPC ハードウェアで実行される Linux オペレーティング・システム用の、最適化を行う、標準ベースのコマンド行コンパイラーです。アプリケーション開発者は、 このコンパイラーを使用することにより、最適化された 32 ビット・アプリケーションおよび 64 ビット・アプリケーションを作成および保守することができます。 これらのアプリケーションでは、自動または明示の共用メモリー・プログラム並列化を使用して、パフォーマンスを 改善することができます。 PowerPC アーキテクチャーによって可能になる最適化およびパフォーマンスの改善の多くは、コンパイラー・オプション、 プラグマ、およびコンパイラー起動モードによって制御されます。 そのため、特殊な手作業によるコーディングの量を最小限にして、 このハードウェア・アーキテクチャーの利点を実現することができます。

この製品は、IBM VisualAge C++ for Linux バージョン 6.0 の後継リリースです。IBM は VisualAge C++XL C/C++ に商標変更しました。

共用メモリー・プログラム並列化

プログラム・パフォーマンスは、PowerPC アーキテクチャーで可能な共用メモリー・プログラム並列化 (SMP) を活用することにより、かなり改善されます。 コンパイラーでは、SMP のインプリメントのために以下の方式が用意されています。

OpenMP ディレクティブは、反復的および非反復的コードの平行領域の定義に関係します。

ソース互換性

このコンパイラーは、C のために次の 2 つの ISO プログラム言語仕様をサポートしています: ISO/IEC 9899:1990 (C89 として参照) および ISO/IEC 9899:1999 (C99)。 またこのコンパイラーは次の両方の C++ 標準もサポートしています: ISO/IEC 14882:2003 (Standard C++ として参照)、およびこの言語の最初の公式仕様である、ISO/IEC 14882:1998 (C++98 として参照)。標準化された言語レベルのほかに、このコンパイラーは、GNU C および C++ 言語拡張機能のサブセットを含む、数多くの言語拡張機能もサポートしています。

バイナリー互換性

XL C/C++ は、C++ Abstract Binary Interface (ABI) をサポートします。 コンパイラーは、GNU C/C++ バージョン 3.2 または 3.3 コンパイラーで作成されたものと互換性のある、 バイナリー・ファイルまたはオブジェクト・ファイルを作成します。 また、このコンパイラーは OpenMP バージョン 2.0 標準もサポートしています。OpenMP 準拠の C および C++ オブジェクト・ファイルは、IBM XL Fortran for Linux で作成されたものとバイナリー互換であるため、C または C++ と Fortran の間での言語間呼び出しが可能です。

オープン・ソース・リソースとの共存

GNU C または C++ コンパイラーでコンパイルされたコードとのバイナリー互換性を獲得するため、 XL C/C++ でコンパイルされたプログラムには、同じシステムに常駐する GNU コンパイラーで使用されるものと同じヘッダーが組み込まれます。 コンパイラーは、GNU C で作成されたオブジェクトとのバイナリー互換性を維持しながら、プログラムを最適化します。 この関係について、注意すべき点は以下のとおりです。


コマンド行 C および C++ コンパイラー

XL C/C++ では基本コンパイラー呼び出しコマンドを選択でき、 さまざまなバージョン・レベルの C および C++ 言語をサポートしています。 各呼び出しコマンドは、言語レベルのコンパイラー・サブオプション、その他の関連言語フィーチャーのオプション、 および関連する定義済みマクロを自動的に設定します。 多くの場合、C ソース・ファイルをコンパイルするときは xlc コマンドを 使用し、C++ ソース・ファイルをコンパイルするとき、または C と C++ の両方のソース・ファイルが 存在するときは xlC コマンドを使用します。 xlc++ 呼び出しは xlC 呼び出しと同等です。

さまざまな基本コマンドがあり、特殊環境およびファイル・システムの要件をサポートしています。 コマンドの各バリエーションは、基本コマンドにサフィックスを付け足すことで形成されます。 Linux プラットフォームでは、スレッド・セーフ・アプリケーションを コンパイルするために、_r サフィックスが提供されています。これらのバリエーションは「再入可能コンパイラー呼び出し」とも呼ばれます。

また、gxlc および gxlc++ ユーティリティーは特殊なコンパイラー呼び出しです。

関連参照


ライブラリー

XL C/C++ は GNU C および C++ ヘッダーを使用し、その結果得られるアプリケーションは、オペレーティング・システム とともにロードされた gcc レベルで提供される C および C++ ランタイム・ライブラリーとリンクされます。 XL C/C++ には、XL C/C++ コンパイラーの自動並列化および OpenMP フィーチャーをサポートするため、SMP ランタイム・ライブラリーが同梱されています。

高性能の数学ライブラリー

XL C/C++ では、バージョン 7 以降、調整された数学組み込み関数から 成る、IBM Mathematics Acceleration Subsystem (MASS) ライブラリーを出荷しています。 MASS ライブラリーはスレッド・セーフで、対応する libm ルーチンに対して改良されたパフォーマンスを提供します。 さらに、MASS ライブラリーは、コード変更を必要とすることなく、使用できます。コンパイラーは 32 ビットと 64 ビットをサポートします。 MASS ベクトル・ライブラリーのバージョン、それぞれ libmassvp4.a および libmassvp4_64.a。 これらのライブラリーには、単精度および倍精度の逆関数および平方根関数用のベクトル・ルーチンが含まれます。


ユーティリティーとコマンド

XL C/C++ Advanced Edition には、プログラム開発を支援するため、以下の特殊なコマンドが用意されています。 詳しくは、XL C/C++ コンパイラー・リファレンス を参照してください。

vac_configure ユーティリティー
GNU コンパイラーおよびその他の構成情報のロケーションを指定する、構成ファイル vac.cfg を作成するプログラム。 C および C++ コンパイラーでは、構成のためにこの vac.cfg を使用します。

gxlc および gxlc++ ユーティリティー
GNU C または GNU C++ 呼び出しコマンドを対応する xlc または xlc++ コマンドに変換し、XL C/C++ コンパイラーを呼び出す、呼び出しメソッド。このユーティリティーは、GNU コンパイラーでビルドされた 既存アプリケーションで使用した makefile に対する変更数を最小限にすることと 、XL C/C++ への移行を容易にすることを目的としています。

cleanpdf コマンド
PDFDIR ディレクトリーを管理するために使用されるプロファイル指示フィードバックに 関連するコマンド。 指定されたディレクトリー、PDFDIR ディレクトリー、または現行ディレクトリーからすべてのプロファイル情報を除去します。

mergepdf コマンド
プロファイル指示フィードバック (PDF) に関連するコマンドで、2 つ以上の PDF レコードを 単一のレコードに結合するときに、それぞれのレコードの重要性に応じて重みを付けることができます。 これらの PDF レコードは、同一の実行可能ファイルから派生しなければなりません。

resetpdf コマンド
resetpdf コマンドの現行の振る舞いは cleanpdf コマンドと同じで、他のプラットフォームでの以前のリリースとの互換性を保持しています。

showpdf コマンド
プロファイル指示フィードバック・トレーニング 実行 (オプション -qpdf1 および -qshowpdf を指定したコンパイル) で実行されたすべてのプロシージャーの呼び出しおよびブロック数を表示するコマンド。

各国語サポート

XL C/C++ は、Unicode 規格、マルチバイト文字、UTF-16 および UTF-32 ストリング・リテラル、 複数のロードされたロケール、および双方向性をサポートします。 これらのフィーチャーにより、国際化対応アプリケーションを容易に作成できるようになります。

関連参照


資料とオンライン・ヘルプ

XL C/C++ Advanced Edition では、以下の形式で製品資料を提供しています。

これらの項目は以下の場所にあるか、以下の場所でアクセスできます。

README ファイル README ファイルは、/opt/ibmcmp/vacpp/7.0 およびインストール CD のルート・ディレクトリーにあります。
マニュアル・ページ マニュアル・ページは、コンパイラー呼び出しおよび製品に提供されているすべてのコマンド行ユーティリティーのために提供されています。
HTML ベースのヘルプ・システム HTML ファイルで構成されるヘルプ・システムが提供されています。ヘルプ・システムは、製品の インフォメーション・センターの一部として、オンラインでも使用可能です。
PDF 文書 PDF ファイルは、/opt/ibmcmp/pdf ディレクトリーにあります。Adobe Acrobat Reader で表示および印刷ができます。 Adobe Acrobat Reader をインストールしていない場合には、http://www.adobe.com からダウンロードすることができます。

XL C/C++ PDF 文書の全ライブラリーは、以下のファイルで構成されています。

install.pdf
XL C/C++ インストール・ガイド」には、コンパイラーのインストール、およびマニュアル・ページの使用可能化に関する説明が含まれています。

getstart.pdf
XL C/C++ スタートアップ・ガイド」には 、XL C/C++ コンポーネントの概要、新フィーチャーの説明、 コンパイル環境およびプロセスのカスタマイズに関する手引き情報、 カテゴリー別のコンパイラー・オプションの概要表、 パフォーマンス最適化およびチューニングに対する概要、 およびアプリケーションの Linux プラットフォームへの移植に関する一般情報が含まれています。

language.pdf
XL C/C++ ランゲージ・リファレンス」には、GNU C および C++ で元々開発されたアプリケーションの移植に関する インプリメンテーション定義の拡張機能などの、C および C++ プログラム言語の IBM インプリメンテーションに関する情報が記載されています。

compiler.pdf
XL C/C++ コンパイラー・リファレンス」には、 並列処理での使用も含め、コンパイラー・オプション、プラグマ、マクロ、および組み込み関数についての情報が 記載されています。

proguide.pdf
XL C/C++ プログラミング・ガイド」には、他の資料で説明されていない、XL C/C++ を使用したプログラミングについての 情報が記載されています。

license.pdf
IBM XL C/C++ Advanced Edition V7.0 for Linux License Information には、製品ライセンスについての情報が含まれています。

追加情報へのアクセス

XL C/C++ の最新情報については、製品資料および以下の URL のサポート・ページをご覧ください。 さらに、IBM Technical Support Organization が作成した IBM Redbooks には、実際の経験からの現実的なシナリオに基づいた技術情報が含まれています。

XL C/C++ でのアプリケーション開発に役立つと思われる Redbooks として は、以下が挙げられます。

_ POWER4 Processor Introduction and Tuning Guide、 SG24-7041-00。

_ Understanding IBM eServer pSeries Performance and Sizing、SG24-4810-01。

IBM Copyright 2003