2011-12-16 3 views
0

Я пишу код OpenCL для сборки разреженной матрицы из дискретности конечных элементов, и я был бы признателен за советы относительно умной структуры, которую я мог бы использовать для сборки этой матрицы в коде ядра! Я имею в виду, мне нужно получить доступ к случайной матричной позиции в ядре!Доступ к разреженной матрице OpenCL из ядра

+0

Я не сильно разбираюсь в дискретности конечных элементов, но GPGPU.org [http://gpgpu.org/index.php?s=sparse%20matrix&searchbutton=Search] содержит много статей о разреженных матрицах. –

ответ

0

Случайный доступ к большому набору данных обходится на графическом процессоре. Я бы не позволяет всем ядрам произвольно записывать в одну главную таблицу. Это может привести к ухудшению производительности, чем к серийному процессору.

Вместо этого я, вероятно, предоставил каждому ядру свой кусок памяти для работы. Возможно, каждый из них должен собрать часть матрицы, используя небольшой список координат с корнями (строки, столбцы, значения). Каждое ядро ​​должно просто работать над собственным блоком памяти при сборке данных матрицы, а затем я вытаскиваю эти данные обратно в CPU, который будет сортироваться и перенастраиваться в более эффективный формат.

Если вам нужна дальнейшая работа над отсортированными матричными данными, было бы лучше создать второе ядро. Ядра работают лучше всего на простых задачах.

Смежные вопросы