Это действительно работает, поэтому мне интересно, динамически ли cuda распределяет память на устройстве в потоке? Если да, то какой смысл использовать __device__ malloc, поскольку по сравнению с этим он намного быстрее? Я спрашиваю о том, что на самом деле происходит за кулисами, когда вы используете cudaMalloc в ядре, поскольку он кажется намного быстрее, чем просто устройство malloc в куче.
#include
#include
#include
__global__ void testMem(int* time){
int* a;
cudaMalloc(&a,sizeof(int));
a[0] = 4;
time = a[0];
}
__global__ void testMem2(int* time){
}
int main(){
int* h_time = (int*)malloc(sizeof(int));
h_time[0] =0;
int* d_time;
cudaMalloc(&d_time,sizeof(int));
clock_t start1 = clock();
cudaMemcpy(d_time,h_time,sizeof(int),cudaMemcpyHostToDevice);
testMem(d_time);
cudaMemcpy(h_time,d_time,sizeof(int),cudaMemcpyDeviceToHost);
cudaDeviceSynchronize();
clock_t end1 = clock();
int result = end1- start1;
//float result = (float)*h_time;
//result =result/ CLOCKS_PER_SEC;
std::cout
Подробнее здесь: https://stackoverflow.com/questions/373 ... ide-device