私は構造体の配列を扱っており、各 cuda ブロックは 1 つの構造体 (そして 1 つのみ) のデータを使用し、その周りで多くの計算を行います。プログラムが機能するために、共有メモリに構造体をロードしたいと思います。
そのような memcpy 関数を使用しようとしました:
struct LABEL_2D{
int a;
float * b[MAX];
};
__shared__ struct LABEL_2D self_label;
if(threadIdx.x == 0){
memcpy(&self_label,
label+(blockIdx.x*sizeof(struct LABEL_2D)),
sizeof(struct LABEL_2D));
}
__syncthreads();
しかし、実行時に次のエラーが発生しました: unspecified launch failure cudaGetLastError()
共有メモリに構造体をロードできるかどうか疑問に思っています。