ruzelapp
@ruzelapp
Intern Java Developer

Как распределить по процессам произвольный бинарный массив в MPICH?

Здравствуйте.

Через поток в файл записывает произвольное кол-во бинарных данных, от 100000 и более.
Есть программа (на ANSI-C) с помощью библиотеки MPICH 3.1 я его распараллелил.
На сервер имеется процессор с 4-ядрами (2 ALU + 1 FPU).

ПО я распараллелил на 8 потоков. Загвоздка вот в чем. Выявил артефакт, если у меня буфер имеет не кратное кол-во элементов (может, даже нечетное), выявляются косяки, т.ч (некоторые потоки не получают свой данные, хотя они запущены).

Помогите идеями, ходом решения, покажите колею :)
ОК, как разделить(распределить) по процессам данные?
Код в студию не могу (non-disclosure agreement).
  • Вопрос задан
  • 2485 просмотров
Пригласить эксперта
Ответы на вопрос 1
megat72
@megat72
Программист-разработчик
А в чем проблема, оставлять остаток последнему потоку?
elements_per_thread = elements_count / threads_count;
for( i = threads_count ; i-- ; ){
  thread[i].count = elements_per_thread;
}
thread[threads_count - 1].count += elements_count % threads_count;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы