Как скопировать блок памяти в смещенное место в памяти устройства или заполнить его нулями? - PullRequest
1 голос
/ 24 мая 2019

Я вычисляю интеграл 2D-изображения, и мне нужно pad моего 2D-изображения с нулями в первом столбце и первой строке, как я нарисовал на этом рисунке:

.

Я написал этот код, который выполняет свою работу:

cudaMemset(d_pSlice, 0, 5*4 * sizeof(float));

float* d_pVolume_tmp; // Thats a temporary pointer wich runs on the columns of d_pVolume
float* d_pSlice_tmp; // Thats a temporary pointer wich runs on the columns of d_pSlice

for (int c = 1; c < 4; c++) {

    d_pVolume_tmp = d_pVolume + ((c - 1)*4);
    d_pSlice_tmp = d_pSlice + (c *5 + 1);

    cudaMemcpy((void *)d_pSlice_tmp, (void *)d_pVolume_tmp, 4 * sizeof(float), cudaMemcpyDeviceToDevice);               
}

однако, я думаю, что это медленно.Я прочитал этот вопрос о тональной памяти, но я не совсем понимаю его роль.

Мой вопрос: существует ли другой способ, которыйбыстрее, делать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...