Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: как максимально эффективно распределить вычисления на ядра?  (Прочитано 1212 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн _XDD_

  • Автор темы
  • Участник
  • *
  • Сообщений: 108
    • Просмотр профиля
например данные из 5 кусков, 2 потока.
2 3

5 кусков, 4 ядра.
1 1 1 2

7 кусков, 4 ядра.
2 2 2 1

9 по 4.
2 2 2 3


по какой формуле можно эффективно раскидывать зная кол-во ядер?

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Берешь целую часть от деления - по столько на каждом, остаток от деления - как угодно, но по одному на ядро. Или я не правильно понял?

Например, 35 на 4 ядра. Целая часть от деления на 4 - 8, получается 8 8 8 8. Остаток 3, их раскидываешь на первые три. Получится 9 9 9 8.
« Последнее редактирование: 31 Мая 2013, 14:51:13 от aSmile »

Оффлайн _XDD_

  • Автор темы
  • Участник
  • *
  • Сообщений: 108
    • Просмотр профиля
aSmile,
спасибо большое )))

оно ))

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Вообще, задача немного странная. Создав 4 потока, ты не можешь быть уверенным, что они будут равномерно распределены по ядрам. Хотя я могу и ошибаться, конечно.

Оффлайн appomsk

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Юзайте GNU Parallel.

Оффлайн _XDD_

  • Автор темы
  • Участник
  • *
  • Сообщений: 108
    • Просмотр профиля
aSmile,
ну это все ж таки лучше, чем если 4 потока и 9 кусов обрабатываемых данных

или
3 2 2 2

или
3 3 3 0

:)

nextme,
изучал Pthread просто )

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
обычно делают 1 очередь и N обработчиков (по кодичеству ядер)
которые сами разберут себе объекты из очереди.
очередь защищать от одновременного доступа надо

Оффлайн _XDD_

  • Автор темы
  • Участник
  • *
  • Сообщений: 108
    • Просмотр профиля
Yurror,
тут все норм было, одновременный доступ был только для чтения в принципе))

если можете скиньте пожалуйста пример как обработчикам самим распределить максимально эффективно данные тогда?

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля

Оффлайн Rosik

  • Активист
  • *
  • Сообщений: 255
  • по жизни Rosik
    • Просмотр профиля
Что и на чем разрабатываете?
#pragma omp parallel for schedule(dynamic, 10)

Оффлайн _XDD_

  • Автор темы
  • Участник
  • *
  • Сообщений: 108
    • Просмотр профиля
aSmile,
спасибо)) сейчас почитаю ))Rosik,

тоже погуглю что это такое)) пока цель - изучение.

Оффлайн Rosik

  • Активист
  • *
  • Сообщений: 255
  • по жизни Rosik
    • Просмотр профиля
_XDD_,
Это называется OpenMP - технология распараллеливания для систем с общей памятью (многоядерные ЦПУ)
Вот мануал на закуску http://bisqwit.iki.fi/story/howto/openmp/
Еще есть популярная вещь MPI - это для кластеров (системы с разделенной памятью)
Еще бывает CUDA - это для графицеских процессоров от nVidia.
Это я так, для общего развития.

Оффлайн _XDD_

  • Автор темы
  • Участник
  • *
  • Сообщений: 108
    • Просмотр профиля
Rosik,
да да, про MPI сейчас прям и читаю))

куду у меня не выйдет, у меня AMD (((

 

Страница сгенерирована за 0.07 секунд. Запросов: 25.