2010-01-15 3 views
1

Скажите, что у нас есть неловко параллельная задача, муравьи, обеспечивающие пищу для их королевы, например.Распараллеливание задачи, сколько потоков?

X = количество пищи необходимо
Y = время он принимает муравей, чтобы получить единицу еды
Z = Чтобы получить муравей начать в поисках пищи один основной поток занимает Z секунд.

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

Для фиксированных значений X и Y, сколько потоков я говорю основной нити, чтобы нерест?

Edit: операционная среда является NVIDIA GTS250 GPU с использованием технологии CUDA над Java обертке

ответ

2

ли

  1. Настройка некоторых экспериментов.
  2. Запуск экспериментов, запись результатов.
  3. Анализ результатов.
  4. Рисовать выводы.

Пока вы не ответили на ваш вопрос (ы)

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

Аргументы о том, как должны выполняться потоки, что должны делать o/s и как аппаратные средства должны справляться, иногда освещаются, но они никогда не заменяют тестирование.

Кстати, для кормящих муравьев я подозреваю, что фиксация Y - плохая идея.

И если вы хотите более заостренную консультацию, вы можете показать нам немного больше ваших технологий - советы о потоках, подходящих для Java-программы, могут не применяться, если вы пишете Fortran + OpenMP.

+0

его для вычисления объема, поверхность геометрических элементов разделена на отдельные треугольники, и эти треугольники делают это «измерение» для распараллеливания – mglmnc

0

Как можно предположить, если каждый рабочий поток связан с ЦП, то нецелесообразно создавать больше потоков, чем у вас есть ядра.

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