Tôi không thể tự mình tìm ra, cách tốt nhất để đảm bảo bộ nhớ được sử dụng trong hạt nhân của tôi là hằng số. Có một câu hỏi tương tự tại số http://stackoverflow...r-pleasant-way. Tôi đang làm việc với GTX580 và chỉ biên dịch cho khả năng 2.0. hạt nhân của tôi trông giống nhưSử dụng bộ nhớ liên tục trong mã CUDA
__global__ Foo(const int *src, float *result) {...}
tôi thực hiện đoạn mã sau trên máy chủ:
cudaMalloc(src, size);
cudaMemcpy(src, hostSrc, size, cudaMemcpyHostToDevice);
Foo<<<...>>>(src, result);
cách khác là để thêm
__constant__ src[size];
để .cu tập tin, loại bỏ src con trỏ từ hạt nhân và thực hiện
cudaMemcpyToSymbol("src", hostSrc, size, 0, cudaMemcpyHostToDevice);
Foo<<<...>>>(result);
Hai cách này tương đương hay cách đầu tiên không đảm bảo việc sử dụng bộ nhớ liên tục thay vì bộ nhớ toàn cục? kích thước thay đổi động nên cách thứ hai không tiện dụng trong trường hợp của tôi.