OpenCL — как создать отдельный математический процесс на каждом ядре

Я новичок в OpenCL и пишу приложение факторинга RSA. В идеале приложение должно работать как с NV, так и с AMD GPU, но я не нахожу простого способа определить общее количество ядер/потоковых процессов на каждом GPU.

Есть ли простой способ определить, сколько всего ядер/потоковых процессов имеется на любой аппаратной платформе, а затем создать поток факторинга на каждом доступном ядре? Целевой модуль RSA будет находиться в разделяемой памяти, и каждый поток факторинга будет использовать Rho-факторинговую атаку против модуля.

Кроме того, есть идеи, поддерживает ли OpenCL математические библиотеки с множественной точностью, подобные GNU MP, для хранения больших полупростых чисел?

заранее спасибо


person user1316349    schedule 05.04.2012    source источник
comment
Я предлагаю вам перенести свой второй вопрос в отдельный вопрос.   -  person Roger Dahl    schedule 06.04.2012


Ответы (2)


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

person Roger Dahl    schedule 05.04.2012

Чтобы добавить к ответу Роджера, причина, по которой вы хотели бы иметь гораздо больше потоков, чем ядер, заключается в том, что графические процессоры реализуют очень эффективные переключение контекста, чтобы скрыть задержку памяти. Как правило, каждый доступ к памяти является очень дорогостоящей операцией с точки зрения количества времени, необходимого процессору для получения запрошенных данных. Но если поток ожидает транзакцию в памяти, его можно «приостановить», и тем временем можно активировать другой поток для выполнения вычислений (или других обращений к памяти). Таким образом, если у вас достаточно потоков, вы можете существенно скрыть задержку доступа к памяти, и ваше программное обеспечение может работать на полной вычислительной мощности оборудования (что редко случалось бы в противном случае).

Я бы поместил это в комментарий к сообщению Роджера, но его размер зашкаливает.

person Brendan Wood    schedule 06.04.2012