CUDAプログラムのホストコードを書いているので、標準のC関数を使用していません。memset
関数を使用して整数配列の要素を初期化する際に問題が発生しました。memset
たとえば、整数配列を次のように4つすべてに初期化するために使用できるという印象を受けました。
int num_elements = 10;
int* array_example = (int*)malloc(num_elements * sizeof(int));
memset(array_example, 4, sizeof(array_example));
しかし、これを行うと、各バイトではなく、各バイトint
が4に設定されます。
memset(array_example, 4, 1);
私は最初の整数で4を取得し、次のように言います。
memset(array_example, 4, 2);
最初の整数で1024、2番目の整数で0を取得します。関数が3番目のパラメーターで指定されたバイト数を4に設定することは理解していmemset
ますが、memsetを使用して各整数を各バイトではなく4に設定する方法はありますか?それ以外の場合、forループを使用してスタックしていますか?私のGPUは計算能力が低いので、より多くのC++を使用できる優れたCUDA追加機能にアクセスできません。