LINUX.ORG.RU

История изменений

Исправление eao197, (текущая версия) :

для меня (как для «не программиста») parallel computing это распаралеливание однотипных вычислений, что приводит к ускорению процесса... и этого, в принципе, достаточно.

Если уж вы взялись сами писать код, то этого недостаточно. Parallel computing — это способ уменьшить время расчета за счет эффективного распараллеливания вычислений и эффективного распределения задач по вычислительным узлам (ядрам). Соответственно, для вас здесь есть две поляны для работы:

1. Разобраться с точками распараллеливания ваших вычислительных алгоритмов. Тут вы, как специалист сами должны лучше всех понимать что к чему.

2. Разобраться с тем, какими ресурсами вы располагаете (ядра CPU, память, дополнительные узлы кластера и т.д.) и как лучше распределить эти ресурсы между вашими вычислительными задачами.

Ну и со второй поляной, как бы вы себя не позиционировали как «не программиста», вам придется разбираться и становится специалистом. И для начала вам нужно самому себе ответить, что вам нужно:

- консольное приложение, заточенное под одну вычислительную задачу, которому на вход N параметров, на выходе результаты расчетов (тогда дальше OpenMP можно не смотреть);

- GUI приложение, заточенное под одну вычислительную задачу, в котором задается N параметров и отображаются результаты расчетов (тогда Qt для GUI, OpenMP для расчетов);

- GUI приложение, являющееся менеджером нескольких вычислительных задач. Т.е. GUI-приложение из которого можно одновременно запустить несколько разных вычислительных задач параллельно. Тогда просто Qt и просто OpenMP будет мало. Т.к. если вы запустите N независимых задач, в каждой из которых OpenMP в полный рост, а в наличии всего K вычислительных ядер, то серьезные тормоза вам обеспечены. Т.к. ресурсов мало, а конкуренция за них высокая.

PS. Кстати вопрос: а почему такая крайность из MathLab в C++, а не, скажем, в Matematica?

Исходная версия eao197, :

для меня (как для «не программиста») parallel computing это распаралеливание однотипных вычислений, что приводит к ускорению процесса... и этого, в принципе, достаточно.

Если уж вы взялись сами писать код, то этого недостаточно. Parallel computing — это способ уменьшить время расчета за счет эффективного распараллеливания вычислений и эффективного распределения задач по вычислительным узлам (ядрам). Соответственно, для вас здесь есть две поляны для работы:

1. Разобраться с точками распараллеливания ваших вычислительных алгоритмов. Тут вы, как специалист сами должны лучше всех понимать что к чему.

2. Разобраться с тем, какими ресурсами вы располагаете (ядра CPU, память, дополнительные узлы кластера и т.д.) и как лучше распределить эти ресурсы между вашими вычислительными задачами.

Ну и со второй поляной, как бы вы себя не позиционировали как «не программиста», вам придется разбираться и становится специалистом. И для начала вам нужно самому себе ответить, что вам нужно:

- консольное приложение, заточенное под одну вычислительную задачу, которому на вход N параметров, на выходе результаты расчетов (тогда дальше OpenMP можно не смотреть);

- GUI приложение, заточенное под одну вычислительную задачу, в котором задается N параметров и отображаются результаты расчетов (тогда Qt для GUI, OpenMP для расчетов);

- GUI приложение, являющееся менеджером нескольких вычислительных задач. Т.е. GUI-приложение из которого можно одновременно запустить несколько разных вычислительных задач параллельно. Тогда просто Qt и просто OpenMP будет мало. Т.к. если вы запустите N независимых задач, в каждой из которых OpenMP в полный рост, а в наличии всего K вычислительных ядер, то серьезные тормоза вам обеспечили. Т.к. ресурсов мало, а конкуренция за них высокая.

PS. Кстати вопрос: а почему такая крайность из MathLab в C++, а не, скажем, в Matematica?