Картирование потока CUDAC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Картирование потока CUDA

Сообщение Anonymous »

Будучи новичком с Cuda, моя наивная модель следующего простого ядра < /p>

Код: Выделить всё

__global__ void sumColumns(float* d_a, float* d_sum, int n) {
if (blockIdx.x < 2 && threadIdx.x < n) {
d_sum[blockIdx.x] += d_a[threadIdx.x * 2 + blockIdx.x];
}
}
был с указанием матрицы 1024 x 2 d_a , подобный вызову

Код: Выделить всё

sumColumns  (d_a, d_sum, 1024);
< /code>
пройдет все строки, столбцы (асинхронно), а затем сгенерировать сумму каждого столбца (dsum
является вектором 2 x 1, инициализированным до 0). Конечно, ничего подобного не происходит. Результат варьируется от запуска до запуска; Это никогда не производит сумму всего столбца. И в большинстве случаев сумма значительно ниже +/- 1024 (я инициализирую матрицу, чтобы иметь столбец 1s и другой столбец -1s).
Модель, которую я имею в своем уме, заключается в том, что после вызова ядра графический балл генерирует 1024 потоков в каждом блоке, а затем дается текущая нить, что заявление IF делает правильное макировка. Может ли кто -нибудь дать правильное описание того, что происходит?

Подробнее здесь: https://stackoverflow.com/questions/796 ... ad-mapping
Ответить

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

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

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

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

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