gpuArray
GPU に格納される配列
説明
gpuArray オブジェクトは GPU メモリに格納される配列を表します。MATLAB® や他のツールボックスにある多数の関数が gpuArray オブジェクトをサポートしており、コードに最小限の変更を加えて GPU で実行することができます。gpuArray オブジェクトを扱うには、fft、mtimes、mldivide など、gpuArray 対応の任意の MATLAB 関数を使用します。MATLAB と他のツールボックスにおける gpuArray 対応の関数の完全なリストは、GPU をサポートする関数を参照してください。詳細については、GPU での MATLAB 関数の実行を参照してください。
GPU から配列を取得する場合は (gpuArray オブジェクトをサポートしていない関数を使用する場合など)、関数 gather を使用します。
メモ
GPU を使用できない場合は、gpuArray データが含まれる MAT ファイルをインメモリ配列として読み込むことができます。GPU なしで読み込まれた gpuArray オブジェクトには制限があり、計算には使用できません。GPU なしで読み込まれた gpuArray オブジェクトを使用するには、gather を使用して内容を取得します。
作成
gpuArray を使用して、MATLAB ワークスペース内の配列を gpuArray オブジェクトに変換します。一部の MATLAB 関数でも、gpuArray オブジェクトを直接作成することができます。詳細については、GPU での配列の確立を参照してください。
入力引数
オブジェクト関数
gpuArray オブジェクトの特性を調べるためのメソッドがいくつかあります。そのほとんどは同名の MATLAB 関数と同様に動作します。
isgpuarray | 入力が gpuArray であるかどうかの判別 |
existsOnGPU | GPU で gpuArray または CUDAKernel が使用可能かどうかを判別する |
isUnderlyingType | 入力に基となるデータ型が指定されているかどうかを判別 |
ndims | 配列の次元数 |
size | 配列サイズ |
underlyingType | 配列の動作を決定する基となるデータの型 |
複数の MATLAB ツールボックスに、gpuArray をサポートする関数が含まれています。これらのツールボックスに含まれる、gpuArray オブジェクトをサポートするすべての関数のリストを表示するには、次の表のリンクを使用してください。リスト内にある情報インジケーター付きの関数には、関数を GPU 上で実行する場合に固有の制限または使用に関するメモがあります。使用に関するメモと制限は、関数のリファレンス ページの「拡張機能」の節で確認できます。個々の gpuArray 対応関数の更新の詳細については、リリース ノートを参照してください。
| ツールボックス名 | gpuArray をサポートする関数のリスト | GPU 固有のドキュメンテーション |
|---|---|---|
| MATLAB | gpuArray をサポートする関数 | |
| Statistics and Machine Learning Toolbox™ | gpuArray をサポートする関数 (Statistics and Machine Learning Toolbox) | GPU でのデータの解析とモデル化 (Statistics and Machine Learning Toolbox) |
| Image Processing Toolbox™ | gpuArray をサポートする関数 (Image Processing Toolbox) | GPU コンピューティング (Image Processing Toolbox) |
| Medical Imaging Toolbox™ | gpuArray をサポートする関数 (Medical Imaging Toolbox) | |
| Deep Learning Toolbox™ |
GPU を使用した深層学習も参照) | Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud (Deep Learning Toolbox) MATLAB による複数の GPU での深層学習 (Deep Learning Toolbox) |
| Computer Vision Toolbox™ | gpuArray をサポートする関数 (Computer Vision Toolbox) | GPU コード生成と高速化 (Computer Vision Toolbox) |
| Communications Toolbox™ | gpuArray をサポートする関数 (Communications Toolbox) | 高速化 (Communications Toolbox) |
| 5G Toolbox™ | gpuArray をサポートする関数 (5G Toolbox) | |
| Antenna Toolbox™ | gpuArray をサポートする関数 (Antenna Toolbox) | |
| Signal Processing Toolbox™ | gpuArray をサポートする関数 (Signal Processing Toolbox) | コード生成と GPU サポート (Signal Processing Toolbox) |
| Audio Toolbox™ | gpuArray をサポートする関数 (Audio Toolbox) | Code Generation and GPU Support (Audio Toolbox) |
| Wavelet Toolbox™ | gpuArray をサポートする関数 (Wavelet Toolbox) | コード生成と GPU サポート (Wavelet Toolbox) |
| Predictive Maintenance Toolbox™ | gpuArray をサポートする関数 (Predictive Maintenance Toolbox) | |
| Curve Fitting Toolbox™ | gpuArray をサポートする関数 (Curve Fitting Toolbox) | |
| Radar Toolbox | gpuArray をサポートする関数 (Radar Toolbox) |
すべての MathWorks® 製品の gpuArray をサポートする関数のリストについては、gpuArray をサポートする関数を参照してください。あるいは、製品別にフィルター処理できます。[ヘルプ] バーで [関数] をクリックします。関数リストの左ペインを参照し、MATLAB などの製品を選択します。左ペイン下部で、[GPU 配列] を選択します。gpuArray 対応の関数のない製品を選択した場合、[GPU 配列] フィルターは使用できません。
例
制限
次のいずれも
intmax("int32")を超えてはなりません。密配列の要素数。
スパース配列の非ゼロ要素数。
指定された次元のサイズ。たとえば、
zeros(0,3e9,"gpuArray")は許可されません。
関数
distributedまたは関数codistributedを使用して並列プールのワーカー間にgpuArrayを分散することはサポートされていません。複数の GPU があり、並列プールの各ワーカーが一意の GPU にアクセスする場合、代わりにデータを手動で分割するか、最初にデータを複数のgpuArrayオブジェクトとして異なるワーカー上に生成することができます。並列プール内のgpuArrayデータの使用方法を示す例については、複数の GPU での MATLAB 関数の実行を参照してください。スパースな
gpuArrayの制限:logical のスパースな GPU 配列はサポートされていません。
スパースな GPU 配列は、行または列全体のインデックスによる参照のみをサポートします。
スパースな GPU 配列にインデックスによって値を割り当てることはサポートされていません。
詳細については、GPU 上でのスパース配列の処理を参照してください。
ヒント
パフォーマンスを向上させる必要がある場合、または関数が GPU で使用できない場合、
gpuArrayは次のオプションをサポートしています。gpuArrayオブジェクトに関する純粋に要素単位のコードをプリコンパイルして実行するには、関数arrayfunを使用します。CUDA® デバイス コードまたはライブラリ呼び出しを含む C++ コードを実行するには、MEX 関数を使用します。詳細については、CUDA コードを含む MEX 関数の実行を参照してください。
CUDA C++ で記述された既存の GPU カーネルを実行するには、MATLAB
CUDAKernelインターフェイスを使用します。詳細については、GPU での CUDA または PTX コードの実行を参照してください。MATLAB コードから CUDA コードを生成するには、GPU Coder™ を使用します。詳細については、GPU Coder 入門 (GPU Coder)を参照してください。
ほとんどの GPU では、倍精度よりも単精度の方が計算の実行が速くなります。ワークフローで倍精度の必要がない場合は、
single関数を使用してデータを単精度に変換するか、単精度のgpuArrayデータを直接作成することを検討してください。詳細については、単精度での計算の実行を参照してください。GPU での乱数ストリームを制御するには、関数
gpurngを使用します。
代替方法
一部の MATLAB 関数では、gpuArray 出力を指定することにより、gpuArray オブジェクトを作成することもできます。次の表は、gpuArray オブジェクトを直接作成することが可能な MATLAB 関数の一覧です。詳細については、関数リファレンス ページの「拡張機能」節を参照してください。
| (R2024a 以降) |
| gpuArray.colon |
| gpuArray.freqspace |
| gpuArray.linspace |
| gpuArray.logspace |
| gpuArray.speye |
| gpuArray.sprand |
| gpuArray.sprandn |
| gpuArray.sprandsym |
|
