[A,oldA] = gpucoder.atomicAdd(A,B) は、B をグローバル メモリまたは共有メモリの A の値に加算し、結果を A に書き戻します。この演算は、読み取り、変更、書き込みの操作全体が他のスレッドからの干渉なしに実行されることが保証されているという意味でアトミックです。入力引数と出力引数の順序は、構文の規定と一致しなければなりません。
関数 gpucoder.atomicAdd を使用してシンプルなアトミック加算演算を実行し、対応する CUDA®atomicAdd() API を呼び出す CUDA コードを生成します。
1 つのファイル内に、行列入力 a および b を受け入れるエントリポイント関数 myAtomicAdd を記述します。
function [a,oldA] = myAtomicAdd(a,b)
oldA = coder.nullcopy(a);
for i = 1:size(a,1)
for j = 1:size(a,2)
for k = 1:size(a,3)
[a(i,j,k),oldA(i,j,k)] = gpucoder.atomicAdd(a(i,j,k),b(i,j,k));
endendend