Что на самом деле происходит, когда вы вызываете cudaMalloc внутри устройства?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что на самом деле происходит, когда вы вызываете cudaMalloc внутри устройства?

Сообщение Anonymous »

Это действительно работает, поэтому мне интересно, динамически ли 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»