1
delete[]
を使用してカーネル内のcudaMalloc
によって割り当てられた配列を削除したい。メモリチェッカはアクセス違反を示し、配列はメモリ内に保持され、カーネルは引き続き実行されます。カーネル内のcudaMalloc割り当てメモリを削除する
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
__global__ void kernel(int *a)
{
int *b = new int[10];
delete[] b; // no violation
delete[] a; // Memory Checker detects access violation.
}
int main()
{
int *d_a;
cudaMalloc(&d_a, 10 * sizeof(int));
kernel<<<1, 1>>>(d_a);
return 0;
}
- デバイスコードに
cudaMalloc
とnew
によって割り当てられたメモリの違いは何ですか? cudaMalloc
によって割り当てられたメモリをデバイスコードで削除することはできますか?デバイス・コードに
おかげホスト・コードで