インテル® MKL と IMSL* Fortran 数値ライブラリーの使用

同カテゴリーの次の記事

バーゼル大学 (UB: Universität Basel) が提供する PARDISO* とインテル® MKL の PARDISO API における相違点の概要

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Using Intel® MKL with IMSL* Fortran numerical library」の日本語参考訳です。


はじめに

このアプリケーション・ノートは、Microsoft* Windows* を実行しているインテル® アーキテクチャー・システムで、インテル® MKL インテル® Visual Fortran Composer XE 2011 Windows* 版 IMSL* 6.0 同梱製品の IMSL* Fortran 数値ライブラリーを使用する手順について説明します。この手順は、ほかの方法で入手した IMSL* ライブラリーには適用できませんので、ご注意ください。

Rogue Wave Software* 社の IMSL* Fortran 数値ライブラリーは、開発者がアプリケーション開発に利用できる数学関数と統計関数の包括的なセットです。インテル® マス・カーネル・ライブラリー (インテル® MKL) は、極めて高いパフォーマンスが求められる、工学、科学、金融系アプリケーション向けに高度に最適化およびスレッド化された数学ルーチンを含むライブラリーです。詳細は、インテル® MKL の Web ページ およびインテルの IMSL* Fortran ライブラリーの Web ページ を参照してください。

インテル® MKL は、インテル® Visual Fortran Composer XE 2011 Windows* 版 IMSL* 同梱製品に含まれています。一部の IMSL* ルーチンは、インテル® MKL を呼び出すことでランタイムのパフォーマンスを向上させることができます。インテル® MKL を呼び出すバージョンと呼び出さないバージョンのどちらの IMSL* を使用するかは、アプリケーションをビルドするときに選択します。インテル® MKL を呼び出すように選択した場合、例えば、IMSL* ライブラリーの線形代数ルーチンを呼び出すと、インテル® アーキテクチャー・ベースのハードウェア用に最適化されたインテル® MKL の線形代数関数が呼び出されます。

ソフトウェアの入手

インテル® Visual Fortran Composer XE 2011 には、IMSL* が同梱されているエディションと同梱されていないエディションがあります。どちらのエディションにも、インテル® MKL の最新版が含まれています。すでに購入した製品に IMSL* を後から追加することはできません。製品情報および購入方法については、インテル® Composer XE 製品の Web ページ を参照してください。

製品は、ダウンロード版を入手できます。製品のアップデートについての通知を受け取るには、インテル® ソフトウェア開発製品レジストレーション・センターで製品の登録を行ってください。

ライセンス

インテル® Visual Fortran Composer XE Windows* 版 IMSL* 6.0 同梱製品に含まれているバージョンから、IMSL* の配布ライセンス規定が変更され、IMSL* を使用するすべてのアプリケーションについて、個別の配布ライセンスが必要になりました。詳細は、IMSL* FNL 6.0 使用許諾契約書 (EULA) (英語) および IMSL* ライセンス に関するページ を参照してください。

インストール

IMSL* のインストール方法および Visual Studio* の設定方法は、IMSL* ライブラリーのインストールと使用方法 (英語) を参照してください。

構成とビルド

リンクするライブラリーを指定する方法は 2 つあります。1 つは、コマンドラインで事前定義環境変数を使用する方法です。もう 1 つは、Fortran ソースに INCLUDE 行を追加する方法です。INCLUDE 行を追加する方法はコマンドラインと Visual Studio* 環境の両方で利用できます。最適な方法を選択してください。

INCLUDE 行を追加する場合は、Fortran ソースファイルに以下の 2 つの行のいずれかを追加します。メインプログラムに追加するのが最も一般的です。INCLUDE 行はFortran プログラム単位の任意の場所に追加できますが、PROGRAM、SUBROUTINE または FUNCTION ステートメントの直後に追加することを推奨します。

INCLUDE ‘link_fnl_hpc.h’

または

INCLUDE ‘link_fnl_shared_hpc.h’

‘link_fnl_hpc.h’ は、IMSL* およびインテル® MKL のスタティック・ライブラリーをリンクします。’link_fnl_shared_hpc.h’ は、IMSL* およびインテル® MKL のダイナミック・リンク・ライブラリー (DLL) をリンクします。

環境変数を使用する方法は、Visual Studio* とコマンドラインのどちらからビルドするかによって異なります。以下に、両方の方法を示します。

Microsoft* Visual Studio* からビルド

まず最初に、Visual Studio* で IMSL* のインクルード・フォルダーとライブラリー・フォルダーを設定する必要があります。具体的な設定方法は、IMSL* ライブラリーのインストールと使用方法 (英語) を参照してください。

IMSL* 用に Visual Studio* を設定して (ライブラリーを指定する) 適切な INCLUDE 行を追加すると、通常どおりビルドできます。

コマンドラインからビルド

以下の手順を使用して、Fortran コンパイラーのコマンドプロンプトからインテル® MKL と IMSL* Fortran 数値ライブラリーを含むアプリケーションをビルドします。

[スタート] > [すべてのプログラム] > [Intel Parallel Studio XE 2011] > [Command Prompt] > [Parallel Studio XE with Intel Compiler v12.1] > [IA-32 Visual Studio xxxx Mode (または Intel 64 Visual Studio xxxx Mode)] を選択して、インテル® Visual Fortran コンパイラーのコマンドプロンプトを開きます。xxxx には、Visual Studio のバージョン 2005/2008/2010 のいずれかが表示されます。IMSL* とインテル® MKL を使用するアプリケーションをビルドするには、この方法でコマンドプロンプトを開く必要があります。

IMSL* ライブラリーを選択する INCLUDE 行を追加している場合、通常のビルドと同じように、ifort コマンドでビルドできます。環境変数を使用する場合、以下のいずれかの環境変数をアプリケーションのリンクに使用するコマンドの最後に追加してください。

%LINK_FNL_HPC%

または

%LINK_FNL_SHARED_HPC%

%LINK_FNL_HPC% はスタティック・ライブラリーをリンクし、%LINK_FNL_SHARED_HPC% は DLL をリンクします。

次に例を示します。

ifort myprog.f90 %LINK_FNL_SHARED_HPC%

アプリケーションの実行

アプリケーションは、アプリケーションを実行しているプロセッサー向けに最適化されたインテル® MKL コードを使用します。

インテル® MKL の関数の多くは、マルチコア・プロセッサーを活用できるようにスレッド化されています。インテル® MKL 関数内の内部スレッド化を有効にするには、環境変数 OMP_NUM_THREADS の値をランタイムに使用する CPU の数に設定します。

インテル® MKL のスレッド化についての詳細は、インテル® MKL とスレッド化アプリケーションの使用 を参照してください。

付録 A – 既知の問題点と制限

IMSL* Readme ファイルの「既知の問題点、制限、違い」およびインテル® MKL リリースノートの「既知の問題点」を参照してください。

付録 C – リファレンス

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事

  • サマリー統計ライブラリーの概要サマリー統計ライブラリーの概要 この記事は、インテル® ソフトウェア・ネットワークに掲載されているブログ「Statistical Summary Library Overview」の日本語参考訳です。 統計的計算の精度とパフォーマンスが強化された最新のアルゴリズムを提供する、最適化された並列ライブラリーがインテル® MKL 10.3 […]
  • インテル® Fortran Studio XE によるマンデルブロー描画プログラムの高速化インテル® Fortran Studio XE によるマンデルブロー描画プログラムの高速化 1. はじめに インテル® Fortran Studio XE 2011 (Windows* 版および Linux* 版) は、ソフトウェア開発用言語として Fortran を採用している開発者を対象とするソフトウェア開発スイートです。インテル® (Visual) Fortran Composer XE 2011 […]
  • スリープループによる消費電力とパフォーマンスの改善スリープループによる消費電力とパフォーマンスの改善 この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Benefitting Power and Performance Sleep […]
  • インテル® IPP DLL を含むアプリケーションの配布インテル® IPP DLL を含むアプリケーションの配布 この記事は、インテル® ソフトウェア・サイトに掲載されている「Deploying applications with Intel® IPP DLLs」の日本語参考訳です。 ステップ 1 - 概要 インテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) のダイナミック・リンク・ライブラリー […]
  • キャッシュ・ブロッキング手法キャッシュ・ブロッキング手法 この記事は、インテル® ソフトウェア・サイトに掲載されている「Cache Blocking Techniques」の日本語参考訳です。 はじめに アルゴリズムの重要な変更の 1 つは、キャッシュに収まるようにデータ構造をブロッキングすることです。データのメモリーアクセスを調整し、キャッシュに大規模なデータのサブセット […]