OpenCL разреженный матричный доступ из ядра - PullRequest
0 голосов
/ 16 декабря 2011

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

1 Ответ

0 голосов
/ 16 декабря 2011

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

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

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

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