В сообщении от 5 мая 2009 Alexey Pechnikov написал(a):
> Ты пишешь про работу с shared memory и матричные операции. Про "загружать > кусками" слова не было. Более того, не так просто разделить матрицу так, > чтобы по результатам матричной операции с полученными частями можно было > "собрать" итоговую матрицу. А если это сделать и оперировать разделенной > матрицей, то общая память совершенно не нужна, т.к. каждый поток вычислений > работает со своими данными. Это был всего лишь пример. Вот есть у нас алгоритм, он что-то обрабатывает (ту же матрицу, будь она неладна). Алгоритм этот работает в один поток и не критичен по скорочти в том смысле, что будет быстрее - хорошо, нет - ну и фиг с ним. Чем плох вариант с использованием openMP (пара-тройка срок в коде) и задействованием всех ядер в системе (благо их больше чем одно сейчас, как правило) ? Про большие объемы сейчас речь не идет, просто "хочется, чтоб побыстрее, если можно" (желательно с минимальными изменениями в коде). > Тебе объяснили, что твой пример с матрицей не подходит, если других > аргументов нет, имей честность признать это. А насчет ерунды - повежливее > надо быть, даже если сказать нечего. Разделение матриц вовсю использовалось > еще на одноядерных компах, поскольку дает возможность обсчитывать огромные > матрицы при ограниченном ОЗУ и времени (при сбое потеряется только > результат текущей итерации). И при наличии нескольких > ядер/процессоров/компов запускается соответствующее число экземпляров > программы. У нас на кафедре так делали как минимум еще в 90-х. Ладно, если вы считаете, что этот пример плох - оставим его. Я прекрасно осознаю, что практически всё, что считают сейчас - считалось и 30 лет назад. Тем не менее, я не считаю существование нитей и openMP - бесполезным. И городить огород с процессами, передачей параметров этим процессам, запуском их в нужном количестве вручную (т.е. код для этого писать надо, да он еще и платформозависимый будет, т.к. банальное определение числа процессоров в системе зависит от ОС и т.д.) там, где можно обойтись 2-3 (10) строками для включения нитей через openMP - лично мне влом. Если результат будет один и тот же - то зачем ? Еще раз повторю - все это ИМХО и применимо не для всех задач. Если я и буду делать это через процессы - то только с использованием MPI(MPICH) - там все это выглядит естественным и не надо заморачиваться с "ручным" запуском всего этого хозяйства.