LINUX.ORG.RU

Переосмысление программы расчета

 , , ,


2

5

У меня есть программа на С++ для расчетов методом конечных элементов.
В силу того, что написана была не очень удачно (имеется плохие структуры данных и некоторые недостатки в алгоритме всей программы),
нужно ее переписать с использованием правильных алгоритмов и технологий.
В программе нужно перейти на использование blas для увеличения скорости работы с матрицами.
Возможно в будущем придется добавить возможность использования MPI или Cuda/OpenCL.
Также ее нужно сделать более универсальной.

Поэтому возникли следующие вопросы:

1. Какие технологии и библиотеки использовать для программы?
2. Какую реализацию работы с матрицами выбрать?
3. Какой язык программирования (c++, fortran, python) выбрать и какая библиотека blas лучше подойдет?
4. Использовать ли boost и итераторы?

★★★★★

Последнее исправление: Zodd (всего исправлений: 2)
Ответ на: комментарий от Reset

Понятно, я так и понял))

З.ы. Доксиген оказывается крутая штука...

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Reset

Как ты подключаешь библиотеку linal к своим проектам? Как ты ее находишь? Я в cmake не сильно разбираюсь.

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Zodd

Я использую hgsuprepo и подцепляю linal как подрепозиторий. В корневом cmakelists у меня стоит add_subdirectory(linal), ну а далее всё цепляется просто по имени через target_link_library. cmake сам разруливает все зависимости, порядок сборки и флаги линковки.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Я использую hgsuprepo и подцепляю linal как подрепозиторий.

Т.е. аналогично ln -s ./linal?

Не слишком это перемудрено?

В корневом cmakelists у меня стоит add_subdirectory(linal)

Он сам прописывает linal_headers_dir (или как оно там называется)?

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Zodd

Не слишком это перемудрено?

Слишком. Сейчас я бы наверно сделал по другому.

Он сам прописывает linal_headers_dir (или как оно там называется)?

Ага

Reset ★★★★★
()
3 апреля 2013 г.
Ответ на: комментарий от Reset

При работе с матрицами обычно нумерация элементов начинается с 0:

for (i = 0; i < n; ++i)
...

А при работе с конечными элементами нумерация узлов и кол-ва элементов начинается с 1.
Я до сих пор использовал доступ к матрице как i+1. Как ты обошел эту проблему?

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Zodd

Я использую нестандартную нумерацию с нуля для нумерации узлов. Да, для этого пришлось потратить какое-то время и сделать все выводы в тетрадке.

Пиши в скайп, так будет быстрее. В скайпе ник resetius.

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.