インテル® MKL の Java サンプル

インテル® マス・カーネル・ライブラリー (インテル® MKL) には以下のディレクトリーにさまざまな Java のサンプルが含まれています。

<mkl ディレクトリー>\examples\java.

以下のインテル® MKL 関数用のサンプルが提供されています。

サンプルのソースは以下のディレクトリーにあります。

<mkl ディレクトリー>\examples\java\examples.

サンプルは Java で記述されています。サンプルでは、以下の種類のデータを使用しています。

ただし、サンプルで使用されているラッパーは以下のことを行いません。

サンプルは、Java Native Interface (JNI* 開発者フレームワーク) を使用してインテル® MKL とバインドしています。JNI のドキュメントは、
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/jni/ から入手できます。

Java のサンプルには、バインドを行う JNI ラッパーも含まれています。ラッパーはサンプルに依存しません。独自の Java アプリケーションで使用することもできます。CBLAS、FFT、VML、VSL RNG、および ESSL 形式の畳み込み/相関関数のラッパーは互いに依存しません。

ラッパーをビルドするには、サンプルを実行してください。メイクファイルを実行すると、ラッパーのバイナリーがビルドされます。メイクファイルを実行した後、サンプルを実行して、ラッパーが正しくビルドされたかどうかを確認できます。サンプルを実行すると、<mkl ディレクトリー>\examples\java に以下のディレクトリーが作成されます。

docsincludeclasses、および bin ディレクトリーには、ラッパーのバイナリーとドキュメントが含まれます。_results ディレクトリーには、テスト結果が含まれます。

Java プログラマーにとっては、ラッパーは以下の Java クラスです。

特定のラッパーとサンプルのクラスのドキュメントは、サンプルのビルドおよび実行中に Java ソースから生成されます。ドキュメントを参照するには、(ビルドスクリプトを実行すると作成される) docs ディレクトリーにある次のファイルを開いてください。

<mkl ディレクトリー>\examples\java\docs\index.html

CBLAS、VML、VSL RNG、および FFT 用の Java ラッパーは、基本となるネイティブ関数に直接対応するインターフェイスを確立します。機能とパラメーターについては、『インテル® MKL リファレンス・マニュアル』を参照してください。ESSL 形式の関数用のインターフェイスは、com.intel.mkl.ESSL クラス用に生成されたドキュメントで説明されています。

各ラッパーは、Java のインターフェイス部分と C で記述された JNI スタブで構成されています。ソースは以下のディレクトリーにあります。

<mkl ディレクトリー>\examples\java\wrappers

CBLAS と VML 用のラッパーの Java と C 部分はどちらも標準的なアプローチを採用しているため、追加の CBLAS 関数をカバーするために使用できます。

FFT 用のラッパーは、FFT ディスクリプター・オブジェクトのライフサイクルをサポートする必要があるため、より複雑です。単一フーリエ変換を計算するには、アプリケーションはネイティブ FFT ディスクリプターの同じコピーを使用して FFT ソフトウェアを複数回呼び出す必要があります。ラッパーは、仮想マシンが Java バイトコードを実行する間、ネイティブ・ディスクリプターを保持するハンドラークラスを提供します。

VSL RNG 用のラッパーは、FFT 用のラッパーと似ています。ラッパーは、ストリームステートのネイティブ・ディスクリプターを保持するハンドラークラスを提供します。

畳み込み/相関関数用のラッパーは、"タスク・ディスクリプター" と同様のライフサイクルを仮定し、VSL インターフェイスの難易度を緩和します。ラッパーは、1 次元でより単純な、これらの関数の ESSL 形式の関数を使用します。JNI スタブは、C で記述された ESSL 形式のラッパーにインテル® MKL 関数をラップし、ネイティブメソッドへの単一呼び出しにタスク・ディスクリプターのライフサイクルを "パック" します。

ラッパーは、JNI 仕様 1.1 および 5.0 を満たしているため、新しい Java のすべての実装で動作します。

サンプルとラッパーの Java 部分は、「The Java Language Specification (First Edition)」で説明されている Java 言語用に記述され、1990 年代後半に登場したインナークラスの機能が拡張されています。この言語バージョンのレベルは、Sun の JDK (Java 開発キット) のすべてのバージョンと、バージョン 1.1.5 以降の互換性のある実装をサポートしています。

C 言語レベルは、インテル® MKL インターフェイスと JNI ヘッダーファイルで必要な、整数と浮動小数点データ型に関する追加の仮定を含む "標準 C" (C89) です。つまり、ネイティブ float および double データ型は、JNI jfloat および jdouble データ型とそれぞれ同じである必要があります。また、ネイティブ int データ型は、4 バイト長でなければなりません。

1. IBM Engineering Scientific Subroutine Library (ESSL*)。

関連情報


このヘルプトピックについてのフィードバックを送信

© 2007 - 2010 Intel Corporation. 無断での引用、転載を禁じます。