インテル® C++ Composer XE 2013
Linux*
版インストール・ガイド
およびリリースノート
資料番号: 321412-004JA 2013 年 3 月 5 日目次
1 概要 ... 5 1.1 変更履歴 ... 5 1.1.1 Update 3 (2013.3) ... 5 1.1.2 Update 2 (2013.2) ... 5 1.1.3 Update 1 (2013.1) ... 5 1.1.4 インテル® C++ Composer XE 2011 からの変更点 ... 6 1.2 製品の内容 ... 6 1.3 動作環境 ... 7 1.3.1 IA-64 アーキテクチャー (インテル® Itanium®) 開発のサポートを終了... 8 1.4 ドキュメント ... 8 1.5 サンプル ... 9 1.6 日本語サポート ... 9 1.7 テクニカルサポート ... 9 2 インストール ...10 2.1 インテル® Software Manager ...10 2.2 インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (インテル® MPSS) のインストール ...10 2.3 クラスターでのインストール ...10 2.4 サイレント・インストール ...11 2.5 ライセンスサーバーの使用 ...11 2.6 Eclipse* 統合のインストール ...112.7 Security-Enhanced Linux* (SELinux*) ...11
2.8 既知のインストールの問題 ...11
2.9 インストール先フォルダー ...12
2.10 削除/アンインストール ...13
3 インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャー ...14
3.1 インテル® Composer XE 2013 Linux* 版のインテル® MIC アーキテクチャー対応に ついて ...14
3.3 はじめに ...14 3.4 製品のドキュメント ...14 3.5 デバッガー ...15 3.6 インテル® マス・カーネル・ライブラリー (インテル® MKL) ...15 3.7 注意事項 ...15 3.7.1 インテル® C++ コンパイラー...15 3.7.2 デバッグとインテル® デバッガー ...22 4 インテル® C++ コンパイラー ...24 4.1 互換性 ...24 4.2 新機能と変更された機能 ...24 4.2.1 新しい OpenMP* SIMD およびアクセラレーター機能のサポート (インテル® Composer XE 2013 Update 2) ...25 4.2.2 KMP_PLACE_THREADS 環境変数の追加 (インテル® Composer XE 2013 Update 2) ...25 4.2.3 新しい __INTEL_PRE_CFLAGS 環境変数と __INTEL_POST_CFLAGS 環境変数の 追加 (インテル® Composer XE 2013 Update 2)...25 4.2.4 インライン・アセンブリーと組込み関数での新しいインテル® アーキテク チャー (開発コード名: Broadwell) のサポート (インテル® Composer XE 2013 Update 1) ...26
4.2.5 マニュアル CPU ディスパッチに core_4th_gen_avx を追加 (インテル® Composer XE 2013 Update 1) ...27 4.2.6 スタティック解析機能 (旧: 「スタティック・セキュリティー解析」または 「ソースチェッカー」) にはインテル® Inspector XE が必要 ...27 4.3 新規および変更されたコンパイラー・オプション ...28 4.3.1 インテル® Composer XE 2013 の新規および変更されたコンパイラー・ オプション ...28
4.3.2 -vec-report7 オプションの追加 (インテル® Composer XE 2013 Update 2) ...29
4.3.3 -W[no-]pch-messages オプションの追加 (インテル® Composer XE 2013 Update 2) ...29
4.3.4 –gcc-version オプションの廃止予定 (インテル® Composer XE 2013 Update 2) ...29
4.3.5 –check-pointers=w オプションの追加 (インテル® Composer XE 2013 Update 1) ...30 4.3.6 –opt-assume-safe-padding オプション、–opt-streaming-cache-evict オプション、 –opt-threads-per-core オプションの追加 (インテル® Composer XE 2013 Update 1) ...30 4.3.7 -ipp-link オプション ...30 4.3.8 –fimf-domain-exclusion ...30 4.4 その他の変更 ...30 4.4.1 Microsoft* のループプラグマ構文のサポート (インテル® Composer XE 2013 Update 1) ...30 4.4.2 インテル® Composer XE 2013 の新しい警告レベル –w3 および警告レベルの 変更 ...30
4.4.3 __regcall 関数および要素関数 (__declspec(vector) など) とのバイナリー互換性 の変更 ...30 4.4.4 乱数ジェネレーター関数のベクトル化用の新しい libirng ライブラリーの追加 (インテル® Composer XE 2013) ...31 4.4.5 コンパイラー環境の設定 ...31 4.4.6 デフォルトの命令セットがインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) を必要とするものに変更 ...31
4.4.7 インテル® Cilk™ Plus の “scalar” 節の削除 ...31
4.4.8 インテル® Cilk™ Plus の配列表記 (アレイ・ノーテーション) セマンティクスの 変更 (2011 Update 6) ...31 4.5 既知の問題 ...32 4.5.2 インテル® Cilk™ Plus の既知の問題 ...32 4.5.3 ガイド付き自動並列化の既知の問題 ...33 4.5.4 スタティック解析の既知の問題...33 5 インテル® デバッガー (IDB) ...34 5.1 インテル® デバッガーのサポート終了予定 ...34 5.2 Java* ランタイム環境の設定...34 5.3 デバッガーの起動...34 5.4 その他のドキュメント ...34 5.5 デバッガー機能 ...35 5.5.1 IDB の主な機能 ...35
5.5.2 インテル® Inspector XE 2011 Update 6 による IDB の “break into debug” の サポート ...35
5.6 既知の問題と変更点 ...35
5.6.1 Pardus* システムのデフォルトの .gdbinit スクリプトでデバッガーが クラッシュ ...35
5.6.2 Pardus* システムでスレッド情報が利用できない ...35
5.6.3 Thread Data Sharing Filters (スレッドデータ共有フィルター) が正しく動作 しない ...35 5.6.4 コアファイルのデバッグ ...35 5.6.5 シェルで $HOME が設定されていないとデバッガーがクラッシュ ...35 5.6.6 コマンドライン・パラメーター –idb と -dbx は未サポート ...36 5.6.7 プロセッサーのデバッグレジスター (ハードウェア・ベース) を使用した ウォッチポイント (インテル® Composer XE 2011 Update 6) ...36 5.6.8 位置独立実行ファイル (PIE) のデバッグは未サポート ...36 5.6.9 コマンドライン・パラメーター –parallel は未サポート ...36 5.6.10 [Signals (シグナル)] ダイアログが動作しない ...36 5.6.11 GUI のサイズ調整 ...37 5.6.12 $cdir ディレクトリー、$cwd ディレクトリー ...37 5.6.13 info stack の使用 ...37 5.6.14 $stepg0 のデフォルト値の変更 ...37
5.6.15 一部の Linux* システムでの SIGTRAP エラー ...37
5.6.16 MPI プロセスのデバッグには idb GUI は使用不可...37
5.6.17 GUI でのスレッド同期ポイントの作成 ...38 5.6.18 [Data Breakpoint (データ・ブレークポイント)] ダイアログ ...38 5.6.19 IA-32 アーキテクチャー向けのスタック・アライメント ...38 5.6.20 GNOME 環境の問題 ...38 5.6.21 オンラインヘルプへのアクセス...38 6 Eclipse* 統合 ...38 6.1 提供されている統合 ...38 6.1.1 統合に関する注意事項 ...39 6.2 Eclipse* でのインテル® C++ Eclipse* 製品拡張のインストール方法 ...39 6.2.1 Eclipse* へのインテル® デバッガーの統合 ...40 6.3 Eclipse*、CDT、および JRE の入手方法とインストール方法 ...40 6.3.1 JRE、Eclipse*、CDT のインストール...40 6.4 インテル® C++ コンパイラーで開発するための Eclipse* の起動 ...40 6.5 Fedora* システムでのインストール ...41 6.6 コンパイラー・バージョンの選択 ...41 7 インテル® インテグレーテッド・パフォーマンス・プリミティブ ...41 7.1 別途ダウンロード可能なインテル® IPP スタティック・スレッド・ライブラリー ...42 7.2 別途ダウンロード可能なインテル® IPP 暗号化ライブラリー ...42 7.3 インテル® IPP コードサンプル ...42 8 インテル® マス・カーネル・ライブラリー ...42 8.1 注意事項 ...42 8.2 本バージョンでの変更 ...42 8.2.1 インテル® MKL 11.0 Update 3 の新機能 ...42 8.2.2 インテル® MKL 11.0 Update 2 の新機能 ...43 8.2.3 インテル® MKL 11.0 Update 1 の新機能 ...44 8.2.4 最初のリリースでの変更 ...45 8.3 権利の帰属 ...46 9 インテル® スレッディング・ビルディング・ブロック ...47 10 著作権と商標について ...47
1
概要
このドキュメントでは、製品のインストール方法、新機能、変更された機能、注意事項、お よび製品ドキュメントに記述されていない既知の問題について説明します。1.1
変更履歴
このセクションでは製品アップデートにおける重要な変更内容を説明します。各コンポーネ ントの新機能の詳細は、各コンポーネントのリリースノートを参照してください。 1.1.1 Update 3 (2013.3) • インテル® C++ コンパイラー XE 13.1.1 • インテル® マス・カーネル・ライブラリー 11.0 Update 3 • インテル® スレッディング・ビルディング・ブロック 4.1 Update 3 • 10 進浮動小数点をチェックする関数のドキュメント • 報告された問題の修正 1.1.2 Update 2 (2013.2) • インテル® C++ コンパイラー XE 13.1.0 • インテル® マス・カーネル・ライブラリー 11.0 Update 2 • インテル® スレッディング・ビルディング・ブロック 4.1 Update 2 • OpenMP* SIMD およびアクセラレーター機能のサポート • 新しい KMP_PLACE_THREADS 環境変数 • 新しい INTEL_PRE_CFLAGS 環境変数と_INTEL_POST_CFLAGS 環境変数 • 新しい -vec-report7 ベクトル化レポートレベル • プリコンパイル済みヘッダーの診断を有効/無効にする -W[no-]pch-messages オプ ション • 報告された問題の修正 1.1.3 Update 1 (2013.1) • インテル® C++ コンパイラー XE 13.0.1 • インテル® デバッガー 13.0.1 • インテル® マス・カーネル・ライブラリー 11.0 Update 1 • インテル® インテグレーテッド・パフォーマンス・プリミティブ 7.1 Update 1 • インテル® スレッディング・ビルディング・ブロック 4.1 Update 1 • インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャー用オ フロード・ライブラリーの Update 1 でのバイナリー変更に伴う互換性問題 • デフォルトのコード生成でインテル® Xeon Phi™ コプロセッサー A0 ステッピングの サポートを削除 • Eclipse* プラットフォームのバージョン 4.2 および 3.8、Eclipse CDT 8.1 のサポート • インライン・アセンブリーと組込み関数での新しいインテル® アーキテクチャー (開 発コード名: Broadwell) のサポート • -opt-assume-safe-padding のサポート (インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャー用) • -opt-streaming-cache-evict および -opt-threads-per-core のサポート (インテル® メ ニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャー用) • -check-pointers=w• マニュアル CPU ディスパッチに core_4th_gen_avx を追加 (インテル® Composer XE 2013 Update 1)
• 報告された問題の修正 1.1.4 インテル® C++ Composer XE 2011 からの変更点 • インテル® Xeon Phi™ コプロセッサーに作業をオフロードするアプリケーション、ま たはコプロセッサー上でネイティブに実行するアプリケーションの開発がサポート されました。詳細は、「インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャー」セクションを参照してください。 • インテル® C++ コンパイラーがバージョン 13.0 にアップデート • インテル® デバッガーがバージョン 13.0 にアップデート o インテル® デバッガーのサポート終了予定 • インテル® マス・カーネル・ライブラリーがバージョン 11.0 にアップデート o インテル® Pentium® III プロセッサーのサポートが終了。詳細は、削除された 機能に関するナレッジベースの記事 (英語) を参照してください。 • インテル® インテグレーテッド・パフォーマンス・プリミティブがバージョン 7.1 に アップデート o インテル® IPP スタティック・スレッド・ライブラリーを別のパッケージで提 供 • インテル® スレッディング・ビルディング・ブロックがバージョン 4.1 にアップデー ト
• Fedora* 17、SUSE* Linux* Enterprise Server 11 SP2、Ubuntu* 11.10 および Ubuntu* 12.04 のサポート
• 次のバージョンの Linux* ディストリビューションのサポートが終了: o Red Hat* Enterprise Linux* 4
o SUSE* Linux* Enterprise Server 11 SP1 o Fedora* 15 o Ubuntu* 11.04 o Ubuntu* 10.04 o Asianux* • 製品のアップデートとライセンスのアクティベーションを管理するインテル® Software Manager の追加 • 新しい C++11 機能 • 将来のインテル® プロセッサーに対するサポートの強化 • 範囲外のメモリーチェック • インテル® Composer XE 2013 の新しい警告レベル –w3 および警告レベルの変更 • スタティック解析の改良
1.2
製品の内容
インテル® C++ Composer XE 2013 Update 3 Linux* 版 には、次のコンポーネントが含まれて います。 • インテル® C++ コンパイラー XE 13.1.1。Linux* オペレーティング・システムを実行 する IA-32、インテル® 64、およびインテル® メニー・インテグレーテッド・コア・ アーキテクチャー (インテル® MIC アーキテクチャー) ・システムで動作するアプリ ケーションをビルドします。 • インテル® デバッガー 13.0 • インテル® インテグレーテッド・パフォーマンス・プリミティブ 7.1 Update 1 • インテル® マス・カーネル・ライブラリー 11.0 Update 3 • インテル® スレッディング・ビルディング・ブロック 4.1 Update 3 • Eclipse* 開発環境への統合 • 各種ドキュメント
1.3
動作環境
アーキテクチャー名についての説明は、http://intel.ly/q9JVjE (英語) を参照してください。 • インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) 対応の IA-32 またはイン
テル® 64 アーキテクチャー・プロセッサーをベースとするコンピューター (インテ ル® Pentium® 4 プロセッサー以降、または互換性のあるインテル以外のプロセッ サー) 64 ビット・アプリケーションおよびインテル® MIC アーキテクチャーを対象 とするアプリケーションの開発は、64 ビット・バージョンの OS でのみサ ポートしています。32 ビット・アプリケーションの開発は、32 ビット・ バージョンまたは 64 ビット・バージョンの OS のいずれかでサポートしてい ます。64 ビット・バージョンの OS で 32 ビット・アプリケーションを開発 する場合は、Linux* ディストリビューションからオプションのライブラ リー・コンポーネント (ia32-libs、lib32gcc1、lib32stdc++6、libc6-dev-i386、 gcc-multilib、g++-multilib) をインストールする必要があります。 • インテル® MIC アーキテクチャー向けの開発/テスト: o インテル® Xeon Phi™ プロセッサー o インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (インテ ル® MPSS) • 機能を最大限に活用できるよう、マルチコアまたはマルチプロセッサー・システム の使用を推奨します。 • RAM 1GB (2GB 推奨) • 2.5GB のディスク空き容量 (すべての機能をインストールする場合) • 次の Linux* ディストリビューションのいずれか (本リストは、インテル社により動 作確認が行われたディストリビューションのリストです。その他のディストリ ビューションでも動作する可能性はありますが、推奨しません。ご質問は、テクニ カルサポートまでお問い合わせください。) o Fedora* 17
o Red Hat* Enterprise Linux* 5、6
o SUSE* Linux* Enterprise Server 10、11 SP2 o Ubuntu* 11.10、12.04
o Debian* 6.0
o インテル® Cluster Ready o Pardus* 2011.2 (x64 のみ)
• Linux* 開発ツール・コンポーネント (gcc、g++ および関連ツールを含む)
• –traceback オプションを使用するには、libunwind.so が必要です。一部の Linux* ディ ストリビューションでは、別途入手して、インストールする必要があります。 インテル® デバッガーのグラフィカル・ユーザー・インターフェイスを使用するためのその 他の要件 • Java* ランタイム環境 (JRE) 6.0 (1.6†) – 5.0 推奨 o IA-32 アーキテクチャー・システムでは 32 ビット版の JRE、インテル® 64 アーキテクチャー・システムでは 64 ビット版の JRE を使用する必要があり ます。 Eclipse* 開発環境に統合するためのその他の条件 • Eclipse* Platform 4.2 および次の両方
o Eclipse* C/C++ Development Tools (CDT) 8.1 以降 o Java* ランタイム環境 (JRE) 6.0 (1.6) 以降
• Eclipse* Platform 3.8 および次の両方
o Eclipse* C/C++ Development Tools (CDT) 8.1 以降 o Java* ランタイム環境 (JRE) 6.0 (1.6) 以降
• Eclipse* Platform 3.7 および次の両方
o Eclipse* C/C++ Development Tools (CDT) 8.0 以降 o Java* ランタイム環境 (JRE) 6.0 (1.6) 以降 † JRE 6.0 の Update 10 以前には、インテル® 64 アーキテクチャーでクラッシュするという既 知の問題があります。JRE の最新のアップデートを使用することを推奨します。詳細は、 http://www.eclipse.org/eclipse/development/readme_eclipse_3.7.html (英語) のセクション 3.1.3 を参照してください。 注: • インテル® コンパイラーは、さまざまな Linux* ディストリビューションと gcc バー ジョンで動作確認されています。一部の Linux* ディストリビューションには、動作 確認されたヘッダーファイルとは異なるバージョンのものが含まれており、問題を 引き起こすことがあります。使用する glibc のバージョンは、gcc のバージョンと同 じでなければなりません。最良の結果を得るため、上記のディストリビューション で提供されている gcc バージョンのみを使用してください。 • インテル® コンパイラーは、デフォルトで、インテル® SSE2 命令対応のプロセッサー (例: インテル® Pentium® 4 プロセッサー) が必要な IA-32 アーキテクチャー・アプリ ケーションをビルドします。コンパイラー・オプションを使用して任意の IA-32 アーキテクチャー・プロセッサー上で動作するコードを生成できます。ただし、ア プリケーションでインテル® インテグレーテッド・パフォーマンス・プリミティブま たはインテル® スレッディング・ビルディング・ブロックを使用している場合、その アプリケーションの実行には、インテル® SSE2 命令対応のプロセッサーが必要です。 • 非常に大きなソースファイル (数千行以上) を -O3、-ipo および -openmp などの高度 な最適化オプションを使用してコンパイルする場合は、多量の RAM が必要になりま す。 • 上記のリストにはすべてのプロセッサー・モデル名は含まれていません。リストさ れているプロセッサーと同じ命令セットを正しくサポートしているプロセッサー・ モデルでも動作します。特定のプロセッサー・モデルについては、テクニカルサ ポートにお問い合わせください。 • 一部の最適化オプションには、アプリケーションを実行するプロセッサーの種類に 関する制限があります。詳細は、オプションの説明を参照してください。 1.3.1 IA-64 アーキテクチャー (インテル® Itanium®) 開発のサポートを終了
本バージョンでは、IA-64 アーキテクチャー (インテル® Itanium®) システム上、または IA-64 アーキテクチャー・システム向けの開発をサポートしていません。インテル® コンパイラー 11.1 ではまだサポートされています。
1.4
ドキュメント
製品ドキュメントは、「インストール先フォルダー」で示されているように、 Documentation フォルダーに保存されています。
最適化に関する注意事項
インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプ ロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテ ル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡 張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セット に関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではな いマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製 品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を 目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、イ ンテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である 特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照して ください。 改訂 #20110804
1.5
サンプル
製品コンポーネントのサンプルは、「インストール先フォルダー」の説明にある Samples フォルダーに用意されています。1.6
日本語サポート
インテル® コンパイラーは、日本語ユーザー向けのサポートを提供しています。エラーメッ セージ、ビジュアル開発環境ダイアログ、ドキュメントの一部が英語のほかに日本語でも提 供されています。エラーメッセージやダイアログの言語は、システムの言語設定に依存しま す。日本語版ドキュメントは、Documentation および Samples ディレクトリー以下の ja_JP サブディレクトリーにあります。 日本語サポート版は、インテル® C++ Composer XE 2013 のアップデートとして提供されます。 日本語サポート版を英語のオペレーティング・システムで使用する場合や日本語のオペレー ティング・システムで英語サポート版を使用する場合は、http://intel.ly/qhINDv (英語) の説明 を参照してください。1.7
テクニカルサポート
インストール時に製品の登録を行わなかった場合は、インテル® ソフトウェア開発製品レジ ストレーション・センター (http://registrationcenter.intel.com) で登録してください。登録を 行うことで、サポートサービス期間中 (通常は 1 年間)、製品アップデートと新しいバージョ ンの入手を含む無償テクニカルサポートが提供されます。 テクニカルサポート、製品のアップデート、ユーザーフォーラム、FAQ、ヒント、およびそ の他のサポート情報は、http://www.intel.com/software/products/support/ (英語) を参照して ください。 注: 代理店がテクニカルサポートを提供している場合は、インテルではなく代理店にお問い 合わせください。2
インストール
本製品のインストールには、有効なライセンスファイルまたはシリアル番号が必要です。本 製品を評価する場合には、インストール時に [製品を評価する (シリアル番号不要)] オプショ ンを選択してください。 DVD 版を購入した場合は、DVD をドライブに挿入し、DVD のトップレベル・ディレクト リーにディレクトリーを変更 (cd) して、次のコマンドでインストールを開始します。 ./install.sh ダウンロード版を購入した場合は、次のコマンドを使用して、書き込み可能な任意のディレ クトリーに展開します。 tar –xzvf name-of-downloaded-file その後、展開したファイルを含むディレクトリーに移動 (cd) し、次のコマンドでインス トールを開始します。 ./install.sh 手順に従ってインストールを完了します。 利用可能なダウンロード・ファイルには各種あり、それぞれ異なるコンポーネントの組み合 わせを提供していることに注意してください。ダウンロード・ページを注意深くお読みにな り、適切なファイルを選択してください。 新しいバージョンをインストールする前に古いバージョンをアンインストールする必要はあ りません。新しいバージョンは古いバージョンと共存可能です。2.1
インテル® Software Manager
インテル® Software Manager は、製品アップデートの配信方法を簡素化し、現在インストー ルされているすべてのインテル® ソフトウェア製品のライセンス情報とステータスを表示し ます。 将来の製品設計の参考のため、製品使用状況に関する匿名情報をインテルに提供する、イン テル® ソフトウェア向上プログラムに参加できます。このプログラムは、デフォルトで無効 になっていますが、インストール中または後から有効にして参加できます。参加はいつでも 取りやめることができます。詳細は、http://intel.ly/SoftwareImprovementProgram (英語) を 参照してください。2.2
インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (イ
ンテル® MPSS) のインストール
インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (インテル® MPSS) は、 インテル® Composer XE 2013 Linux* 版 (インテル® MIC アーキテクチャー対応) のインストー ル前またはインストール後にインストールできます。 ユーザー空間およびカーネルドライバーのインストールに必要な手順については、インテ ル® MPSS のドキュメントを参照してください。2.3
クラスターでのインストール
Linux* クラスターの複数のノードに製品をインストールするには、次の手順に従う必要があ ります。1) インテル® Cluster Studio がインストールされているシステムでインストールを実行します。 クラスターのマシン間をパスワードなしで ssh 接続できるように設定する必要がありま す。 2) ステップ "4 オプション" で、"クラスターのインストール" オプションが表示されます。 デフォルトは "現在のノード" です。 3) クラスターにインストールするには、このオプションを選択して、クラスターノードの IP アドレス、ホスト名、FQDN、その他の情報が記述された machines.LINUX ファイル (1 行に 1 ノード) を指定します。最初の行には、現在の (マスター) ノードの情報を記述 します。 4) machines.LINUX ファイルを指定すると、"並行インストールの数" および "共有イン ストール・ディレクトリーのチェック" オプションが表示されます。 5) すべてのオプションを設定してインストールを開始すると、すべてのノードの接続 (必要 条件) が確認され、接続されているノードに製品がインストールされます。
2.4
サイレント・インストール
自動インストール、「サイレント」インストール機能についての詳細は、 http://intel.ly/ngVHY8 (英語) を参照してください。2.5
ライセンスサーバーの使用
「フローティング・ライセンス」を購入された場合は、ライセンスファイルまたはライセン スサーバーを使用したインストール方法について http://intel.ly/pjGfwC (英語) を参照してく ださい。この記事には、多様なシステムにインストールすることができるインテル・ライセ ンス・サーバーに関する情報も記述されています。2.6 Eclipse*
統合のインストール
「Eclipse* 統合」セクションを参照してください。2.7 Security-Enhanced Linux* (SELinux*)
インテル® C++ Composer XE の以前のバージョンでは、インストール時に SELINUX モード を permissive に設定する必要がありましたが、インテル® C++ Composer XE 2013 以降は、 この設定を行う必要がなくなりました。
2.8
既知のインストールの問題
• 一部の Linux* バージョンでは、自動マウントデバイスに "実行" 許可がなく、インス トール・スクリプトを直接 DVD から実行すると、次のようなエラーメッセージが表 示されることがあります。bash:./install.sh:/bin/bash: bad interpreter:Permission denied このエラーが表示された場合は、次の例のように実行許可を含めて DVD を再マウン トします。
mount /media/<dvd_label> -o remount,exec その後、再度インストールを行ってください。 • 「システム要件」に記述されているように、本バージョンでは、IA-32 およびインテ ル® 64 アーキテクチャー・ベースのシステムで Ubuntu*、Debian* または Pardus* を サポートしています。ただし、ライセンス・ソフトウェアの制約上、Ubuntu*、 Debian* または Pardus* を搭載したインテル® 64 アーキテクチャー・システム上では、 インストール時に [製品を評価する (シリアル番号不要)] オプションで IA-32 コン ポーネントをインストールできません。これは、[製品を評価する (シリアル番号不
要)] オプションを使用する場合のみの問題です。シリアル番号、ライセンスファイ ル、フローティング・ライセンス、その他のライセンス・マネージャー操作、およ びオフラインでのアクティベーション操作 (シリアル番号を使用) には、影響はあり ません。Ubuntu*、Debian* または Pardus* を搭載したインテル® 64 アーキテク チャー・システムで、本バージョンの IA-32 コンポーネントの評価が必要な場合は、 インテル® ソフトウェア評価センター (http://intel.ly/nJS8y8 (英語)) で評価版のシリア ル番号を入手してください。
2.9
インストール先フォルダー
コンパイラーは、デフォルトでは /opt/intel にインストールされます。本リリースノー トでは、この場所を <install-dir> と表記します。コンパイラーは、別の場所にインス トールしたり、“非 root” で任意の場所にインストールすることもできます。 本リリースではディレクトリー構成がインテル® コンパイラー 11.1 から変更されています。 インテル® C++ Composer XE 2011 の以前のリリースとインテル® C++ Composer XE 2013 では、 トップレベルのインストール・ディレクトリーが異なりますが、引き続き composerxe シ ンボリック・リンクを使用して最新の製品インストールを参照することができます。 <install-dir> 以下には次のサブディレクトリーがあります。 • bin – インストールされている最新バージョンの実行ファイルへのシンボリック・リ ンク • lib – インストールされている最新バージョンの lib ディレクトリーへのシンボリッ ク・リンク • include – インストールされている最新バージョンの include ディレクトリーへのシ ンボリック・リンク • man – インストールされている最新バージョンの man ページが含まれているディレ クトリーへのシンボリック・リンク • ipp – インストールされている最新バージョンのインテル® インテグレーテッド・ パフォーマンス・プリミティブのディレクトリーへのシンボリック・リンク • mkl – インストールされている最新バージョンのインテル® マス・カーネル・ライブ ラリーのディレクトリーへのシンボリック・リンク • tbb – インストールされている最新バージョンのインテル® スレッディング・ビル ディング・ブロックのディレクトリーへのシンボリック・リンク • composerxe – composer_xe_2013 ディレクトリーへのシンボリック・リンク • composer_xe_2013 – インストールされている最新バージョンのインテル® Composer XE 2013 コンパイラーのサブディレクトリーへのシンボリック・リンク • composer_xe_2013.<n>.<pkg> – 特定のリビジョン番号のファイルが含まれてい る物理ディレクトリー。<n> はリビジョン番号、<pkg> はパッケージビルド ID。 各 composer_xe_2013 ディレクトリーには、インストールされている最新のインテル® Composer XE 2013 コンパイラーを参照する次のサブディレクトリーが含まれています。 • bin – コンパイラー環境とホスト環境用のコンパイラー実行ファイルへのシンボリッ ク・リンクを設定するためのスクリプト • pkg_bin – コンパイラーの bin ディレクトリーへのシンボリック・リンク • include – コンパイラーの include ディレクトリーへのシンボリック・リンク • lib – コンパイラーの lib ディレクトリーへのシンボリック・リンク • ipp – ipp ディレクトリーへのシンボリック・リンク • mkl – mkl ディレクトリーへのシンボリック・リンク • tbb – tbb ディレクトリーへのシンボリック・リンク • debugger – debugger ディレクトリーへのシンボリック・リンク• eclipse_support – eclipse_support ディレクトリーへのシンボリック・リン ク • man – man ディレクトリーへのシンボリック・リンク • Documentation – Documentation ディレクトリーへのシンボリック・リンク • Samples – Samples ディレクトリーへのシンボリック・リンク 各 composer_xe_2013.<n>.<pkg> ディレクトリーには、特定のリビジョン番号のイン テル® Composer XE 2013 コンパイラーを参照する次のサブディレクトリーが含まれています。 • bin – すべての実行ファイル • pkg_bin – bin ディレクトリーへのシンボリック・リンク • compiler – 共有ライブラリーとヘッダーファイル • debugger – デバッガーファイル • Documentation – ドキュメント・ファイル • man – man ページ • eclipse_support – Eclipse* 統合をサポートするためのファイル • ipp – インテル® インテグレーテッド・パフォーマンス・プリミティブのライブラ リーとヘッダーファイル • mkl – インテル® マス・カーネル・ライブラリーのライブラリーとヘッダーファイル • tbb – インテル® スレッディング・ビルディング・ブロックのライブラリーとヘッ ダーファイル • Samples – サンプルプログラムとチュートリアル・ファイル • .scripts – インストール用スクリプト インテル® C++ コンパイラーとインテル® Fortran コンパイラーの両方がインストールされて いる場合、所定のバージョンおよびリビジョン番号のフォルダーが共有されます。 このディレクトリー構成により、任意のバージョン/リビジョン番号のインテル® Composer XE 2013 コンパイラーを選択することができます。<install-dir>/bin にある compilervars.sh [.csh] スクリプトを参照すると、インストールされている最新のコン パイラーが使用されます。このディレクトリー構成は、将来のリリースでも保持される予定 です。
2.10
削除/アンインストール
製品の削除 (アンインストール) は、製品をインストールしたユーザー (root または非 root ユーザー) で実行してください。インストールに sudo を使用した場合は、アンインストー ルの際にも使用する必要があります。インストールされているパフォーマンス・ライブラ リー・コンポーネントや Eclipse* 統合コンポーネントを残したまま、コンパイラーのみを削 除することはできません。 1. 端末を開いて、<install-dir> 以外のフォルダーに移動 (cd) します。 2. その後、次のコマンドを使用します。<install-dir>/bin/uninstall.sh 3. 画面の指示に従ってオプションを選択します。 4. 別のコンポーネントを削除するには、ステップ 2 と 3 を繰り返します。 同じバージョンのインテル® Fortran コンパイラーをインストールしている場合は、Fortran コンパイラーも削除されます。 使用している Eclipse* にインテル® C++ コンパイラーの Eclipse* 統合機能が追加されている 場合は、Eclipse* の構成からインテルの統合拡張を削除して、構成を更新する必要がありま す。そのためには、[Help (ヘルプ)] メニューから [About Eclipse (Eclipse について)] を開いて [Installation Details (インストール詳細)] をクリックします。そして、[Installed Software (イ ンストール済みのソフトウェア)] から [Intel(R) C++ Compiler XE 13.0 for Linux* OS (インテル (R) C++ Compiler XE 13.0 Linux* OS 版)]" を選択して [Uninstall... (アンインストール...)] をクリックします。処理が完了したら [Finish (完了)] をクリックして、Eclipse* の再起動を求めら れたら [Yes (はい)] を選択します。
3
インテル® メニー・インテグレーテッド・コア (インテル® MIC) アー
キテクチャー
このセクションでは、インテル® Composer XE 2013 Linux* 版 (インテル® MIC アーキテク チャー対応) の変更点、新機能、および最新情報をまとめています。
3.1
インテル® Composer XE 2013 Linux* 版のインテル® MIC アーキテク
チャー対応について
インテル® Composer XE 2013 Linux* 版 (インテル® MIC アーキテクチャー対応) は、インテル® Xeon Phi™ コプロセッサーで実行するコードの事前定義済みセクションを有効にすることに より、インテル® C++ Composer XE 2013 とインテル® Fortran Composer XE 2013 の機能セッ トを拡張します。 コプロセッサーが利用可能な場合、コードのこれらのセクションはコプロセッサーで実行さ れます。コプロセッサーが利用できない場合は、ホスト CPU で実行されます。 本リリースノートでは、オフロード操作のターゲットについて、コプロセッサーとターゲッ トという 2 つの用語を使用しています。 現在、インテル® Composer XE 2013 の次のコンポーネントでインテル® MIC アーキテク チャーをサポートしてします。 • インテル® C++ コンパイラーおよびインテル® Fortran コンパイラー • インテル® デバッガー (インテル® IDB) • インテル® マス・カーネル・ライブラリー (インテル® MKL) • インテル® スレッディング・ビルディング・ブロック (インテル® TBB) • Eclipse* IDE 統合
3.2
互換性
本リリースでは、インテル® Xeon Phi™ コプロセッサーがサポートされました。詳細は、 「テクニカルサポート」セクションを参照してください。 オフロード・ライブラリーのバイナリー変更による互換性問題を回避するため、インテル® Composer XE 2013 Update 1 ですべてのコードをリビルドすることを推奨します。 このプロセッサーの A0 ステッピングをサポートするコードを生成する必要がある場合は、 「–opt-streaming-stores never の使用についての注意」を参照してください。3.3
はじめに
インテル® 64 アーキテクチャー用とインテル® MIC アーキテクチャー用のコードは同じコン パイラーを使用して生成します。インテル® 64 アーキテクチャー用に環境を設定する場合は、 「コンパイラー環境の設定」セクションを参照してください。詳細は、「注意事項」セク ションを参照してください。3.4
製品のドキュメント
インテル® Composer XE 2013 のインテル® MIC アーキテクチャーに関連するドキュメントに は現在も修正が加えられています。ドキュメントの最新の情報については、Web サイト http://intel.ly/MxPFYx (英語) を参照してください。3.5
デバッガー
グラフィカルなデバッガーを使用するには、Eclipse* 統合で idb_mpm デバッガー・スター トアップ・スクリプト (bin/intel64_mic) を使用するように設定します。インテル® MIC アーキテクチャーで実行しているコードにアタッチするか、CPU からオフロードされたコー ドをデバッグできます。 SSH 接続でリモートシステムのデバッガーを使用するには、ローカルの X ディスプレイで SSH 表示によるラグが最小限になるように DISPLAY 環境変数を設定する必要があります。 パッケージには、これらのデバッガーのコマンドライン・バージョンも含まれています。名 前はそれぞれ、idbc (インテル® 64 アーキテクチャーのホスト向け) および idbc_mic (イ ンテル® MIC アーキテクチャーのターゲット向け) となります。 コマンドライン・バージョンのデバッガーでは自動アタッチ機能はサポートされないことに 注意してください。3.6
インテル® マス・カーネル・ライブラリー (インテル® MKL)
インテル® MIC アーキテクチャーのサポートについての詳細は、「インテル® MKL」セクショ ンを参照してください。3.7
注意事項
3.7.1 インテル® C++ コンパイラー 3.7.1.1 インテル® Composer XE 2013 の初期リリースでビルドしたバイナリーと 2013 Update 1 以降のオフロード・ライブラリーを実行するとランタイムエラーまたは クラッシュが発生する インテル® Composer XE 2013 Update 1 でのオフロード・ライブラリーのバイナリー変更に 伴い、インテル® Composer XE 2013 の初期リリースでビルドしたバイナリーと Update 1 以 降のライブラリーを使用するとランタイムエラーまたはクラッシュが発生します。この場合 に発生するエラーの例を次に示します。 エラー 1:***Warning: offload to device #0 : failed エラー 2:
Segmentation fault (core dumped) エラー 3:
terminate called after throwing an instance of 'COIRESULT' terminate called recursively
エラー 4:
CARD--ERROR:1 myoiPageFaultHandler: (nil) Out of Range!
CARD--ERROR:1 _myoiPageFaultHandler: (nil) switch to default signal handle
CARD--ERROR:1 Segment Fault!
HOST--ERROR:myoiScifGetRecvId: Call recv() Header Failed ! errno = 104
^CHOST--ERROR:myoiScifSend: Call send() Failed! errno = 104 HOST--ERROR:myoiSend: Fail to send message!
HOST--ERROR:myoiBcastToOthers: Fail to send message to 1! HOST--ERROR:myoiBcast: Fail to send message to others!
これらの問題を解決するには、アプリケーションをインテル® Composer XE 2013 Update 1 以降で再コンパイルしてから、新しいパッケージに含まれているオフロード・ライブラリー を使用してください。
3.7.1.2 デフォルトのコード生成でインテル® Xeon Phi™ コプロセッサー A0 ステッピング
のサポートを削除 (インテル® Composer XE 2013 Update 1)
インテル® Composer XE 2013 Update 1 は、インテル® Xeon Phi™ コプロセッサー B0 ステッピ ングで導入された新しいストリーミング・ストア命令をデフォルトで生成します。これらの 命令は A0 ステッピングではサポートされていないため、ランタイムエラーが発生します。 アプリケーションを A0 ステッピングで実行する必要がある場合は、–opt-streaming-stores never オプションを指定して、これらの命令が生成されないようにしてください。 このオプションを指定すると、B0 以降のステッピングではパフォーマンスが低下すること に注意してください。
3.7.1.3 –opt-assume-safe-padding オプション (インテル® Composer XE 2013 Update 1) デフォルトでは、コンパイラーは、必要に応じてパディングを挿入できる場合でも、メモ リーのオブジェクトのサイズがプログラムで記述されたサイズよりも大きいと仮定すべきで はありません。–opt-assume-safe-padding オプションが指定されると、コンパイラー は、動的に割り当てられるメモリーがパディングされ、プログラムのソースで指定されたサ イズを超えても 64 バイトまでのアクセスでは問題が発生しないことを仮定します。このオ プションは、一部のインテル® メニー・インテグレーテッド・コア命令 (インテル® MIC 命令) で要求される安全性を緩和してより高速なコードを生成するために、最適化で使用されるオ ブジェクト境界を多少超えてアクセスしても安全であることをプログラマーが宣言できるよ うに追加されました。このオプションを指定しても、コンパイラーはスタティックな自動オ ブジェクトのパディングを行いません。パディングを行うのはプログラマーの責任です。こ のオプションは、コンパイラーが安全に行える仮定を変更するだけです。デフォルトは無効 (-no-opt-assume-safe-padding) です。 3.7.1.4 –opt-streaming-cache-evict オプションと –opt-threads-per-core オプション (イン テル® Composer XE 2013 Update 1) -opt-streaming-cache-evict オプションは、インテル® MIC アーキテクチャーでスト リーミング・ロード/ストアが使用されたときのキャッシュ退避レベルを指定します。 -opt-streaming-cache-evict=0 キャッシュ退避命令は生成されません。 -opt-streaming-cache-evict=1 ストリーミング・ロード/ストア後に L1 キャッシュ退避命令が生成されます。 -opt-streaming-cache-evict=2 ストリーミング・ロード/ストア後に L2 キャッシュ退避命令が生成されます。 -opt-streaming-cache-evict=3 ストリーミング・ロード/ストア後に L1 および L2 キャッシュ退避命令が生成されま す。
-opt-threads-per-core オプションは、アプリケーションで使用するインテル® MIC アーキテクチャーのコアあたりのハードウェア・スレッド数を指定します。指定できるス レッド数は、1 から 4 までです。 3.7.1.5 新しい -fimf-domain-exclusion コンパイラー・オプション 次のコンパイラー・オプションの情報がドキュメントから削除されました。 fimf-domain-exclusion 関数が評価されたドメインを示します。 相当する IDE オプション なし アーキテクチャー インテル® MIC アーキテクチャー向けのインテル® 64 アーキテクチャー 構文 Linux*: -fimf-domain-exclusion=classList[:funcList] OS X*: なし Windows*: なし 引数 classList 次の項目のカンマ区切りのリスト。 • 1 つ以上の浮動小数点値クラス名。プログラムの正当性に影響を与えることなく関 数ドメインから除外できます。 • 1 つの簡略表記トークン。 クラス名は次のとおりです。 • extremes • nans • infinities • denormals • zeros 簡略表記トークンは次のとおりです。 • none: すべてのクラス名をドメインから除外しません。 • all: すべてのクラス名をドメインから除外します。 • common: extremes,nans,infinities,denormals と同じです。 クラストークンの順序は任意です。各トークンを 2 回以上指定できます。 funcList 関数名のカンマ句区切りのリスト。 この引数を指定しない場合、すべての数値演算ライブラリー関数にドメインの制約が適用さ れます。
デフォルト なし 説明 関数が評価されたドメインを示し、funcList で指定された関数が数のクラスで標準に準拠し た結果を生成しない場合、プログラムが正しく動作することを明示します。 3.7.1.6 リンク時に検出されない見つからないシンボル オフロード・コンパイル・モデルでは、インテル® MIC アーキテクチャーを対象とするバイ ナリーはダイナミック・ライブラリー (.so) として生成されます。ダイナミック・ライブラ リーは、参照されている変数やルーチンをロード時に解決できるため、リンク時にこれらを すべて解決する必要はありません。この動作により、ロード時に解決できない一部の見つか らない変数やルーチンを見逃してしまうことがあります。リンク時にすべての見つからない シンボルを識別して解決するには、次のコマンドライン・オプションを使用して未解決の変 数をリストします。 -offload-option,mic,compiler,"-z defs" 3.7.1.7 メモリー割り当てのパフォーマンスのチューニング この説明は、インテル® C++ Composer XE 2013 ユーザーガイドの同様の説明を更新したもの です。 コプロセッサーのユーザー割り当てデータでは、malloc や _mm_malloc の代わりに mmap() で大きな (2MB の) ページ割り当てを使用すると、アプリケーションのパフォーマ ンスが向上する場合があります。 すべてのアプリケーションで大きなページサイズを使用するメリットがあるわけではありま せん。一般に、大きなページサイズがパフォーマンスに影響するかどうかはデータ・アクセ ス・パターンに大きく依存します。アプリケーションが異なるページに割り当てられた複数 のデータ構造にアクセスする場合、コプロセッサーの 2MB ページに限られた TLB (トランス レーション・ルックアサイド・バッファー) エントリーしかないとパフォーマンスの低下を 引き起こします。 malloc および _mm_malloc のデフォルトのページサイズは 4KB です。アプリケーション で 2MB ページを使用するには、下記の方法を使用します。
3.7.1.8 –opt-prefetch-distance コンパイラー・オプション 構文: -opt-prefetch-distance=n1[,n2] n1 >=0 (負ではない整数値)、n2 も同様。n2 はオプションです。n2 が指定された場合、 n1 >= n2 でなければなりません。 使用例: -opt-prefetch-distance=64,32 -opt-prefetch-distance=16,2 -opt-prefetch-distance=24 説明: このオプションは、パフォーマンス・チューニングに使用します。このオプションを使用し て、ユーザーはプリフェッチの距離を指定できます。単位は、ループ内部のコンパイラーで 生成されるプリフェッチで使用する (ベクトル化された) 反復回数です。n1 の値は #include <string.h> #include <sys/mman.h> #include <stdio.h> #include <errno.h>
#define TWO_MB (2*1024*1024ULL)
#define MAP_HUGETLB 0x40000 /* ヒュージ・ページ・マッピングを作成 */
/* ヒュージ・ページ・サポートを使用してメモリーを割り当て */ #define MALLOC_2M(size) \
mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS \ | MAP_SHARED | \
MAP_HUGETLB| MAP_POPULATE, -1, 0) /* 割り当てたメモリーを解放 */
#define FREE_2M(addr, size) munmap(addr, (size + TWO_MB & ~(TWO_MB-1))) /**
* allocate_huge_pages - 2MB ページサポートを使用してメモリーを割り当て * @size - 割り当てるメモリーのサイズ
*/
static inline void* allocate_huge_pages(size_t size) {
size_t sz = size + TWO_MB & ~(TWO_MB-1); void* mem = MALLOC_2M(sz);
if (mem == MAP_FAILED)
printf("mmap allocation failed\n"); return mem;
vprefetch1 命令 (メモリーから L2 キャッシュへのプリフェッチ) の距離として使用され、n2 の値 (指定された場合) は vprefetch0 命令 (L2 キャッシュから L1 キャッシュへのプリフェッ チ) の距離として使用されます。このオプションが使用されなかった場合、プリフェッチの 距離はコンパイラーのヒューリスティックに基づいて決定されます。インテル® MIC アーキ テクチャーでは -opt-prefetch オプションがデフォルトでオンになっていることに注意して ください。 –opt-prefetch=0 が指定されると、このオプションは無視されます。 3.7.1.9 コンパイル時の診断の *MIC* タグ ターゲット (インテル® MIC アーキテクチャー) とホスト CPU のコンパイルを区別できるよう にコンパイラーの診断インフラストラクチャーが変更され、出力メッセージに *MIC* タグが 追加されるようになりました。このタグは、インテル® MIC アーキテクチャー用のオフロー ド拡張を使用してコンパイルしたときに、ターゲットのコンパイル診断にのみ追加されます。 下記の例で、サンプル・ソース・プログラムは、ホスト CPU とターゲットのインテル® MIC アーキテクチャーのコンパイルの両方で同じ診断を行っています。ただし、プログラムに よっては、2 つのコンパイルで異なる診断メッセージが出力されます。新しいタグが追加さ れたことで、CPU とターゲットのコンパイルを容易に区別できることが分かります。 $ icc -c sample.c
sample.c(1): 警告 #1079:*MIC* 関数 "main" の戻り型は "int" でなければなり ません。 void main() ^ sample.c(5): 警告 #120:*MIC* 戻り値の型が関数の型と一致しません。 return 0; ^
sample.c(1): 警告 #1079: 関数 "main" の戻り型は "int" でなければなりません。 void main() ^ sample.c(5): 警告 #120: 戻り値の型が関数の型と一致しません。 return 0; 3.7.1.10 ランタイム型情報 (RTTI) は未サポート 仮想共有メモリー・プログラミングでは、ランタイム型情報 (RTTI) はサポートされていま せん。特に、dynamic_cast<> と typeid() の使用はサポートされていません。 3.7.1.11 直接 (ネイティブ) モードにおけるランタイム・ライブラリーのコプロセッサー への転送 インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (インテル® MPSS) に、 /lib 以下のインテル® コンパイラーのランタイム・ライブラリー (例えば、OpenMP* ライブ ラリー libiomp5.so) が含まれなくなりました。 このため、直接モード (例えば、コプロセッサー・カード上) で OpenMP* アプリケーション を実行する場合は、アプリケーションを実行する前にインテル® MIC アーキテクチャー OpenMP* ライブラリー (<install_dir>/compiler/lib/mic/libiomp5.so) のコピー をカード (デバイス名の形式は micN; 最初のカードは mic0、2 番目のカードは mic1、...) に (scp 経由で) アップロードする必要があります。
このライブラリーが利用できない場合、次のようなランタイムエラーが発生します。 /libexec/ld-elf.so.1:"sample" で要求された共有オブジェクト "libiomp5.so" が見つかりません。 libimf.so のような別のコンパイラー・ランタイムでも同様です。必要なライブラリーは、ア プリケーションおよびビルド構成により異なります。 3.7.1.12 オフロード領域からの exit() の呼び出し オフロード領域から exit() を呼び出すと、“オフロードエラー: デバイス 0 のプロセスが コード 0 で予想外に終了しました” のような診断メッセージが出力され、アプリケーショ ンが終了します。 3.7.1.13 オフロードの動作を制御する環境変数 オフロードの動作を制御する環境変数が追加されました。 3.7.1.13.1 MIC_ENV_PREFIX 環境変数の値を各インテル® Xeon Phi™ コプロセッサーに渡す一般的な方法です。 MIC_ENV_PREFIX には、コプロセッサーを示す環境変数として使用する値を設定します。 次に例を示します。
setenv MIC_ENV_PREFIX MYCARDS
は特定のコプロセッサーを示す環境変数として文字列 “MYCARDS” を使用します。 <mic-prefix>_<var>=<value> 形式で環境変数を設定すると、各コプロセッサーに <var>=<value> が渡されます。 <mic-prefix>_<card-number>_<var>=<value> 形式で環境変数を設定すると、コプロセッサー <card-number> に <var>=<value> が渡 されます。 <mic-prefix>_ENV=<variable1=value1|variable2=value2> 形式で環境変数を設定すると、各コプロセッサーに <variable1>=<value1> および <variable2>=<value2> が渡されます。 <mic-prefix>_<card-number>_ENV=<variable1=value1|variable2=value2> 形式で環境変数を設定すると、コプロセッサー <card-number> に <variable1>=<value1> および <variable2>=<value2> が渡されます。 例:
setenv MIC_ENV_PREFIX PHI // 使用するプリフィックスを定義
setenv PHI_ABCD abcd // すべてのコプロセッサーで ABCD=abcd を設定 setenv PHI_2_EFGH efgh // コプロセッサー 2 で EFGH=efgh を設定 setenv PHI_VAR X=x|Y=y // すべてのコプロセッサーで X=x と Y=y を設定 setenv PHI_4_VAR P=p|Q=q // コプロセッサー 4 で P=p と Q=q を設定
3.7.1.13.2 MIC_USE_2MB_BUFFERS ラージページを使用してバッファーを作成するしきい値を設定します。バッファーのサイズ がしきい値を超えると、バッファーはラージページを使用して作成されます。 例: // コプロセッサーでサイズが 100KB 以上の変数を割り当てると // ラージページで割り当てられます setenv MIC_USE_2MB_BUFFERS 100k 3.7.1.13.3 MIC_STACKSIZE アプリケーションで使用されるすべてのインテル® Xeon Phi™ コプロセッサーのオフロード プロセスのスタックサイズを設定します。この環境変数はスタックサイズ全体を設定します。 各 OpenMP* スレッドのサイズを変更するには、MIC_OMP_STACKSIZE を使用します。 例:
setenv MIC_STACKSIZE 100M // MIC スタックを 100MB に設定 3.7.1.13.4 OFFLOAD_DEVICES OFFLOAD_DEVICES は、変数の値として指定されたコプロセッサーのみを使用するように プロセスを制限します。<value> は物理デバイスの番号のカンマ区切りのリストです。番 号は 0 から (システムの物理デバイスの数-1) の範囲になります。 オフロードに利用できるデバイスの番号は論理的に付けられます。 _Offload_number_of_devices() は許可されたデバイスの番号を返します。offload 宣言子の target 指定子で指定されるデバイスのインデックスは 0 から (許可されたデバイスの数 -1) の範囲になります。 例 setenv OFFLOAD_DEVICES “1,2” 3.7.2 デバッグとインテル® デバッガー 3.7.2.1 インテル® MIC プラットフォーム・ソフトウェア・スタック (インテル® MPSS Alpha 2 (2.1.3126-x) での IDB の使用 インテル® MPSS Alpha 2 (2.1.3126-x) でインテル® MIC アーキテクチャー対応インテル® デ バッガーを使用する場合は、次の制限が適用されます。 • インテル® デバッガーの Eclipse* CDT 統合は、コプロセッサーで実行するネイティ ブ・アプリケーションで "プロセスにアタッチ" をサポートしていません。 • コマンドラインでネイティブ・コプロセッサー・アプリケーションをデバッグする と、リモート・デバッグ・エージェント idbserver_mic がアップロードされ、 scp/ssh を使用して開始されます。このとき、idbc_mic を開始するために使用する ユーザー ID がコプロセッサー・カードにも存在していると想定されます。このユー ザー ID がパスワードなしで認証されるように設定されていない限り、scp および ssh でパスワードを入力する必要があります。 • コマンドラインでネイティブ・コプロセッサー・アプリケーションをデバッグする 場合、コプロセッサーに自動的にアップロードされていた共有ライブラリー libmyodbl-service.so を手動でアップロードする必要があります。 ファイルがブート時にアップロードされるように、オーバーレイを作成できます。 インテル® MPSS の readme.txt (インテル® プレミアサポートの “Intel® SDP MAKC1
に従ってください。この特定のオーバーレイを実装するために必要な手順は、次の ようになります。
a. 次の内容で /etc/sysconfig/mic/conf.d/myo.conf を作成します。 # MYO download files
Overlay / /opt/intel/mic/myo/config/myo.filelist b. 次の内容で /opt/intel/mic/myo/config/myo.filelist を作成します。 dir /lib64 755 0 0 file /lib64/libmyodbl-service.so opt/intel/mic/myo/lib/libmyodbl-service.so 755 0 0 • コマンドラインでヘテロジニアス・アプリケーションをデバッグすると、オフロー ドプロセスが root として開始されます。root 以外のユーザー ID で idbc_mic を使 用すると、リモート・デバッグ・サーバー idbserver_mic でオフロードプロセス を確認できません。この問題を回避するには、コマンドライン・デバッガー idbc_mic を root として起動します。または、デフォルトの起動オプションに -mpm-launch=1 -mpm-cardid=<card-id> オプションを追加します。 idbc_mic -mpm-launch=1 -mpm-cardid=<card-id> -tco -rconnect=tcpip:<cardip>:<port> • Eclipse* からヘテロジニアス・アプリケーションをデバッグすると、オフロードプロ セスを作成するときにエラー “オフロードエラー: デバイス 0 のプロセスを開始でき ません (エラーコード 1)” が表示されます。この問題を回避するには、オフロードプ ロセスが正常に作成されるまでデバッグセッションを再起動してください。 3.7.2.2 Eclipse* で debuggee のコマンドライン引数の設定に失敗する GDB モードで file コマンドを使用してアプリケーションをロードした場合、デバッガーは Eclipse* で debuggee のコマンドライン引数を正しく設定できません。debuggee は次のメッ セージを出力してアボートします。
*** abort -internal failure : get_command_argumentfailed この場合、IDB のコマンドライン引数に実行ファイルを追加します。 3.7.2.3 Eclipse* でローカル変数の表示に失敗する アプリケーションのデバッグ中は Eclipse* 環境でローカル変数を表示できません。 回避方法:Eclipse* の Expression ビューにローカル変数を入力して値を取得します。 3.7.2.4 オフロード・デバッグ・セッションの安全な終了方法 オフロード・アプリケーション終了時の孤児プロセスや stale デバッガーウィンドウのよう な問題を回避するには、アプリケーションが終了コードに到達する前にデバッグセッション を手動で終了します。次の手順でデバッグセッションを終了することを推奨します。 • アプリケーションが終了コードに到達する前にデバッグセッションを手動で停止し ます。 • 最初に、インテル® MIC アーキテクチャー側のデバッガーのツールバーで赤の停止ボ タンを押します。アプリケーションのオフロードされている部分が終了します。 • 次に、CPU 側のデバッガーで同じ操作を行います。 • 2 つのデバッガーはリンクされたままです。インテル® MIC アーキテクチャー側のデ バッガーはデバッグ・エージェントに接続されています。アプリケーションは CPU 側のデバッガーに (設定されたすべてのブレークポイントを含めて) ロードされてい ます。 • この時点で、両方のデバッガーウィンドウを安全に閉じることができます。
3.7.2.5 ソース・ディレクトリーの設定によるインテル® MIC アーキテクチャー側のデバッ ガーのアサーション ABR デバッガーでソース・ディレクトリーを設定すると、アサーションが発生します。 解決方法: アサーションがデバッガーの操作に影響してはなりません。アサーションを回避するには、 ソース・ディレクトリーの設定を使用しないでください。デバッガーがファイルを自動的に 特定できない場合、ファイルを指定するようにメッセージが表示されます。 3.7.2.6 デバッガーから _Cilk_shared 変数へのアクセス
CPU 側の debuggee が、オフロードされたセクションの共有変数にアクセスする前に CPU 側 のデバッガーからその変数に書き込みを行うと、書き込んだ値が失われる、間違った値が表 示される、アプリケーションがクラッシュするなどの問題が発生します。
次のようなコードスニペットについて考えてみます。 _Cilk_shared bool is_active;
_Cilk_shared my_target_func() { // デバッガーから "is_active" へアクセスすると予期しない結果を招く // ことがあります (書き込んだ値が失われたり、間違った値が表示される) is_active = true; // この時点でデバッガーから "is_active" への (読み取りまたは書き込み) // アクセスは安全であると見なされます (正しい値が表示される) }
4
インテル® C++ コンパイラー
このセクションでは、インテル® C++ コンパイラーの変更点、新機能、および最新情報をま とめています。4.1
互換性
バージョン 11.0 では、IA-32 システムのデフォルトでのコード生成において、アプリケー ションを実行するシステムでインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) が サポートされていると仮定するように変更されました。詳細は、下記を参照してください。4.2
新機能と変更された機能
インテル® C++ Composer XE 2013 には、インテル® C++ コンパイラー XE 13.0 が含まれてい ます。このバージョンでは、次の機能が新たに追加または大幅に拡張されています。これら の機能に関する詳細は、ドキュメントを参照してください。 • オフロード (プラグマ/キーワード) とネイティブ (-mmic) コンパイルの両方でインテ ル® MIC アーキテクチャーをサポート o オフロードの言語拡張 o データ・マーシャリング (非共有メモリー) 手法のオフロード拡張 o 仮想共有メモリー手法のオフロード拡張• 第 3 世代インテル® Core™ プロセッサー・ファミリー (-xCORE-AVX-I および –axCORE-AVX-I) とインテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) 対 応の将来のインテル® プロセッサー (-xCORE-AVX2 および –axCORE-AVX2) のサポート を強化
• C++11の機能 (-std=c++0x) 追加の型特性