Как выполнять одновременные вычисления в языке Wolfram Language
Использование множественных ядер языка Wolfram Language позволяет одновременно выполнять разные команды. Это делает возможным, например, использование пользовательского интерфейса системы the Mathematica для интерактивных вычислений в то время, как одно из ядер производит трудоемкое вычисление. Для того, чтобы использовать множественные ядра языка Wolfram Language, создайте конфигурацию нового ядра и используйте его для вычислений в новом блокноте. Шаги создания нового ядра схожи на те, что необходимы для соединения с удаленным ядром, за тем только исключением, что новое ядро будет локальным, а не удаленным.
- Запустите систему Mathematica. В меню выберете Evaluation ► Kernel Configuration Options.

- Появится диалог конфигурирования ядер.

- Для того, чтобы добавить и конфигурировать новое ядро, нажмите кнопку Add (добавить). Появится диалоговое окно Kernel Properties (параметры ядра).

- Введите подходящее название для ядра, как, например, “Alternate Local Kernel”.”
- В разделе Basic Options (основные параметры) убедитесь, что “Launch on” (выполнять на) установлено в состояние “Local Machine” (локальный компьютер).
- Нажмите кнопку OK для подтверждения выбранных значений параметров.
- Откройте новый Wolfram блокнот.
- В меню выберете Evaluation ► Notebook’s Kernel и щелкните по имени новосозданного ядра.

Этот блокнот теперь использует альтернативное ядро. Любые вычисления в этом блокноте выполняются независимо и одновременно с вычислениями в других блокнотах.
О реализации параллельных вычислений в системе Wolfram Mathematica Текст научной статьи по специальности «Компьютерные и информационные науки»
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Егорова Дарья Константиновна, Шмелева Мария Дмитриевна
В статье рассматриваются некоторые вопросы реализации параллельных вычислений в системе компьютерной алгебры Wolfram Mathematica. Проводится сравнительный анализ нескольких последовательных и параллельных алгоритмов, реализованных в
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Егорова Дарья Константиновна, Шмелева Мария Дмитриевна
Возможности параллельного программирования в математических пакетах
Оценка эффективности реализации параллельных алгоритмов на нрс-кластере
Реализация параллельного алгоритма глобального поиска на gpu
Обзор моделей параллельных вычислений
Повышение производительности расчета динамики частиц на параллельных системах
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Wolfram Mathematica 8.0 и Visual Studio 2010 c поддержкой OpenMP.The article considers some issues of implementation of parallel computing in Wolfram Mathematica. The analysis of several sequential and parallel algorithms implemented in Wolfram Mathematica 8.0 and Visual Studio 2010 with OpenMP support is presented.
Текст научной работы на тему «О реализации параллельных вычислений в системе Wolfram Mathematica»
ШМЕЛЕВА М. Д., ЕГОРОВА Д. К.
О РЕАЛИЗАЦИИ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ В СИСТЕМЕ WOLFRAM MATHEMATICA Аннотация. В статье рассматриваются некоторые вопросы реализации параллельных вычислений в системе компьютерной алгебры Wolfram Mathematica. Проводится сравнительный анализ нескольких последовательных и параллельных алгоритмов, реализованных в Wolfram Mathematica 8.0 и Visual Studio 2010 c поддержкой OpenMP.
Ключевые слова: Wolfram Mathematica, последовательный алгоритм, параллельный алгоритм, время, ускорение, эффективность.
SHMELYOVA M. D., EGOROVA D. K.
ON IMPLEMENTATION OF PARALLEL COMPUTING IN WOLFRAM MATHEMATICA SYSTEM Abstract. The article considers some issues of implementation of parallel computing in Wolfram Mathematica. The analysis of several sequential and parallel algorithms implemented in Wolfram Mathematica 8.0 and Visual Studio 2010 with OpenMP support is presented.
Keywords: Wolfram Mathematica, sequential algorithm, parallel algorithm, time, acceleration, efficiency.
Система компьютерной алгебры Wolfram Mathematica является весьма эффективным средством вычислений. На сегодняшний день система содержит порядка 5 000 функций, многие из них написаны изначально в оптимизированном виде (особенно для низкоуровневых вычислений), а большинство операций в Wolfram Mathematica, таких как операции по снижению размерности, обработка статистических данных, обработка изображений и т.п. автоматически распараллеливаются на локальные ядра. Однако существует набор инструментов (например, ParallelSum, Parallelize, ParallelMap, ParallelTable, ParallelArray, ParallelCombine и т.д.) использование которых, при реализации многопоточных задач, призвано значительно ускорить код. Отметим, что в некоторых случаях ускорения может и не быть, или оно есть, но не достаточное по сравнению с применением других средств программирования для той же задачи. Это может быть связано с тем, что применение инструментов параллельного программирования в Wolfram Mathematica, возможно, решает задачи распределения данных и сбора результатов, не учитывая, например, накладные расходы и т.п.
Приведем несколько примеров. Все вычисления проведены на 2-х ядерном Intel Core 2 Duo с установленными лицензионными версиями Wolfram Mathematica 8.0 и Visual Studio 2010 c поддержкой OpenMP.
Проведем последовательное и параллельное вычисление суммы \00 000 i реализованное на Visual Studio 2010. Результаты измерения времени вычисления приведены на рисунках 1 и 2.
Рис. 1. Последовательный алгоритм. Рис. 2. Параллельный алгоритм.
Теперь произведем эти же вычисления в системе Wolfram Mathematica. Результаты приведены на рисунках 3 и 4.
Рис. 3. Последовательный алгоритм. Рис. 4. Параллельный алгоритм.
Последовательные вычисления произвели с помощью функции Sum. ParallelSum параллельная версия Sum, которая автоматически распределяет частичные сложения между различными ядрами и процессорами. Функция AbsoluteTiming возвращает реальное время вычисления своего аргумента в секундах и результат вычисления аргумента. Ее отличие от функции Timing заключается в том, что Timing измеряет количество процессорного времени, потребляемый ядром для оценки данного выражения. Ее результат лишь приблизителен, так как, в зависимости от базовой платформы, он может включать или не включать в себя процессорное время, используемое для системных вызовов, ошибок страниц и т.д. Она также не включает в себя время центрального процессора, используемого для параллельных процессов и потоков, и на ядра системы Wolfram Mathematica [3; 4].
Вычислим эффективность и ускорение алгоритмов (см. табл. 1).
Эффективность и ускорение алгоритмов
Visual Studio Wolfram Mathematica
Последовательный алгоритм Параллельный алгоритм Последовательный алгоритм Параллельный алгоритм
Время, Т 0,019353 0,002518 0,469 0,047
Т-, Ускорение, S=— Тп 7,685861795 9,9787234
5 Эффективность, E=- 3,84293 4,9893617
Из результатов таблицы 1 видно, что E>1, т.е. мы получили суперлинейное ускорение. Это может быть связано с тем, что, например, при реализации вычислений в Visual Studio в качестве последовательного алгоритма был применен не самый оптимальный алгоритм из известных, а при вычислениях реализованных в Wolfram Mathematica увеличение количества вычислений вызвало рост суммарного объема их оперативной и кэш памяти вследствие чего, большая часть данных умещается в кэше.[1]
Рассмотрим задачу вычисления числа п. Результаты замеров времени при параллельной и последовательной реализациях в Visual Studio и Wolfram Mathematica приведены в таблице 2.
Сравнительный анализ ускорения и эффективности при параллельной и последовательной реализациях алгоритма вычисления числа я в Visual Studio и Wolfram Mathematica
Visual Studio Wolfram Mathematica
Последовательный алгоритм Параллельный алгоритм Последовательный алгоритм Параллельный алгоритм
Время, T 0,064970 0,063345 126,0468750 96,672
т1 Ускорение, S=— Тп 1,025653 1,3038612
5 Эффективность, E=- 0,512826 0,65193
Из таблиц 1 и 2 видно, что время вычислений как последовательного, так и параллельного алгоритмов приведенных тестовых задач в Wolfram Mathematica существенно больше времени выполнения тех же задач в Visual Studio. Хотя ускорение, все же, достигает
удовлетворительных значений и в первом, и во втором случае. Следует заметить, что при повторном запуске одних и тех же вычислений в Wolfram Mathematica получаем худший результат при параллельных вычислениях, так как система «запоминает» предыдущие действия и при запуске последовательного алгоритма не тратит время на вычисления, а при запуске параллельных вычислений тратит время на распределение данных по ядрам.
Решение этих проблем [2] при реализации параллельных алгоритмов в системе Wolfram Mathematica может состоять в выполнении следующих действий:
1) при контрольных замерах времени загружать данные ядра только один раз;
2) избегать необходимости обмена данными между ядрами с помощью совместно используемых данных;
3) избегать повторения идентичных вычислений на отдельных ядрах.
1. Зюзьков В. М. Компьютерная алгебра. — Томск: Издательство Томского университета, 2014. — 121 с.
2. Mangano S. Mathematica Cookbook. — O’Reilly Media, 2010. — 830 р.
Как запустить терминал языка Wolfram Language
Терминал вычислительного ядра языка Wolfram Language – это текстовая среда для выполнения вычислений. У него есть много применений, включая диагностирование трудностей с установкой. Следующий пример содержит указания для системы Mathematica.
Windows
Щелкните на меню Пуск, выбирете All Programs ► Wolfram Mathematica, потом щелкните на программу Mathematica Kernel.
Mac

- Откройте приложение Finder и откройте в нем директорию Applications. Щелкните правой кнопкой мышки или щелкните мышкой, удерживая нажатой клавишу Control по иконке Mathematica в директории Applications и выберите “Show Package Contents” (отображать содержимое пакета).
- Появится новое окно. Перейдите в папку Contents ► MacOS.
- Дважды щелкните по иконке MathKernel, чтобы запустить терминал системы Mathematica.
Linux
Откройте системный терминал и выполните следующую команду:
math
Это запустит терминальный консоль системы Mathematica.
Научный форум dxdy
как остановить вычисления NDSolve в WolframMathematika7
как остановить вычисления NDSolve в WolframMathematika7
17.01.2010, 15:28
Здравствуйте асы программирования в WolframMathematika7.
Подскажите, пожалуйста, как остановить вычисление оператора NDSolve (численное решение системы диф уравнений второго порядка) если достигнуто некоторое значение (скорость объекта стала равна нулю при торможении). В начальных условиях она задана равной пяти м/с (V0=5)?
Re: как остановить вычисления NDSolve в WolframMathematika7
17.01.2010, 15:50
С помощью опции StepMonitor можно задать проверку скорости на каждом шаге.
Re: как остановить вычисления NDSolve в WolframMathematika7
17.01.2010, 16:42
Спасибо, попробую. Наверно внутри StepMonitor
нужно создать оператор сравнения и в случае «да» сделать остановку Abort[]?
— Вс янв 17, 2010 16:29:18 —
Уважаемый Gafield.
Команда Abort[] обрывает все вычисления и позволяет получить результаты. Подскажите, пожалуйста, какую команду следует применить, чтобы остановить вычисление NDSolve, вывести графики результатов.
Я испытал следующее:
, при котором случается остановка и потом еще раз запустить вычисления до
. Или можно еще попробовать получить массив данных
с помощью Sow и Reap или в прямую в StepMonitor добавлять значения data=Append[data,] и в случае «да» делать Throw[data].
Re: как остановить вычисления NDSolve в WolframMathematika7
17.01.2010, 18:15
Спасибо, попробую.
Re: как остановить вычисления NDSolve в WolframMathematika7
18.01.2010, 12:33
С помощью опции StepMonitor и Print получилось в распечатке найти этот момент, но автоматически остановить расчет с выводом результатов пока не могу. Может кто-нибудь подскажет?
Я не понял как использовать data=Append[data,].
Re: как остановить вычисления NDSolve в WolframMathematika7
18.01.2010, 17:29
protsiv в сообщении #281380 писал(а):
Я не понял как использовать data=Append[data,].
С помощью StepMonitor, типа
data=<>;
DSolve[. StepMonitor:>Block[<>,data=Append[data,];If[. Abort]]]
В результате получится массив data, с помощью которого можно построить график. Если же программа не останавливается, то, вероятно, не умеет вычислять производную численного решения. Можно попробовать заменять конечной разностью.
Re: как остановить вычисления NDSolve в WolframMathematika7
18.01.2010, 19:22
То-ли я пока не все понял, но есть ошибка «Nonatomic expression expected at position 1 in Append[data,] (подсказка программы).
Я вставил
data=<>;
DSolve[. StepMonitor :> Block[<>, data = Append[data, ]; If[x'[t] < 0.0001, Abort]]]
5.4403673481295005`*^-6,5.000011796388096>
Что это может быть?
Re: как остановить вычисления NDSolve в WolframMathematika7
18.01.2010, 19:35
Переменная data должна уже быть списком, а не просто неизвестной переменной без значения. Надо сначал исполнить команду data=<>;
Re: как остановить вычисления NDSolve в WolframMathematika7
18.01.2010, 20:23
Я исправил
data=;
DSolve[. StepMonitor :> Block[<>, data = Append[data, ]; If[x'[t] < 0.0001, Abort]]]
Вы это имели ввиду?
Re: как остановить вычисления NDSolve в WolframMathematika7
18.01.2010, 21:11
Да. Только это массив данных, зачем присваивать первой паре символьные значения?
Re: как остановить вычисления NDSolve в WolframMathematika7
18.01.2010, 22:58
Я, к сожалению, почти не знаю язык WolframMathematiсa7. Двадцать лет назад много программировал в Фортране, а потом только в Exel и очень мало в ВижуалБейсике. Сейчас срочно нужно решать довольно большие системы диф. ур. второго порядка используя NDSolve, а я совсем не знаю как залезть к ней во внутрь, чтобы изменять на разных шагах решения отдельные исходные параметры ориентируясь на промежуточные результаты решения системы уравнений. Не могли бы Вы посоветовать хорошую литературу по этому вопросу или другие справочные материалы на русском языке?
Re: как остановить вычисления NDSolve в WolframMathematika7
18.01.2010, 23:24
Есть достаточно много книг по математике, в том числе и по решению ДУ, в том числе в сети. Но лично я ими никогда не пользовался, только хелпом
Re: как остановить вычисления NDSolve в WolframMathematika7
19.01.2010, 13:18
Я пытаюсь решать ДУ в WolframMathematiсa7, поскольку я уже начал ею пользоваться. Но ни в книгах Дьяконова В.П., ни в других (в том числе электронных) я пока не нашел хорошего изложения по тонкостям таких решений. Может, сможете подсказать?
Re: как остановить вычисления NDSolve в WolframMathematika7
19.01.2010, 21:49
protsiv в сообщении #281600 писал(а):
Я пытаюсь решать ДУ в WolframMathematiсa7, поскольку я уже начал ею пользоваться. Но ни в книгах Дьяконова В.П., ни в других (в том числе электронных) я пока не нашел хорошего изложения по тонкостям таких решений. Может, сможете подсказать?
Тонкостями в книгах вряд ли кто-то делиться будет, но по крайней мере есть так скажем гораздо более расширенные описания с примерами, нежели хэлп. Если про ОДУ речь, то вот такая книга есть M.L.Abell, J.P.Braselton «Differential Equations with Mathematica», если всякие уравнения мат.физики интересуют, то Cap F.F. «Mathematical methods in physics and engineering with Mathematica».
Хотя я солидарен с Gafield’ом, книг по математике не читаю, просматриваю и не более, а потребности удовлетворяю хэлпом.
| Страница 1 из 2 | [ Сообщений: 20 ] | На страницу 1 , 2 След. |