Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

GPU での配列の確立

MATLAB®gpuArray は GPU メモリに格納される配列を表します。GPU 上の配列をサポートする関数の詳細については、GPU での MATLAB 関数の実行を参照してください。

既存のデータからの GPU 配列の作成

GPU への配列送信

GPU 配列は、ホスト メモリから既存の配列を GPU に転送することによって作成できます。関数 gpuArray を使用してホスト メモリから GPU に配列を転送します。

関数 gpuArray は、singledoubleint8 などの数値の入力引数と logical の入力引数のみをサポートします。関数 gpuArray は複素数値の入力をサポートします。詳細については、GPU 上での複素数の処理を参照してください。

N = 6;
M = magic(N);
G = gpuArray(M);

GPU からの配列の取得

GPU からホスト メモリに配列を転送するには、関数 gather を使用します。この関数は、ホスト メモリに格納される通常の MATLAB 配列を返します。isequal を使用して、関数 gather が正しい値を返したことを確認します。

GPU との間でのデータ転送は高コストになる可能性があります。gpuArray をサポートしていない関数で結果を使用する必要がある場合を除いて、一般に gather の呼び出しは不要です。

G = gpuArray(ones(100,"uint32"));
D = gather(G);
OK = isequal(D,ones(100,"uint32"))

GPU への配列の転送

1000 行 1000 列の乱数行列を作成し、GPU に転送します。GPU での乱数発生の詳細については、GPU 上の乱数ストリームを参照してください。

X = rand(1000);
G = gpuArray(X);

GPU の乱数発生の詳細については、GPU 上の乱数ストリームを参照してください。

指定した精度での配列の転送

倍精度の乱数値からなる行列を作成し、その行列を単精度の形式で GPU に転送します。

X = rand(1000);
G = gpuArray(single(X));

GPU 配列の直接作成

一部の関数では、入力引数として gpuArray タイプを指定することで、直接 GPU 上に配列を作成できます。これらの関数では配列のサイズとデータ クラスの情報のみが必要とされ、ホスト メモリから要素を転送することなく配列を作成できます。詳細については、gpuArray を参照してください。

また、名前と値の引数 "like" を使用して既存の gpuArray のデータ型をミラーリングすることで GPU 上に配列を作成することもできます。一部の関数を使用すると、like=p を入力引数として指定してプロトタイプ配列 p と同じデータ型の配列を作成できます。"like" オプションをサポートする関数には、zerosoneseyetruefalsecastrandrandirandn があります。

GPU での単位行列の作成

GPU に int32 型の 1024 行 1024 列の単位行列を作成します。

II = eye(1024,"int32","gpuArray");
size(II)
        1024        1024

GPU での多次元配列の作成

GPU に double データ型の 1 からなる 3 次元配列を作成します。

G = ones(100,100,50,"gpuArray");
size(G)
   100   100    50
underlyingType(G)
double

GPU でのベクトルの作成

GPU にゼロからなる 8192 成分の列ベクトルを作成します。

Z = zeros(8192,1,"gpuArray");
size(Z)
        8192           1

GPU でのプロトタイプ配列に基づく配列の作成

プロトタイプ配列と同じデータ型の 100 行 100 列の乱数配列を作成します。

G = gpuArray([1 2 3]);
R = rand(100,like=G);

gpuArray の特性の調査

gpuArray オブジェクトの特性を調べるには次の関数を使用します。

関数説明
underlyingType配列の基になるデータのクラス
existsOnGPU配列が GPU に存在してアクセス可能かどうかの指標
isreal配列データが実数かどうかの指標
isUnderlyingType

基となる配列のデータが、double などの指定されたクラスかどうかを判別

isequal2 つ以上の配列が等しいかどうかを判別
isnumeric配列が数値データ型であるかどうかを判別
issparse配列がスパースであるかどうかを判別
lengthベクトルの長さまたは最大の配列次元
mustBeUnderlyingType配列に double などの基となる型が指定されているかどうかを検証
ndims配列における次元の数
size配列次元のサイズ

gpuArray オブジェクト G のサイズを調べます。

G = rand(100,"gpuArray");
s = size(G)
    100   100

gpuArray オブジェクトの保存と読み込み

gpuArray 変数は MAT ファイルとして保存できます。MATLAB で gpuArray を保存すると、データは MAT ファイルに gpuArray 変数として保存されます。MATLAB で gpuArray 変数が含まれる MAT ファイルを読み込むと、データは gpuArray として GPU に読み込まれます。

メモ

GPU を使用できない場合は、gpuArray データが含まれる MAT ファイルをインメモリ配列として読み込むことができます。GPU なしで読み込まれた gpuArray には制限があり、計算には使用できません。GPU なしで読み込まれた gpuArray を使用するには、gather を使用して内容を取得します。

MATLAB ワークスペースで変数を保存し読み込む方法の詳細については、ワークスペース変数の保存と読み込みを参照してください。

参考

|

関連するトピック