Добрый день. Есть необходимость в том, чтобы обрабатывать большой массив данных, для примера возьмем 10 000 тыс элементов. Есть так же идея, что на двухпроцессорной системе (для примера) запустив два процесса обрабатывающих данные - обработка будет идти скорее так как процессы работают независимо друг от друга. Будет ли эффективнее обрабатывать массив из 10 000 двумя процессами следущими способами: 1. один процесс обрабатывает только четные элементы а второй только нечетные 2. каждому процессу для обработки выделена равная доля элементов (т.е. в данном примере по 5 000). Какой из способов наиболее эффективный или же разницы не будет никакой между ними ? Спасибо.
Yashin_Sergey ну уж точно не использовать чередование. Да и при использовании SSE лучше их разнести подальше.
А зачем для этого создавать несколько процессов? Можно обойтись потоками или вообще абстрагироваться от API и заюзать OpenMP, если пишешь на С++ или Fort'e, тогда, в случае если вычисление непересекающиеся, задача распараллеливания заключается в написании 2х pragm в нужном месте.
W4FhLF Я имел ввиду потоки (не мог никак вспомнить - как это по русски), извиняюсь за то, что ввел в заблуждение. Эту часть пишу на C++, под linux, думаю вот как бы параллельно всё вычислить. Спасибо за наводку на OpenMP.
Плохая идея. Т.к. кеш будет использоваться крайне неэффективно. Лучше просто поделить данные на равные доли ...