Разные темы на разных мультипроцессорах - PullRequest
1 голос
/ 06 сентября 2010

Можно ли запускать разные потоки на разных мультипроцессорах? похожи на ядра процессора?

Предположим, у меня есть 2 больших массива a, b, и я хочу вычислить как сумму, так и разницу. Допустим, у меня на устройстве 2 мультипроцессора. Можно ли одновременно запускать обе функции ядра (которые вычисляют сумму и разность) на 2 разных мультипроцессорах?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2010

Используя ваш пример вычисления как суммы, так и разницы, вероятно, будет достигнута лучшая производительность, если вы вычислите оба в одно и то же время (то есть в одном и том же ядре).

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

Для обоих вышеперечисленных случаев я настоятельно рекомендую вам ознакомиться с образцом сокращение в SDK, который проведет вас через наивную реализацию до довольно быстрой версии с хорошей документацией.

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

  1. Используйте «Параллельные ядра», где несколькоядра работают на одном и том же графическом процессоре одновременно.См. Руководство по программированию CUDA для получения дополнительной информации и ознакомьтесь с образцом concurrentKernels в SDK. По сути, вы вручную указываете планировщику, что между ними нет никакой зависимости (с помощью потоков CUDA), что позволяет затем бытьвыполняется одновременно.
  2. Установите переключатель blockIdx для выбора кода для выполнения.

Первый из них гораздо предпочтительнее, если ваше оборудование его поддерживает (вам потребуется Compute Capability2.0 или выше), поскольку читать и поддерживать его намного проще.

0 голосов
/ 06 сентября 2010

да, с использованием устройств Fermi и нескольких потоков.

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