Цитата(evgdmi @ Mar 8 2010, 22:32)

Как-то просматривая руководство по IE3D наткнулся на фразу ...
... Соотношение времени на расчёт элементов матрицы и на её заполнение зависит от конкретной задачи.
у вас тут, на мой взгляд, небольшая путаница.
во-первых, заполнение матрицы (расчет элементов матрицы) - это первый этап.
прежде, чем решать систему уравнений, надо заполнить матрицу.
решение системы уравнений - это второй этап, и распараллеливается он действительно легче, потому, что решение системы линейных уравнений - стандартная операция, и наверняка уже давно существует стандартная библиотека решения систем с распараллеливанием вычислений на многоядерных машинах.
разработчику симулятора (solver'a) надо просто импортировать ее, и не надо переделывать свой код.
а вот заполняет матрицу (рассчитывает элементы матрицы) каждый разработчик (каждая фирма) по-своему. тут для распараллеливания надо мозг напрягать.
именно поэтому на первом этапе адаптации к многоядерным машинам разработчики программ ограничивались распараллеливанием решения системы.
но прогресс не стоит на месте.
у той же IE3D сейчас на этапе заполнения матрицы на Core2Quad загружены 3 ядра (на Core2Duo загружено одно), точнее загружены N-1 ядер, где N - число ядер в системе. без hyperthreading'a!
а вот Sonnet, у которого распараллеливание появилось только в последней версии, грузит все ядра на 100% на обоих этапах!
(в результате Sonnet - единственная программа, которая умудряется перегревать мой процессор

, но решает задачи на Core2Qaud ровно в четыре раза быстрее, чем на Pentium 4)
ну а разбиение задачи "на множество мелких, отдельных для каждой частоты" делается или в задачах Schematic, или в EM-Simulation, но не для параллельных вычислений на многоядерной машине, а для распределенных вычислений в кластере машин.