私は現在 を研究していopenacc API
ます。ホスト上に対応する割り当て配列がなくても、デバイス上に配列を作成できるかどうか疑問に思っていました。
cuda kernel
古いを使いたいとしましょうopenacc API
。 . デバイスでのみ使用される 256 要素の配列が必要です。割り当てなしでホスト上でポインターのみを宣言すると、それらは連続したアドレスを持つ可能性があります。
present_or_create
サイズが 256 要素のこれらのポインターに句を使用した場合、デバイス上で個別の配列で終了しますか? または、ホスト上の連続するアドレスは、配列の長さと相まって、同じ配列の一部と見なされますか?
次に例を示します。ポインタ A のアドレスは 0、ポインタ B のアドレスは 4 です。
と で2 つ実行pcreate
するA[0:256]
とB[0:256]
、ホスト上のデータの範囲は と[0 , 1024]
になるため[4 , 1028]
、256 要素の 2 つの異なる配列を持つデバイスになりますか、それとも range を持つ 1 つの配列だけになります[0 , 1028]
か?
2 つの異なる配列を確保するために、最初に 2 つの配列をホストに割り当てる必要がありますか?それとも、この方法で問題なく動作するはずですか?