can3p (can3p) wrote,
can3p
can3p

Скорость вычислений pdetool в matlab

Интересна зависимость скорости решения уравнений в частных производных от подробности сетки в matlab (пакет pdetool). Уравнения решаются численном методом конечных элементов, сетка треугольная.
Несмотря на то, что сетка генерируется средствами матлаба автоматически, есть метод заставить ее добавить в сетку узлы с нужными координатами – для этого нужно просто добавить еще одну область, граница которой будет проходить по нужным точкам, и это позволяет делать сетку неравномерной, повышая точность вычислений в той области, где это необходимо.

Также следует отметить, что уравнения решаются эффективно по скорости, и время вычислений может сильно упереться в объем доступной оперативной памяти, время вычислений примерно пропорционально росту количества треугольников. Стоит сказать, что время выполнения пересчета треугольной сетки в прямоугольную меняется отнюдь не линейно, и если оно все же необходимо, то это может сильно повлиять на выбор разбиения области.

Функция refinemesh переразбивает текущую сетку, деля каждый выбранный треугольник на четыре. Провел тестовые вычисления с разным объемом оперативной памяти на машине. Получились следующие результаты:

Количество вызовов refinemesh Количество треугольников Среднее время вычислений при 1gb RAM, c Среднее время вычислений при 4gb RAM, c
0 1274 0.35 0.36
1 5096 0.75 0.83
2 20384 3 3.5
3 81536 17 17.3
4 326144 800 100

Как и ожидалось, с изменением объема оперативной памяти скорость вычислений на грубых сильно не меняется, но дело принимает совсем другой оборот, когда система упирается в ограничения по оперативной памяти и с головой уходит в swap. Перед вычислениями стоит провести эксперимент, и выбрать максимально подробную сетку, при которой машина так делать еще не будет.


Оригинал: http://blog.dpetroff.ru/tech/pdetool_speed_matlab
Tags: matlab, parabolic, refinemesh
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments