インテル® マス・カーネル・ライブラリー 9.0 Windows* 版
テクニカル・ユーザー・ノート

資料番号: 310707-003J

目次

目的
サポートするコンパイラー
インテル MKL の並列化の使用
メモリー管理
パフォーマンス
    マルチコアのパフォーマンス
構成ファイル
バージョン情報の取得
カスタム DLL ビルダー
FFTW インターフェイスのサポート
削除された FFT インターフェイスのサポート
GMP* 関数
テクニカルサポート
著作権と商標について

 

目的

本書は、インテル® マス・カーネル・ライブラリー (インテル® MKL) 9.0 Windows* 版を使用してコンパイル、リンク、および実行する方法について説明します。本書を「インテル® マス・カーネル・ライブラリー 9.0 Windows* 版リリースノート」 と「インテル® マス・カーネル・ライブラリー 9.0 Windows* 版入門ガイド」と併用し、インテル MKL 9.0 Windows 版をアプリケーションで活用する方法を参照してください。

 

サポートするコンパイラー

インテル MKL は、「リリースノート」に記載されているコンパイラーのみをサポートしています。他のコンパイラーでも正常に動作するものがありますが、「リリースノート」に記載されていないコンパイラーは正式にサポートされていません。

Compaq* Visual Fortran (CVF) コンパイラーは Compaq によるサポートが終了していますが、インテル MKL では、/Gm キーを指定することで CVF インターフェイスをインテル® Visual Fortran コンパイラーとともに使用することができます。次の説明にある stdcall は、実際には CVF コンパイラーのデフォルトのコンパイル処理で、文字列をルーチンに渡す方法の stdcall とは異なります。

ライブラリーには、cdecl (デフォルトの Microsoft* Visual C* (MSVC) インターフェイス) と stdcall (デフォルトの CVF インターフェイス) の両方のバージョンがあります。cdecl バージョンは mkl_c.libstdcall バージョンは mkl_s.lib です。cdecl または stdcall とリンクするかどうかは、必要に応じて決定してください。C の mkl_s.lib にあるルーチンを呼び出すには、extern __stdcall name( <prototype variable1>, <prototype variable2>, .. ); という文を使用します。ただし、デフォルトの CVF 形式は stdcall とは同一でないため、呼び出しシーケンスにある文字列を特別に処理する必要があります。この問題の処理は複雑ですので、CVF ドキュメントのインターフェイスに関するセクションを参照することをお勧めします。

mkl_c.lib のルーチンを呼び出すには、<type> name( <prototype variable1>, <prototype variable2>, .. ); のように宣言します。

同様に、ルーチンがデフォルトでインターフェイスとコンパイルされる場合は CVF コンパイラーは mkl_s.lib とリンクしますが、/iface=(cref,nomixed_str_len_arg) スイッチでコンパイルする場合は、mkl_c.lib が適切です。

CBLAS インターフェイスを使用すると、ヘッダーファイル mkl.h が列挙値およびすべての関数のプロトタイプを指定するため、プログラムの開発を簡素化できます。ヘッダーは、プログラムを C++ コンパイラーでコンパイルするかどうかを決定します。C++ でコンパイルする場合、あわせてインクルード・ファイルが修正されます。

現在、OMF ファイル形式を必要とするコンパイラーはサポートされていません。


 

インテル MKL の並列化の使用

インテル MKL は、スパースソルバー、LAPACK (*GETRF, *POTRF, *GBTRF, *GEQRF, *ORMQR, *STEQR, *BDSQR ルーチン)、すべてのレベル 3 BLAS、圧縮スパース行形式および対角形式のスパース BLAS 行列-ベクトルおよび行列-行列積ルーチン、すべての DFT (DFTI_NUMBER_OF_TRANSFORMS=1 でサイズが 2 の累乗でない場合、1D 変換は除く) でスレッド化されています。ライブラリーは OpenMP* スレッド化ソフトウェアを使用します。

インテル MKL でスレッドを使用すると、特定の実行環境で競合問題が発生することがあります。このような問題が発生した場合の解決方法を次にリストします。最初に、なぜこの問題が発生するかを説明します。

OpenMP ディレクティブを使用してプログラムをスレッド化し、インテル® コンパイラーでプログラムをコンパイルした場合、インテル MKL とその作成されたプログラムは、どちらも同じスレッド化ライブラリーを使用します。インテル MKL は、プログラムの並列領域に配置されているかどうかを判断して、並列領域に配置されている場合はマルチスレッド・モードで動作しません。ただし、インテル MKL は、スレッド化されたプログラムとインテル MKL が同じスレッド化ライブラリーを使用している場合のみ、この判断を行うことができます。プログラムを他の方法でスレッド化した場合、インテル MKL はマルチスレッド・モードで動作し、リソースの過使用によりパフォーマンスが低下する場合があります。次にいくつかの例と解決方法を示します。

  1. OS スレッド (Linux* では pthread、Windows では Win32* スレッド) を使用してプログラムをスレッド化した場合。ライブラリーが複数のスレッドで呼び出され、呼び出されている関数がスレッド化されている場合、インテル MKL のスレッド化をオフにする必要があります。環境変数 OMP_NUM_THREADS を 1 に設定してください。この設定はスパースソルバーを除くインテル MKL 9.0 のデフォルトです。
  2. OpenMP ディレクティブまたはプラグマを使用してプログラムをスレッド化し、インテル・コンパイラー以外のコンパイラーを使用してコンパイルした場合。OMP_NUM_THREADS を設定すると、コンパイラーのスレッド化ライブラリーとインテル MKL のスレッド化ライブラリーの両方に影響します。この場合、環境変数 MKL_SERIALYES に設定して、OMP_NUM_THREADS の値に関係なく、ライブラリーを強制的にシリアルモードにします。
  3. 各プロセッサーが 1 ノードとして扱われる MPI 通信を使用し並列化プログラムを実行するケースなど、複数のプログラムを複数の CPU が搭載されたシステムで実行する場合。スレッド化ソフトウェアは、各プロセッサーで別々のプロセスが実行されていても、複数のプロセッサーを参照できます。この場合、環境変数 OMP_NUM_THREADS を 1 に設定します。

スレッド数の設定 OpenMP ソフトウェアは環境変数 OMP_NUM_THREADS を使用します。スレッド数の設定は、環境変数で設定 (Microsoft Windows の [コントロール パネル] から [システムのプロパティ] ボックスを開き、[環境変数] パネルで設定) するか、またはプログラムを実行するシェルで設定することができます。スレッド数を変更するには、プログラムを実行するコマンドシェルで次のコマンドを入力します。

set OMP_NUM_THREADS=<使用するスレッド数>

シェルによっては、以下のように設定します。

export OMP_NUM_THREADS=<使用するスレッド数>

Microsoft Windows 98 または Windows Me では、マルチプロセッシングがサポートされていないため、変数を設定しても意味がないことに注意してください。

インテル MKL を強制的にシリアルモードにするには、環境変数 MKL_SERIALYES に設定します (set MKL_SERIAL=YES)。この設定は OMP_NUM_THREADS の値に関係なく有効になります。MKL_SERIAL はデフォルトでは設定されていません。

変数 OMP_NUM_THREADS が設定されていない場合、インテル MKL ソフトウェアはスレッド数を 1 として実行します。OMP_NUM_THREADS は、常にアプリケーションで使用するプロセッサー数に設定しておくことを推奨します。

注意: スパースソルバーのデフォルトのスレッド数は、システムのプロセッサー数になります。

 

メモリー管理

インテル MKL には、ライブラリー関数が使用するメモリーバッファーを制御するメモリー管理ソフトウェアが含まれています。インテル MKL 関数 (レベル 3 BLAS または DFT にある関数など) を呼び出すと、フリーバッファーがない場合、新規のバッファーが割り当てられます。このバッファーの割り当てはプログラムを終了するまで解放されません。プログラムの実行中にフリーメモリーが必要になった場合は、MKL_FreeBuffers() を呼び出します。メモリーバッファーが必要なライブラリー関数が再び呼び出された場合、メモリー・マネージャーは再度バッファーを割り当てます。このバッファーもプログラムが終了するまで、またはメモリーの割り当てが解除されるまで割り当てられたままになります。

メモリー管理ソフトウェアは、デフォルトで有効です。無効にするには、環境変数 MKL_DISABLE_FAST_MM に任意の値を設定して、呼び出しと呼び出しの間にメモリーが解放されるようにします。この機能を無効にすると、特にプログラムのサイズが小さい場合、レベル 3 BLAS などのルーチンのパフォーマンスに影響します。

メモリー管理では、各スレッドに割り当てられるバッファーの数に制限があります。現在は、この数は 32 です。サポートされているスレッドの最大数は、514 です。このデフォルト制限を回避するには、メモリー管理を無効にしてください。

メモリー関数名の変更
インテル MKL のメモリー管理は、メモリーの割り当てまたは解放に標準の C ランタイムメモリー関数を使用しています。MKL 9.0 から、これらの関数を独自のメモリー関数で置換できるようになりました。アプリケーション開発者がメモリー割り当て関数を置換するために必要なすべての宣言は、i_malloc.h (およびダイナミックの場合は i_malloc_dll.h) ヘッダーファイルに含まれています。これらのヘッダーファイルには、この変更をサポートするインテル・ライブラリーでメモリー割り当てを置換する方法が記述されています。

 

パフォーマンス

インテル MKL で最高のパフォーマンスを得るために、次の条件が満たされているかどうかを確認してください。

LAPACK 圧縮ルーチンのパフォーマンスについての注意:

行列のタイプや格納位置 (2 番目と 3 番目の文字) に HP、OP、PP、SP、TP、UP という文字を含む名前のルーチンは、行列上で圧縮形式で動作します (インテル MKL のマニュアルで「LAPACK ルーチン命名規則」のセクションを参照してください。)。これらのルーチンの機能は、対応する位置にある HE、OR、PO、SY、TR、UN という文字を含むアンパックルーチンの機能とまったく同じですが、パフォーマンスは大幅に低下します。
メモリー制限がそれほど厳しくない場合は、より高いパフォーマンスを得るためにアンパックルーチンを使用してください。その場合、それぞれの圧縮ルーチンで必要なメモリーよりも N2/2 多いメモリーを割り当てる必要があります。N は問題のサイズ (方程式の数) です。

例えば、対称固有値問題を高度ドライバーで解く場合、アンパックルーチンを使用すると速度が向上します。
call dsyevx(jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, info),
a は次元 lda × n で少なくとも N2 要素です。次のルーチンの代わりに使用します。
call dspevx(jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info),
ap は次元 N*(N+1)/2 です。

FFT 関数には次のような条件もあります。

IA-32 ベース・アプリケーション: 配列の最初の要素のアドレスと 2 次元配列のリーディング・ディメンジョン値、バイト単位の (n*element_size) が、キャッシュラインのサイズ (インテル® Pentium® III プロセッサーの場合は 32 バイト、インテル Pentium 4 プロセッサーの場合は 64 バイト、インテル® 64 プロセッサーの場合は 128 バイト) で割り切れること。
Itanium® ベース・アプリケーション:
- C スタイルの FFT の場合、実数部と虚数部を表す配列間の距離 L が 64 で割り切れること。最適な条件は、L=k*64 + 16 です。
- 2 次元配列のリーディング・ディメンジョンの値、バイト単位の (n*element_size) が 2 の累乗でないこと。

 

マルチコアのパフォーマンス


コアの数ではなくソケットの数でスレッド化された場合、MKL を使用するアプリケーションの実行速度は速くなりますが、マルチコアで並列アプリケーションのパフォーマンスが不安定になる問題が発生することがあります。CPU コアにスレッドをバインドすると、パフォーマンスが向上し、安定します。この処理は、スレッドにアフィニティー・マスクを設定して行います。OpenMP 機能 (例えば、インテル OpenMP を使用して KMP_AFFINITY 環境変数から利用可能な場合に推奨)、またはシステムルーチン (下記の例を参照) のいずれかで行うことができます。

オペレーティング・システムでアフィニティー・マスクを設定する例は、インテル® C++ コンパイラーを使用することです。
システムに、それぞれ 2 つのコアを持つ 2 つのソケットがあり、(MKL LAPACK を使用する) 4 スレッドの並列アプリケーションを実行した場合、パフォーマンスは非常に不安定になります。スレッドを適切なコアにバインドしてスレッドのマイグレーションを防ぐには、LAPACK 呼び出しの前に、以下の緑でマークされたコードを追加します。

// Set affinity mask
#include <windows.h>
#include <omp.h>
#pragma omp parallel default(shared) private(mask)
{
   DWORD_PTR mask = (1 << omp_get_thread_num());
   SetThreadAffinityMask( GetCurrentThread(), mask );
}

// Call MKL LAPACK routine
...

アプリケーションをビルドして、4 つのスレッドで実行します。

set OMP_NUM_THREADS=4
test_application.exe

Windows API ルーチンの使用における制限については、http://msdn.microscoft.com を参照してください。

 

構成ファイル

インテル MKL 構成ファイルでは、以下のライブラリーの機能をカスタマイズすることができます。

デフォルトでは、構成ファイルは mkl.cfg ファイルです。このファイルには、変更可能な複数の変数が含まれています。次に、すべての変数とそのデフォルト値を含む構成ファイルの例を示します。

//
// Default values for mkl.cfg file
//
// DLL names for IA-32
MKL_X87dll = mkl_def.dll
MKL_SSE1dll = mkl_p3.dll
MKL_SSE2dll = mkl_p4.dll
MKL_SSE3dll = mkl_p4p.dll
MKL_VML_X87dll = mkl_vml_def.dll
MKL_VML_SSE1dll = mkl_vml_p3.dll
MKL_VML_SSE2dll = mkl_vml_p4.dll
MKL_VML_SSE3dll = mkl_vml_p4p.dll
// DLL names for Intel® EM64T
MKL_EM64TDEFdll = mkl_def.dll
MKL_EM64TSSE3dll = mkl_p4n.dll
MKL_VML_EM64TDEFdll = mkl_vml_def.dll
MKL_VML_EM64TSSE3dll = mkl_vml_p4n.dll
// DLL names for Intel® Itanium® processor family
MKL_I2Pdll = mkl_i2p.dll
MKL_VML_I2Pdll = mkl_vml_i2p.dll
// DLL names for LAPACK libraries
MKL_LAPACK32dll = mkl_lapack32.dll
MKL_LAPACK64dll = mkl_lapack64.dll
// Serial or parallel mode
//     YES – single threaded
//     NO - multi threaded
//     OMP – control by OMP_NUM_THREADS
MKL_SERIAL = YES
// Input parameters check
//     ON – checkers are used (default)
//     OFF – checkers are not used
MKL_INPUT_CHECK = ON

MKL 関数が最初に呼び出されたとき、インテル MKL は構成ファイルが存在するかどうかを確認して、存在する場合は構成ファイルの内容に従って動作します。構成ファイルのパスは、環境変数 MKL_CFG_FILE で指定します。この変数が定義されていない場合、最初に現在のディレクトリーが検索され、次に PATH 環境変数で指定されたディレクトリーが検索されます。MKL 構成ファイルが存在しない場合、ライブラリーは変数のデフォルト値を使用します (ライブラリーの標準名、チェッカーをオン、非スレッド化操作モード)。
構成ファイルで変数が指定されていない場合、または適切でない値が指定されている場合、デフォルト値が使用されます。

次に、ライブラリー名の再定義のみを含む構成ファイルの例を示します。

// DLL redefinition
MKL_X87dll = matlab_x87.dll
MKL_SSE1dll = matlab_sse1.dll
MKL_SSE2dll = matlab_sse2.dll
MKL_SSE3dll = matlab_sse2.dll
MKL_ITPdll = matlab_ipt.dll
MKL_I2Pdll = matlab_i2p.dll

 

バージョン情報の取得

インテル MKL には、ライブラリーに関する情報 (バージョン番号など) を取得できる機能があります。これには、MKLGetVersionString 関数を使用してバージョン文字列を取得する方法と、MKLGetVersion 関数を使用してバージョン情報を含む MKLVersion 構造を取得する方法の 2 つの方法があります。examples\versionquery ディレクトリーに、バージョン情報取得用のサンプルプログラムがあります。例を自動的にビルドして、現在のライブラリーのバージョン情報を含むサマリーファイルを出力する makefile も提供されています。

 

カスタム DLL ビルダー

カスタム DLL ビルダーは、選択した関数でのダイナミック・ライブラリーの作成を目的とし、tools/builder フォルダーに配置されています。ビルダーには makefile および関数リストの定義ファイルが含まれます。makefile には、"ia32"、"ipf"、および "em64t" の 3 つのターゲットがあります。ia32 ターゲットは IA-32、ipf ターゲットはインテル Itanium プロセッサー・ファミリー、そして em64t ターゲットはインテル 64 対応のインテル® Xeon® プロセッサーに使用します。
makefile には複数のマクロ (パラメーター) が含まれています。

interface = cdecl/stdcall
IA-32 のみのインターフェイスを定義します。デフォルト値は cdecl です。
export = functions_list
このマクロは、dll にインクルードされるエントリーポイント関数のリストを含むファイルの名前を決定します。このファイルは定義ファイルの作成およびエクスポート・テーブルの作成に使用されます。デフォルトのファイル名は functions_list です。
name = mkl_custom
このマクロは、ビルドする dll とインターフェイス・ライブラリーの名前を指定します。デフォルトでは、mkl_custom.dllmkl_custom.lib がビルドされます。
xerbla = user_xerbla.obj
このマクロは、ユーザーのエラーハンドラーを含むオブジェクト・ファイルの名前を指定します。このエラーハンドラーはライブラリーに追加され、標準の MKL エラーハンドラー xerbla の代わりに使用されます。デフォルトでは、パラメーターが指定されていない場合、標準の MKL エラーハンドラー xerbla が使用されます。IA-32 の場合、オブジェクト・ファイルはインターフェイス・マクロに従って適切なインターフェイス (cdecl または stdcall) になければなりません。

すべてのパラメーターは必須ではありません。最も簡単なコマンドは nmake ia32 です。残りのパラメーターの値はデフォルトになります。この場合、IA-32 用の mkl_custom.dllmkl_custom.lib が cdecl インターフェイスとともに作成され、functions_list ファイルから関数リストが取得されて、標準の MKL エラーハンドラー xerbla が使用されます。

その他の例 (より複雑な場合):
nmake ia32 interface=stdcall export=my_func_list.txt name=mkl_small xerbla=my_xerbla.obj
この場合、IA-32 用の mkl_small.dllmkl_small.libstdcall インターフェイスとともに作成され、my_func_list.txt ファイルから関数リストが取得されて、ユーザーのエラーハンドラー my_xerbla.obj が使用されます。

functions_list ファイルのエントリーポイントはインターフェイスにあわせて調整します。例えば、cdecl エントリーポイントは次のようにリストされます。

DGEMM
DTRSM
DDOT
DGETRF
DGETRS
cblas_dgemm
cblas_ddot

stdcall インターフェイスのエントリーポイントの例:

_DGEMM@60
_DDOT@20
_DGETRF@24

IA-32 用の MKL スタティック・ライブラリーには、それぞれ異なるプロセッサーを対象にしたバージョンが含まれています。バージョンの違いは次のプリフィックスで識別できます。

functions_list ファイルでインターフェイスのエントリーポイントが使用されている場合、カスタム dll には、ディスパッチャーで管理されるすべての対応プロセッサー・バージョンを持つ関数が含まれます。functions_list ファイルでプロセッサー固有のエントリーポイントを指定することで、固有のプロセッサー・バージョンの関数だけを含むライブラリーを作成することが可能です。例えば、Pentium 4 プロセッサー・バージョンの BLAS 関数をいくつかカスタム dll 用に選択します。

DGEMM=_MKL_BLAS_p4_dgemm
DDOT=_MKL_BLAS_p4_ddot
DTRSM=_MKL_BLAS_p4_dtrsm

LAPACK 関数、PARDISO 関数、および cblas インターフェイス関数に対するプロセッサー固有のバージョンはありません。

インテル 64 対応アプリケーションおよび Itanium 2 ベース・アプリケーションの場合の注意

1289 以降の新しい SDK には、外部参照 _security_cookie を解決する bufferoverflowu.lib が含まれています。makefile にはこのライブラリーとともに "BUF_LIB=bufferoverflowu.lib" マクロが含まれています。古い SDK を使用する場合は、このマクロを空にする ("BUF_LIB=") か、またはリンク文字列から削除します。

 

FFTW インターフェイスのサポート

インテル MKL では、FFTW インターフェイスからインテル MKL 離散フーリエ変換インターフェイス (DFTI) の呼び出しを可能にするラッパーの 2 つのコレクションが提供されています。これらのコレクションは、それぞれ FFTW バージョン 2.x、3.x と、インテル MKL バージョン 7.0 以降に対応しています。
これらのラッパーは、FFTW を使用しているプログラムが、ソースコードを変更しなくても、インテル MKL フーリエ変換のパフォーマンスを実現できるように提供されています。FFTW 2.x ラッパーの使用についての詳細は、「FFTW to Intel® MKL Wrappers Technical User Notes for FFTW 2.x」 (fftw2xmkl_notes.htm)、FFTW 3.x ラッパーの使用についての詳細は、「FFTW to Intel® MKL Wrappers Technical User Notes for FFTW 3.x」 (fftw3xmkl_notes.htm) を参照してください。

 

削除された FFT インターフェイスのサポート

インテル MKL には、FFT から DFTI ラッパーのコレクションが用意されています。これらのラッパーを使用することで、本リリースで提供が終了したインテル高速フーリエ変換 (FFT) インターフェイスを現在使用しているプログラムでは、プログラムのソースコードを変更することなくインテル MKL フーリエ変換 (DFTI) を使用できるようになります。詳細は、「Intel® Math Kernel Library FFT to DFTI Wrappers Technical User Notes」を参照してください。

 

GMP* 関数

インテル MKL の GMP 演算関数の実装には、任意精度による整数計算が含まれます。関数のインターフェイスは、GMP (GNU Multiple Precision*) 計算ライブラリーと互換性が保たれています。GMP 関数の仕様については、http://www.swox.com/gmp/manual/Integer-Functions.html を参照してください。

プログラムで GMP ライブラリーを使用している場合は、INCLUDE 文を mkl_gmp.h に変更してください。

 

テクニカルサポート

インテル MKL のサポートについては、Web サイト http://support.intel.com/support/jp/performancetools/index.htm を参照してください。

 


著作権と商標について

本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスを許諾するためのものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証 (特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的所有権を侵害していないことへの保証を含む) にも一切応じないものとします。インテル製品は、医療、救命、延命措置、重要な制御または安全システム、核施設などの目的に使用することを前提としたものではありません。
インテル製品は、予告なく仕様や説明が変更される場合があります。

本資料で説明されているソフトウェアには、不具合が含まれている可能性があり、公開されている仕様とは異なる動作をする場合があります。現在までに判明している不具合の情報については、インテルのサポートサイトをご覧ください。

本資料およびこれに記載されているソフトウェアはライセンス契約に基づいて提供されるものであり、その使用および複製はライセンス契約で定められた条件下でのみ許可されます。本資料で提供される情報は、情報供与のみを目的としたものであり、予告なく変更されることがあります。また、本資料で提供される情報は、インテルによる確約と解釈されるべきものではありません。インテルは本資料の内容およびこれに関連して提供されるソフトウェアにエラー、誤り、不正確な点が含まれていたとしても一切責任を負わないものとします。

ライセンス契約で許可されている場合を除き、インテルからの文書による承諾なく、本書のいかなる部分も複製したり、検索システムに保持したり、他の形式や媒体によって転送したりすることは禁じられています。

機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を開発の前提にしないでください。留保または未定義の機能を不適当な方法で使用すると、開発したソフトウェア・コードをインテル・プロセッサー上で実行する際に、予測不可能な動作や障害が発生するおそれがあります。これらの機能や命令は、インテルが将来のために留保しているものです。不正な使用により、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。

本資料で説明されているソフトウェアには、不具合が含まれている可能性があり、公開されている仕様とは異なる動作をする場合があります。現在までに判明している不具合の情報については、インテルのサポートサイトをご覧ください。

 

Intel、インテル、Intel ロゴ、Itanium、Pentium、Xeon は、米国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。
 
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
 
(C) 2000-2006 Intel Corporation.