Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Программные продукты и системы, 2016, № 2 (114)

международный научно-практический журнал
Покупка
Основная коллекция
Артикул: 706082.0001.99
Программные продукты и системы : международный научно-практический журнал. - Тверь : НИИ Центрпрограммсистем, 2016. - № 2 (114). - 212 с. - ISSN 0236-235X. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1016265 (дата обращения: 04.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Научно-исследовательский институт

«Центрпрограммсистем»

Программные

продукты и системы

МЕЖДУНАРОДНЫЙ НАУЧНО-ПРАКТИЧЕСКИЙ ЖУРНАЛ

№ 2 (114), 2016

(год издания двадцать девятый)

Главный редактор

С.В. ЕМЕЛЬЯНОВ, академик РАН

Тверь

PROGRAMMNYE PRODUKTY 

I SISTEMY

(SOFTWARE & SYSTEMS)

International research and practice journal

no. 2 (114), 2016
(29th year of publication)

Editor-in-Chief 

S.V. EMELYANOV, Academician of the Russian Academy of Sciences

Tver

Russian Federation

Research Institute CENTERPROGRAMSYSTEM

 ПРОГРАММНЫЕ ПРОДУКТЫ И СИСТЕМЫ

2016, № 2 (114)

Международное научно-практическое 
приложение к международному журналу 
«ПРОБЛЕМЫ ТЕОРИИ И ПРАКТИКИ УПРАВЛЕНИЯ»
Главный редактор 
С.В. ЕМЕЛЬЯНОВ, академик РАН (г. Москва, Россия)

Научный редактор
Н.А. СЕМЕНОВ, д.т.н., профессор ТвГТУ (г. Тверь, Россия)

Рецензенты: 
А.П. Еремеев, д.т.н., профессор МЭИ (ТУ) (г. Москва, Россия)
А.П. Афанасьев, д.ф.-м.н., профессор ИППИ РАН (г. Москва, Россия)
В.М. Курейчик, д.т.н., профессор Инженерно-технологической академии ЮФУ 
(г. Таганрог, Россия)
М.И. Дли, д.т.н., профессор Смоленского филиала МЭИ (г. Смоленск, Россия)
И.А. Бессмертный, д.т.н., профессор Санкт-Петербургского университета ИТМО 
(г. Санкт-Петербург, Россия)
Г.Б. Бурдо, д.т.н., профессор ТвГТУ (г. Тверь, Россия)

Издатель НИИ «Центрпрограммсистем»

(г. Тверь, Россия)

Учредители: МНИИПУ (г. Москва, Россия),
Главная редакция международного журнала 
«Проблемы теории и практики управления»

(г. Москва, Россия),

Закрытое акционерное общество 

«Научно-исследовательский институт 

«Центрпрограммсистем» (г. Тверь, Россия)

Журнал зарегистрирован

в Комитете Российской Федерации

по печати 26 июня 1995 г.

Регистрационное свидетельство № 013831

Подписной индекс в каталоге

Агентства «Роспечать» 70799

ISSN 0236-235X (печатн.)
ISSN 2311-2735 (онлайн)

МЕЖДУНАРОДНАЯ РЕДАКЦИОННАЯ КОЛЛЕГИЯ

Семенов Н.А. – д.т.н., профессор Тверского государственного технического университета, заместитель главного 
редактора (г. Тверь, Россия)
Решетников В.Н. – д.ф.-м.н., профессор Российского государственного технологического университета 
им. К.Э. Циолковского (МАТИ), заместитель главного редактора (г. Москва, Россия)
Арефьев И.Б. – д.т.н., профессор Морской академии Польши (г. Щецин, Польша)
Афанасьев А.П. – д.ф.-м.н., профессор Московского физико-технического института (технического университета), 
заведующий Центром распределенных вычислений Института проблем передачи информации РАН (г. Москва, Россия)
Баламетов А.Б. – д.т.н., профессор Азербайджанского научно-исследовательского и проектно-изыскательского института
энергетики (г. Баку, Азербайджан)
Батыршин И.З. – д.т.н., профессор Мексиканского института нефти (г. Мехико, Мексика)
Вагин В.Н. – д.т.н., профессор Московского энергетического института (технического университета) 
(г. Москва, Россия)
Голенков В.В. – д.т.н., профессор Белорусского государственного университета информатики и радиоэлектроники 
(г. Минск, Беларусь)
Еремеев А.П. – д.т.н., профессор Московского энергетического института (технического университета)
(г. Москва, Россия)
Котов А.С. – кандидат наук, ассистент профессора университета Уэйна (штат Мичиган) (г. Детройт, США)
Кузнецов О.П. – д.т.н., профессор Института проблем управления РАН (г. Москва, Россия)
Курейчик В.М. – д.т.н., профессор Инженерно-технологической академии Южного федерального университета 
(г. Таганрог, Россия)
Лисецкий Ю.М. – к.т.н., генеральный директор «S&T Ukraine» (г. Киев, Украина)
Мамросенко К.А. – к.т.н., доцент Российского государственного технологического университета 
им. К.Э. Циолковского (МАТИ), заведующий отделом Центра визуализации и спутниковых 
информационных технологий ФНЦ НИИСИ РАН (г. Москва, Россия)
Мейер Б. – доктор наук, профессор, заведующий кафедрой Высшей политехнической школы – ETH (г. Цюрих, Швейцария)
Нгуен Тхань Нги – д.ф.-м.н., профессор, проректор Ханойского открытого университета (г. Ханой, Вьетнам)
Николов Р.В. – доктор наук, профессор Университета библиотековедения и информационных технологий Софии
(г. София, Болгария)
Осипов Г.С. – д.ф.-м.н., профессор, заместитель директора Института системного анализа РАН (г. Москва, Россия)
Палюх Б.В. – д.т.н., профессор Тверского государственного технического университета (г. Тверь, Россия)
Рахманов A.A. – д.т.н., профессор, заместитель генерального директора Концерна «РТИ Системы» (г. Москва, Россия)
Серов В.С. – д.ф.-м.н., профессор Университета прикладных наук Оулу (г. Оулу, Финляндия)
Сотников А.Н. – д.ф.-м.н., профессор, Межведомственный суперкомпьютерный центр РАН (г. Москва, Россия)
Сулейманов Д.Ш. – академик АН Республики Татарстан, д.т.н., профессор Казанского государственного 
технического университета (г. Казань, Республика Татарстан, Россия)
Тарасов В.Б. – к.т.н., доцент Московского государственного технического университета им. Н.Э. Баумана (г. Москва, Россия)
Таратухин В.В. – доктор философии, управляющий директор Европейского исследовательского центра 
в области информационных систем (ERCIS) Вестфальского университета им. Вильгельма (г. Мюнстер, Германия)
Хорошевский В.Ф. – д.т.н., профессор Московского физико-технического института (технического университета) 
(г. Москва, Россия)
Язенин А.В. – д.ф.-м.н., профессор Тверского государственного университета (г. Тверь, Россия)

АССОЦИИРОВАННЫЕ ЧЛЕНЫ РЕДАКЦИИ

Московский энергетический институт (технический университет), г. Москва, Россия
Технологический институт Южного федерального университета, г. Таганрог, Россия
Тверской государственный технический университет, г. Тверь, Россия
Научно-исследовательский институт «Центрпрограммсистем», г. Тверь, Россия

АДРЕС РЕДАКЦИИ
Россия, 170024, г. Тверь, пр. 50 лет Октября, 3а
Телефон (482-2) 39-91-49
Факс (482-2) 39-91-00
E-mail: red@cps.tver.ru
www.swsys.ru

Подписано в печать 25.05.2016 г.

Отпечатано ООО ИПП «Фактор и К»

Россия, 170028, г. Тверь, ул. Лукина, д. 4, стр. 1

Выпускается один раз в квартал. Год издания двадцать девятый

Формат 6084 1/8. Объем 212 стр.

Заказ № 17. Тираж 1000 экз. Цена 257,40 руб.

Автор статьи отвечает за подбор, оригинальность и точность приводимого фактического материала.
Авторские гонорары не выплачиваются. При перепечатке материалов ссылка на журнал обязательна.

 PROGRAMMNYE PRODUKTY I SISTEMY (SOFTWARE & SYSTEMS)

2016, no. 2, DOI: 10.15827/0236-235X.114

International research and practice supplement for International magazine 
THEORETICAL AND PRACTICAL ISSUES OF MANAGEMENT

Editor-in-chief 
S.V. Emelyanov, Academician of the Russian Academy of Sciences (Mosсow, Russian Federation)

Science editor
N.A. Semenov, Dr.Sc. (Engineering), Professor TSTU (Tver, Russian Federation)

Reviewers: 
A.P. Eremeev, Dr.Sc. (Engineering), Professor MPEI (Moscow, Russian Federation)
A.P. Afanasiev, Dr.Sc. (Physics and Mathematics), Professor IITP RAS (Moscow, Russian Federation)
V.M. Kureichik, Dr.Sc. (Engineering), Professor Academy of Engineering and Technology SFU 
(Taganrog, Russian Federation)
M.I. Dli, Dr.Sc. (Engineering), Professor Smolensk Branch of the MPEI (Smolensk, Russian Federation)
I.A. Bessmertny, Dr.Sc. (Engineering), Professor St. Petersburg University ITMO 
(St. Petersburg, Russian Federation)
G.B. Burdo, Dr.Sc. (Engineering), Professor TSTU (Tver, Russian Federation)

Publisher Research Institute 
CENTERPROGRAMSYSTEM 

(Tver, Russian Federation)

The Founders: International Scientific 

and Research Institute
for Management Issues 

(Moscow, Russian Federation),

the Chief Editorial Board 

of International Magazine Theoretical 
and practical issues of management

(Moscow, Russian Federation),

Research Institute 

CENTERPROGRAMSYSTEM 

(Tver, Russian Federation)

The magazine is on record in Russian 

committee

on press 26th of June 1995

Registration certificate № 013831

ISSN 0236-235X (print)

ISSN 2311-2735 (online)

INTERNATIONAL EDITORIAL BOARD

Semenov N.A. – Dr.Sc. (Engineering), Professor of Tver State Technical University, Deputy Editor-in-Chief
(Tver, Russian Federation)
Reshetnikov V.N. – Dr.Sc. (Physics and Mathematics), Professor of Russian State Technological University (MATI), 
Deputy Editor-in-Chief (Mosсow, Russian Federation)
Arefev I.B. – Dr.Sc. (Engineering), Professor of Poland Szczecin Maritime Academy (Szczecin, Poland)
Afanasiev A.P. – Dr.Sc. (Physics and Mathematics), Professor of Moscow Institute of Physics and Technology, 
Head of Centre for Distributed Computing of Institute for Information Transmission Problems (Moscow, Russian Federation)
Balametov A.B. – Azerbaijan Scientific-Research & Design-Prospecting Power Engineering Institute (Baku, Azerbaijan)
Batyrshin I.Z. – Dr.Sc. (Engineering), Professor of Mexican Petroleum Institute (Mexico City, Mexico)
Vagin V.N. – Dr.Sc. (Engineering), Professor of Moscow Power Engineering Institute (Technical University) 
(Mosсow, Russian Federation)
Golenkov V.V. – Dr.Sc. (Engineering), Professor of Belarusian State University of Informatics and Radioelectronics 
(Minsk, Republic of Belarus)
Eremeev A.P. – Dr.Sc. (Engineering), Professor of Moscow Power Engineering Institute (Technical University) 
(Moscow, Russian Federation)
Kotov A.S. – Ph.D. (Computer Science), Assistant Professor, Wayne State University (Detroit, MI, USA)
Kuznetsov O.P. – Dr.Sc. (Engineering), Professor of the Institute of Control Sciences of the Russian Academy of Sciences
(Moscow, Russian Federation)
Kureichik V.M. – Dr.Sc. (Engineering), Professor of Academy of Engineering and Technology Southern Federal University 
(Taganrog, Russian Federation)
Lisetskiy Yu.M. – Ph.D.Tech.Sc., CEO of S&T Ukraine (Kiev, Ukraine)
Mamrosenko K.A. – Ph.D. (Engineering), Associate Professor of Russian State Technological University (MATI), 
Head of Department of Center of Visualization and Satellite Information Technologies SRISA RAS (Moscow, Russian 
Federation)
Meyer B. – Dr.Sc., Professor, Head of Department in Swiss Federal Institute of Technology in Zurich, ETH 
(Zurich, Switzerland)
Nguyen Thanh Nghi – Dr.Sc. (Physics and Mathematics), Professor, Vice-Principal of Hanoi Open University (Hanoi, Vietnam)
Nikolov R.V. – Full Professor of the University of Library Studies and Information Technology (Sofia, Bulgaria)
Osipov G.S. – Dr.Sc. (Physics and Mathematics), Professor, Deputy of the Principal of Institute of Systems Analysis 
of the Russian Academy of Sciences (Mosсow, Russian Federation)
Palyukh B.V. – Dr.Sc. (Engineering), Professor of Tver State Technical University (Tver, Russian Federation)
Rakhmanov A.A. – Dr.Sc. (Engineering), Professor, Deputy of the CEO of Concern RTI Systems
(Mosсow, Russian Federation)
Serov V.S. – Dr.Sc. (Physics and Mathematics), Professor of the Oulu University of Applied Sciences (Oulu, Finland)
Sotnikov A.N. – Dr.Sc. (Physics and Mathematics), Professor, Joint Supercomputer Center of the Russian Academy 
of Sciences (Moscow, Russian Federation)
Suleimanov D.Sh. – Academician of TAS, Dr.Sc. (Engineering), Professor of Kazan State Technical University
(Kazan, Republic of Tatarstan, Russian Federation)
Tarassov V.B. – Ph.D. (Engineering), Associate Professor of Bauman Moscow State Technical University
(Mosсow, Russian Federation)
Taratoukhine V.V. – Ph.D. (Engineering), Dr.Ph., Managing Director of the Competence Centre ERP and ERCIS Lab
Russia of the ERCIS (Muenster, Germany)
Khoroshevsky V.F. – Dr.Sc. (Engineering), Professor of Moscow Institute of Physics and Technology
(Moscow, Russian Federation)
Yazenin A.V. – Dr.Sc. (Physics and Mathematics), Professor of Tver State University (Tver, Russian Federation)

ASSOCIATED EDITORIAL BOARD MEMBERS

Moscow Power Engineering Institute (Technical University), Moscow, Russian Federation
Technology Institute at Southern Federal University, Taganrog, Russian Federation
Tver State Technical University, Tver, Russian Federation
Research Institute CENTERPROGRAMSYSTEM, Tver, Russian Federation

EDITORIAL OFFICE ADDRESS
50 let Oktyabrya Ave. 3а, Tver, 170024, Russian Federation
Phone: (482-2) 39-91-49  Fax: (482-2) 39-91-00
E-mail: red@cps.tver.ru
www.swsys.ru

Passed for printing 25.05.2016

Printed in printing-office “Faktor i K”

Lukina St. 4/1, Tver, 170028, Russian Federation

Published quarterly. 29th year of publication

Format 6084 1/8. Circulation 1000 copies

Prod. order № 17. Wordage 212 pages. Price 257,40 rub.

Вниманию авторов!

Международный журнал «Программные продукты и системы» публикует материалы научного и научно-практического 

характера по новым информационным технологиям, результаты академических и отраслевых исследований в области использования средств вычислительной техники. Практикуются выпуски тематических номеров по искусственному интеллекту, системам автоматизированного проектирования, по технологиям разработки программных средств и системам защиты, а также специализированные выпуски, посвященные научным исследованиям и разработкам отдельных вузов, 
НИИ, научных организаций. 

Решением Президиума Высшей аттестационной комиссии (ВАК) Министерства образования и науки РФ международ
ный журнал «Программные продукты и системы» внесен в Перечень ведущих рецензируемых научных журналов и изданий, в которых должны быть опубликованы основные научные результаты диссертаций на соискание ученых степеней 
кандидата и доктора наук.

Информация об опубликованных статьях по установленной форме регулярно предоставляется в систему Российского 

индекса научного цитирования (РИНЦ), в CrossRef и готовится для передачи в международные базы цитирования.

Условия публикации

К рассмотрению принимаются ранее нигде не опубликованные материалы, соответствующие тематике журнала 

(специализация 05.13.ХХ – Информатика, вычислительная техника и управление) и отвечающие редакционным требованиям.

Работа представляется в электронном виде в формате Word. При обилии сложных формул обязательно наличие 

статьи и в формате PDF. Формулы должны быть набраны в редакторе формул Word (Microsoft Equation или MathType). 
Объем статьи вместе с иллюстрациями – не менее 10 000 знаков. Диаграммы, схемы, графики должны быть доступными 
для редактирования (Word, Visio, Exel). Все иллюстрации для полиграфического воспроизведения представляются в 
черно-белом варианте. Цветные, тонированные, отсканированные, не подлежащие редактированию средствами Word рисунки и экранные формы следует присылать в хорошем качестве для их дополнительного размещения на сайте журнала в 
макете статьи с доступом по ссылке. (Публикация материалов с использованием гипертекста, графики, аудио-, видео-, 
программных средств и др. возможна в электронном издании «Программные продукты, системы и алгоритмы», сайт 
www.swsys-web.ru.) Заголовок должен быть информативным; сокращения, а также терминологию узкой тематики желательно в нем не использовать. Количество авторов на одну статью – не более 4, количество статей одного автора в номере, 
включая соавторство, – не более 2. Список литературы (оформленный в соответствии с ГОСТ Р 7.05–2008), наличие которого обязательно, должен включать не менее 10 пунктов.

Необходимы также аннотация (не менее 200 слов), ключевые слова (7–10) и индекс УДК. Название статьи, аннота
ция и ключевые слова должны быть переведены на английский язык (машинный перевод недопустим), а фамилии авторов, 
названия и юридические адреса организаций (если нет официального перевода), пристатейные списки литературы – транслитерированы по стандарту BGN/PCGN. 

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

Порядок рецензирования

Все статьи, поступающие в редакцию (соответствующие тематике и оформленные согласно требованиям к публи
кации), подлежат обязательному рецензированию в течение месяца с момента поступления. 

В редакции есть устоявшийся коллектив рецензентов, среди которых члены международной редколлегии журнала, 

эксперты из числа крупных специалистов в области информатики и вычислительной техники ведущих вузов страны, а 
также ученые и специалисты НИИ «Центрпрограммсистем» (г. Тверь).

Рецензирование проводится конфиденциально. Автору статьи предоставляется возможность ознакомиться с тек
стом рецензии. При необходимости статья отправляется на доработку.

Рецензии обсуждаются на заседаниях рабочей группы, состоящей из членов научного совета журнала. Заседания 

проводятся раз в месяц в НИИ «Центрпрограммсистем» (г. Тверь), где принимается решение о целесообразности публикации статьи.

Статьи, одобренные редакционным советом, публикуются бесплатно в течение года с момента одобрения, а отправ
ленные на доработку – с момента поступления после устранения замечаний.

Редакция международного журнала «Программные продукты и системы» в своей работе руководствуется сводом 

правил Кодекса этики научных публикаций, разработанным и утвержденным Комитетом по этике научных публикаций.

Программные продукты и системы / Software & Systems
№ 2 (114), 2016

5

УДК 007:004.451.2:004.434
Дата подачи статьи: 29.02.16

DOI: 10.15827/0236-235X.114.005-010

ВОЗМОЖНОСТИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ 

В МАТЕМАТИЧЕСКИХ ПАКЕТАХ

(Работа выполнена при финансовой поддержке РФФИ, проект № 16-37-00010, и в рамках

государственного задания по теме «Локальная информационно-вычислительная система ВЦ РАН – среда 

для фундаментальных и прикладных исследований учреждения»)

А.М. Чернецов, к.т.н., научный сотрудник, доцент, an@ccas.ru, chernetsovam@mpei.ru

(Вычислительный центр им. А.А. Дородницына ФИЦ ИУ РАН, 

ул. Вавилова, 40, г. Москва, 119333, Россия;

Национальный исследовательский университет «Московский энергетический институт», 

ул. Красноказарменная, 14, г. Москва, 111250, Россия)

За последние годы при решении множества трудновычислимых задач стали применяться средства и возможности 

параллельного программирования. Широко известны модели программирования в общей и распределенной памяти, 
позднее к ним прибавились гибридные модели. Однако все упомянутые средства относятся к достаточно низкоуровневому программированию, когда производится значительная переделка исходного кода.

Немалое число математических расчетов выполняется не на алгоритмических языках (C/C++, Fortran), а в специа
лизированных математических пакетах MATLAB, Maple, Mathematica, MathCad.

В работе рассмотрены средства параллельного программирования в современных математических пакетах. При
веден краткий обзор развития средств параллельного программирования в широко распространенных пакетах 
MATLAB, Maple, Mathematica и MathCad. Для MATLAB кратко описываются основные примитивы параллельного 
программирования и их соответствия в среде MPI, а также приводятся другие операторы параллельного программирования. Рассматриваются различные средства обеспечения параллелизма в пакете Maple (работа с нитями, высокоуровневыми абстракциями Task Programming Model, параллельное программирование). Для Mathematica приводятся 
некоторые базовые конструкции параллельного программирования, имеющиеся в языке Mathematica Wolfram Language. Рассматриваются различные примеры.

В зависимости от того, в каком пакете происходит работа, доступны несколько отличающиеся возможности, од
нако любая задача может быть решена в каждом из рассматриваемых пакетов (за исключением MathCad).

Ключевые слова: параллельное программирование, математические пакеты, MPI, WSTP.

В последние годы для решения множества труд
новычислимых задач стали применяться методы и 
средства параллельного программирования. Широко известны модели программирования в общей 
и распределенной памяти [1], позднее к ним добавились гибридные модели [2]. Однако упомянутые 
средства чаще всего реализуются при достаточно 
низкоуровневом программировании, что требует 
значительной переделки исходного последовательного кода. Следует отметить, что немало математических расчетов выполняется не на алгоритмических языках (C/C++, Fortran), а в специализированных математических пакетах MATLAB [3], Maple 
[4], Mathematica [5], MathCad [6]. Производители 
пакетов тоже задумались о реализации возможностей параллелизма в своих продуктах.

К 2016 году сложилась следующая картина.
Изначально возможности параллельного про
граммирования в пакете Mathematica появились в 
2001 г. [7]. Для их обеспечения было выпущено дополнительное средство – Parallel Computing Toolkit 
(требовалась отдельная лицензия, но после выхода 
версии 7.0 в 2008 г. для работы на локальном компьютере лицензия уже не требуется). В пакете 
MATLAB возможности параллельного программирования появились в 2005 г. В 2009 г. о реализации 
средств параллельного программирования было заявлено в Maple. В среде Maple 13 было реализовано 

программирование в модели общей памяти. Однако средства именно параллельного программирования появились только в выпуске Maple 15 в 
2011 г. Следует отметить, что независимые решения 
предлагались 
и 
ранее 
(см., 
например, 

Distributed Maple [8]).

Пакет MathCad чрезвычайно долгое время ни
как не развивался в этом направлении. Только в 
версии MathCad Prime 2.0 (2012 г.) появились некоторые изменения: параллелизм на основе средств 
многоядерных процессоров обеспечивается за счет 
использования библиотеки Intel MKL [9, 10]. В данной работе рассмотрены средства параллельного 
программирования в пакетах MATLAB, Maple и 
Mathematica.

Средства параллельного программирования 

в MATLAB

До момента реализации функционала па
раллельного программирования производителем 
(компанией MathWorks) существовали различные 
подходы к решению [11]. После обеспечения возможностей параллельного программирования появились два вида параллелизма: distributed computing – распределенные вычисления, когда фактически обеспечивается параллелизм по данным [1], 
и собственно parallel computing, когда взаимодей
Программные продукты и системы / Software & Systems
№ 2 (114), 2016

6

ствие
между параллельными процессами осу
ществляется с помощью вызовов специальных команд MATLAB. Для обеспечения возможностей 
параллелизма в пакете был разработан тулбокс 
Parallel Computing Toolbox, лицензируемый отдельно.

Параллельное программирование в MATLAB 

основано на парадигме модели передачи сообщений. Последний (на январь 2016 г.) выпуск R2015b
использует на низком уровне библиотеку MPICH2 
v.1.4.1p1 [12]. Кроме того, допускается работа с 
собственной реализацией MPI, удовлетворяющей 
определенным условиям [13]. Для конечного пользователя есть два режима работы: интерактивный 
режим pmode [11] и непосредственно параллельное 
программирование в модели передачи сообщений 
(модели распределенной памяти).

В таблице 1 приведены основные примитивы 

параллельного программирования в MATLAB. 

Таблица 1 

Команды (переменные) MATLAB

и их соответствие в MPI

Table 1

MATLAB commands (variable) 

and their matching in MPI

Команда MATLAB
Функция MPI

Numlabs
MPI_Comm_size(size)

Labindex
MPI_Comm_rank(rank, 
MPI_COMM_WORLD)

LabBarrier()
MPI_Barrier(MPI_COMM
_WORLD)

Shared_data=LabBroadcast(root, buffer)

MPI_Bcast(void *buffer, 
int count, MPI_Datatype 
datatype, int root, 
MPI_COMM_WORLD)

LabSend(buf,dest) 
LabSend(data,dest,tag)

MPI_Send(void *buf, int 
count, int tag, 
MPI_COMM_WORLD)

data=LabReceive(source,tag),
data=LabReceive('any',tag)

MPI_Recv(void *buf, int 
count, int source, int tag, 
MPI_COMM_WORLD, 
MPI_Status *status)

is_data_available=
=LabProbe(source,tag)

MPI_Probe(int source, int 
tag, 
MPI_COMM_WORLD, 
MPI_Status *status)

Как видим, пакет реализует базовый набор ди
ректив для параллельного программирования. 
Опишем реализацию параллельного алгоритма 
умножения матрицы на вектор z=y+Ax, ARnn, x, y, 
zRn [11]. На начальной стадии перед вычислениями в каждой сессии (в каждом рабочем пространстве процесса) доступен соответствующий блок 
матрицы A, вектора x и вектора y. Вычисления 
начинаются с того, что каждый рабочий процесс 
отправляет доступный ему блок вектора x сосед
нему (по номеру ID) процессу. Следующий шаг –
получение с помощью функции labReceive блока 
вектора x от соседнего рабочего процесса, который 
к этому моменту уже отправил его.

После получения блока x происходит непосред
ственное вычисление вектора yk = yk + Ap,x , где 
– номер доступного блока вектора x (на каждом 
шаге, у каждого рабочего процесса определена 
своя переменная ).

Приведем реализацию
алгоритма на языке 

MATLAB:

function z=par_multiplication(A, x, y)
% A – матрица
% x,y,z вектор-столбцы
% z=Ax+y;
q=mod(n,numlabs);% остаток от деления
if q==0
r=n/numlabs;
x=x((labindex-1)*r+1:labindex*r);
y=y((labindex-1)*r+1:labindex*r);
A=A((labindex-1)*r+1:labindex*r,:);
else % делится с остатком
r=(n-q)/numlabs;
if labindex==1
x=x(1:r+q);
y=y(1:r+q);

A=A(1:r+q,:);
else
x=x((labindex-1)*r+1+q:labindex*r+q);
y=y((labindex-1)*r+1+q:labindex*r+q);
A=A((labindex-1)*r+1+q:labindex*r+q,:);
end
end
for t=1:numlabs
if labindex==numlabs
labSend(x,1); % последний сразу отправил первому
else
labSend(x,labindex+1);
% остальные отправляют своим соседям (справа)
end
if labindex==1
x=labReceive(numlabs);
% первый получил от последнего
else
x=labReceive(labindex-1);
% остальные получают от своих соседей (слева)
end
tau=labindex-t;
if tau<=0
tau=tau+numlabs;
end
y=y+A(:,1+(tau-1)*r:tau*r)*x;
end
z=y;

Достаточно часто встречаются типовые ситуа
ции, имеющие понятный способ решения. Для некоторых таких случаев предусмотрены штатные 
средства. Рассмотрим два из них: векторизацию 
циклов (директива parfor) и частный случай MIMD
(в классификации Флинна [1]) типа Single Program 
Multiple Data (директива spmd).

Программные продукты и системы / Software & Systems
№ 2 (114), 2016

7

Цикл parfor – параллельная модификация стан
дартного цикла for. Оператор parfor полезен в случаях, когда нужно провести много однотипных расчетов, например, при моделировании методом 
Монте-Карло. Итерации цикла считаются независимо в произвольном порядке рабочими процессами. Понятно, что оператор parfor нельзя применять тогда, когда имеется зависимость по данным 
между итерациями. Также существуют дополнительные ограничения, о которых можно узнать в 
документации на продукт.

Операторы внутри блока spmd выполняются од
новременно во всех рабочих процессах. Синтаксис 
команды выглядит следующим образом:

spmd [(m, n)]
<statements>
end spmd,

где опциональные параметры m и n – минимальное 
и максимальное число рабочих процессов соответственно.

Помимо описанных способов, начиная с 

MATLAB R2007b предусмотрено автоматическое 
распараллеливание функций различных тулбоксов 
(ядро, Image Processing, Statistics, Optimization
Toolbox и т.д.). Система производит автоматическое распределение расчетов на все доступные 
мощности (например, на все 8 ядер процессора). 
Кроме того, MATLAB с выпуска R2010b поддерживает параллельные вычисления на графических 
процессорах (GPU) NVIDIA – программирование в 
модели CUDA. Соответственно, есть директивы 
для копирования данных из основной памяти в 
GPU и, наоборот, директивы для выполнения операций на GPU. Вычисления на GPU происходят как 
с одинарной, так и с двойной точностью. MATLAB 
также поддерживает выполнение параллельных задач на кластерных системах с использованием 
функционала MATLAB Distributed Computing 
Server (лицензируется отдельно). В его рамках возможен запуск параллельных задач в системе 
управления пакетными заданиями (СУПЗ) Microsoft, PBS, Torque, LSF, Condor [14].

Средства параллельного 

программирования в Maple

Еще в старых версиях Maple были реализованы 

средства работы с нитями (threads). В качестве примера можно привести реализацию классической задачи «производитель–потребитель» [15, 16]. В этой 
задаче один процесс (Producer) выдает информацию, а другой (Consumer) ее получает и обрабатывает. При решении задачи могут возникать проблемы потери данных и повторного использования 
данных.

В версии Maple 13 появилось средство Task Pro
gramming Model [17], позволяющее работать в модели общей памяти на высоком уровне абстракции. 
На более низком уровне Task Programming Model

реализуется как работа с нитями (threads). Разработчик не рекомендует конечным пользователям 
работать на этом уровне [15]. При выполнении программы Maple создаются подзадачи (Tasks), которые средой распределяются на все доступные ресурсы процессоров. Каждая подзадача – это вызов 
функции, который выполняется отдельной нитью.

В качестве примера приведем реализацию алго
ритма сложения большого количества чисел:

> cont := proc(a, b)

return a + b;

end proc;

task := proc(i, j)

local k;
if (j-i < 1000) then

return add(k, k=i..j);

else

k := floor( (j-i)/2 )+i;
Threads:-Task:-Continue( cont, Task=[task, i, k], 

Task=[task, k+1, j]);

end if;

end proc;

Threads:-Task:-Start(task, 1, 10^8);

Команда Start создает начальную задачу и ожи
дает, пока она не завершится.

В развитии данного подхода в версии Maple 15 

появились средства именно параллельного программирования, которые реализованы в дополнительном пакете Grid Package (Toolbox). Как и в 
MATLAB, пакет позволяет работать с различными 
реализациями MPI. По умолчанию в среде Windows
используется реализация Microsoft
MPI, 

включенная в Windows HPC Server, а в среде Linux
– MPICH2. В таблице 2 приведены основные примитивы параллельного программирования в Maple. 
Более подробно с ними можно ознакомиться в документации на продукт.

Как видно из таблицы, пакет реализует базовый 

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

После выхода Maple 2015 расширились функ
ции Maple в тулбоксе grid. Были добавлены директивы ожидания выполнения (Wait, WaitForFirst) и 
запуска на выполнение (Run). Для указания на то, 
что вычисления необходимо производить параллельно, служит директива Launch. На всех узлах 
выполняется одинаковая команда. Все вычисления 
прекращаются, как только закончит работу главный процесс (номер 0). С целью предотвращения 
взаимоблокировок вычисления прекращаются автоматически по тайм-ауту, если все узлы ожидают 
сообщений и нет ни одного узла, который их отправляет. Пакет Maple позволяет производить 
ограниченные параллельные вычисления на GPU. 

Программные продукты и системы / Software & Systems
№ 2 (114), 2016

8

Однако в отличие от MATLAB нет возможности 
вычислять произвольные функции на GPU. Доступен только ограниченный набор действий. Maple
поддерживает выполнение параллельных задач на 
кластерных системах с использованием функционала тулбокса Grid. В его рамках возможен запуск 
параллельных задач в СУПЗ Microsoft,
PBS, 

Torque. В этом случае уже требуется дополнительная лицензия на удаленных клиентах-узлах.

Таблица 2

Функции Maple и их соответствие в MPI

Table 2

Maple functions

and their matching in MPI

Функция Maple
Функция MPI

NumNodes()
MPI_Comm_size(size)

MyNode()
MPI_Comm_rank(rank, 
MPI_COMM_WORLD)

Barrier()
MPI_Barrier(MPI_COMM_WORLD)

Set(node,v1, v2, ...) int MPI_Scatter(void *sendbuf, int 

sendcount, MPI_Datatype sendtype, 
void *recvbuf, int recvcount, 
MPI_Datatype recvtype, int root, 
MPI_COMM_WORLD)
int root, MPI_COMM_WORLD)

Send( node, msg)
MPI_Send(void *buf, int count, int 
tag, MPI_COMM_WORLD)

Receive()
Receive(node) – получить от конкретного узла

MPI_Recv(void *buf, int count, 
MPI_COMM_WORLD, MPI_Status 
*status)

Средства параллельного программирования 

в Mathematica

Начиная с версии 7.0 (2008 г.) в пакете Mathe
matica средства параллельного программирования 
были интегрированы прямо в пакет, не требуя дополнительных программных продуктов (Parallel
Computing Toolkit). В версии 8.0 (2010 г.) были произведены некоторые изменения (добавлены subkernels), реализована поддержка Windows HPC 
Server, Microsoft Compute Cluster Server и Sun Grid.
В отличие от остальных математических пакетов в 
Mathematica нет привязки к какой-либо системной 
библиотеке передачи сообщений. Все действия 
производятся исключительно средствами среды 
Wolfram Mathematica. На низком уровне взаимодействие организуется средствами протокола Wolfram Symbolic Transfer Protocol (WSTP) [18]. Он позволяет работать с гетерогенной средой (Windows, 
Unix, Mac). Поскольку все параллельные возможности «привязаны» к языку, нельзя установить прямые аналогии с функциями MPI, как в случае работы с другими пакетами. В таблице 3 приведены 

основные примитивы параллельного программирования в Mathematica.

Таблица 3

Команды Mathematica для параллельных 

вычислений

Table 3

Mathematica commands 
for parallel computations

Функция 

Mathematica

Смысл

$KernelCount
Число ядер для параллельного 
вычисления

$KernelId
Уникальный номер (ID) 
параллельного вычисления

SetSharedVariable
[s1, s2, …]

Установить символы si как общие 
переменные, чьи значения синхронизированы во всех ядрах

WaitAll[{pid1,
pid2, …}]

Дождаться, пока все параллельные 
вычисления не будут завершены

ParallelSubmit[{var1, var2, 
…}, expr]

Посылает expr на вычисление следующим доступным параллельным 
ядром

ParallelTable[expr,
{i, imax}]

Создает параллельно список 
значений expr, когда i в диапазоне 
от 1 до imax

ParallelEvaluate[expr, kernel]

Вычислить expr на заданном 
параллельном kernel

Parallelize[expr]
Вычислить expr, используя 
автоматическое распараллеливание

ParallelDo [expr,
{i, imin, imax}]

Вычислить expr параллельно, 
начиная с i=imin и до i=imax

DistributeDefinitions[s1, s2, …]

Распространить определения символов si на все параллельные ядра

CUDAFunctionLoad

Загрузить CUDA-функцию в пакет 
и сделать доступной для языка
Wolfram

OpenCLFunctionLoad

Загрузить функцию OpenCL в пакет

Для иллюстрации приведем реализацию реше
ния задачи нахождения списка чисел n, для которых значение n!+1 простое [19]:

In(1):=    n = 1; primes= {}; SetSharedVariable[n, primes];
In(2):=    PrintTemporary[Dynamic[{n, primes}]];

CheckAbort[

ParallelEvaluate[While[True,
With[{n = n++}, If[PrimeQ[n! + 1], AppendTo[primes, 

n]]]]],

{n, primes}]

В данном случае организуется бесконечный 

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

Начиная с версии 8.0 среда может работать с 

графическими процессорами NVIDIA и поддерживает технологии CUDA и OpenCL (что позволяет 
работать и с графическими процессорами AMD). 

Программные продукты и системы / Software & Systems
№ 2 (114), 2016

9

Для этого реализованы свободно доступные модули CudaLink [20] и OpenCLLink [21]. 

Как и все предыдущие пакеты, Mathematica поз
воляет производить распределенные параллельные 
вычисления на кластерных системах, для чего используется тулбокс GridMathematica [22]. Тулбокс 
разработан еще в 2002 г. Он также лицензируется 
отдельно. В настоящее время он позволяет запускать задания на СУПЗ Wolfram Lightweight Grid
Manager, PBS, Microsoft, Platform LSF и Sun Grid
Engine. В качестве вычислительных мощностей 
выступают как процессоры, так и графические 
ускорители.

В заключение отметим, что средства параллель
ного программирования в пакетах MATLAB и 
Mathematica достаточно хорошо описаны в литературе (например [23, 24]). Для работы со средствами 
параллельного программирования в пакете Maple
нет литературных источников, однако документация на продукт достаточно высокого качества, что 
позволяет использовать ее для полноценного решения задач. Отметим, что средства параллельного 
программирования в математических пакетах регулярно развиваются. В зависимости от того, в каком 
пакете происходит работа, доступны несколько отличающиеся возможности, однако любая задача 
может быть решена в каждом из рассмотренных пакетов, за исключением MathCad.

Литература

1.
Воеводин В.В., Воеводин Вл.В. Параллельные вычис
ления. СПб: BHV-Петербург, 2002. 608 с.

2.
Эндрюс Г.Р. Основы многопоточного, параллельного и 

распределенного программирования; [пер. с англ.]. М.: Вильямс, 2003. 512 с.

3.
MathWorks. URL: http://www.mathworks.com (дата обра
щения: 01.01.2016).

4.
Maplesoft. URL: http://www.maplesoft.com (дата обраще
ния: 01.01.2016).

5.
Wolfram. URL: http://www.wolfram.com (дата обраще
ния: 01.01.2016).

6.
PTC Mathcad. URL: http://www.ptc.com/mathcad (дата 

обращения: 01.01.2016).

7.
Mäder R. Parallel Computing with Mathematica. Proc. 4th 

Intern. Workshop on Computer Algebra in Scientific Computing, 
Konstanz, Sept. 22–26, 2001, p. 399.

8.
Schreiner W., Mittermaier C., Bosa K. Distributed Maple: 

parallel computer algebra in networked environ-ments. Journ. of 
Symbolic Computation, 2003. vol. 35, iss. 3, pp. 305–347.

9.
Kucan J. Multi-threading, multi-core and parallel calcu
lation in Mathcad. URL: http://blogs.ptc.com/2012/05/16/multithreading-multi-core-and-parallel-calculation-in-mathcad/ (дата обращения: 01.01.2016).

10. Intel® Math Kernel Library (Intel® MKL). URL: https://

software.intel.com/en-us/intel-mkl (дата обращения: 01.01.2016).

11. Оленев Н.Н., Печенкин Р.В., Чернецов А.М. Параллель
ное программирование в MATLAB и его приложения. М.: Издво ВЦ РАН, 2007. 120 с.

12. Чернецов А.М. Использование сторонних библиотек 

MPI для параллельного программирования в MATLAB // Радиоэлектроника, электротехника и энергетика: тр. 14 Междунар. 
науч.-технич. конф. студентов и аспирантов в 3-х т. М.: Изд-во 
МЭИ, 2008. Т. 1. C. 309–310.

13. MPICH. URL: http://www.mpich.org (дата обращения: 

01.01.2016).

14. Чернецов А.М. Использование средств MATLAB для 

организации распределенной обработки // Информатизация инженерного образования: тр. междунар. конф. М.: Изд-во МЭИ, 
2012. С. 127–130.

15. Multithreaded Programming. URL: http://www.maplesoft.

com/support/help/Maple/view.aspx?path=multithreaded (дата обращения: 01.01.2016).

16. Таненбаум Э. Современные операционные системы; 

[пер. с англ.]. СПб: Питер, 2013. 1120 с.

17. Task Programming Model URL: http://www.maplesoft.

com/support/help/Maple/view.aspx?path= TaskProgrammingModel
(дата обращения: 01.01.2016).

18. WSTP API. URL: http://reference.wolfram.com/language/

guide/WSTPAPI.html (дата обращения: 01.01.2016).

19. Parallel Computing. URL: https://reference.wolfram.com/

language/guide/ParallelComputing.html
(дата 
обращения: 

01.01.2016).

20. CUDALink
Overview.
URL: http://reference.wolfram.

com/language/CUDALink/tutorial/Overview.html (дата обращения: 01.01.2016).

21. OpenCLLink Overview URL: http://reference.wolfram.

com/language/OpenCLLink/tutorial/Overview.html (дата обращения: 01.01.2016).

22. Wolfram gridMathematica. URL: http://www.wolfram.

com/gridmathematica/ (дата обращения: 01.01.2016).

23. Кепнер Дж. Параллельное программирование в среде 

MATLAB для многоядерных и многоуровневых вычислительных машин; [пер. с англ.]. М.: Изд-во МГУ, 2013. 296 с.

24. Аладьев В., Гринь Д., Ваганов В. Избранные системные 

задачи в программной среде Mathematica. М.: Олди-плюс, 2013. 
555 с.

DOI: 10.15827/0236-235X.114.005-010
Received 29.02.16

PARALLEL PROGRAMMING IN MATHEMATICAL SUITES

(The work was supported by RFBR, project no. 16-37-00010, within a State task on the topic 

“Local information computer system of the Computing Centre of RAS. 
The environment for fundamental and applied research in an institute”)

Chernetsov A.M., Ph.D. (Engineering), Research Associate, Associate Professor, an@ccas.ru, chernetsovam@mpei.ru

(Dorodnicyn Computing Centre FRC CSC RAS, Vavilov St. 40, Moscow, 119333, Russian Federation;

National Research University “MPEI”, Krasnokazarmennaya St. 14, Moscow, 111250, Russian Federation)

Abstract. Recently tools and features of parallel programming have been used for calculating difficult tasks. Programming 

models in shared and distributed memory are well-known. Later hybrid models have appeared. However, all these tools suppose 
fairly low-level programming when a source code is modified significantly.

Программные продукты и системы / Software & Systems
№ 2 (114), 2016

10

A significant number of mathematical calculations is performed not in algorithmic languages (C/C++, Fortran), but in

special mathematical suites such as MATLAB, Maple, Mathematica, MathCad.

The paper discusses parallel programming tools in modern mathematical suites. There is a short review of parallel pro
gramming tools development in well-known suites, such as MATLAB, Maple, Mathematica and Mathcad. The paper briefly 
describes the main primitives of parallel programming and their analogs in MPI for MATLAB. It also mentions other operators 
of parallel programming. It describes different features of parallelism in Maple (threads programming, high-level Task Programming Model, parallel programming). There are some basic constructions of parallel programming in Mathematica Wolfram language. The paper describes different examples.

Different possibilities are available depending on an operation suite. However, any problem can be solved in each of these 

suites (except MathCad).

Keywords: parallel programming, mathematical suites, MPI, WSTP.

References

1.
Voevodin V.V., Voevodin Vl.V. Parallelnye vychisleniya [Parallel Computations]. St.-Petersburg, BHV-Petersburg 

Publ., 2002, 608 p. 

2.
Andrews G.R. Foundations of Multithreaded, Parallel and Distributed Programming 1st ed. Pearson Prentice Hall

Publ., 2002 (Russ. Ed.: Moscow, Williams Publ., 2003, 512 p.).

3.
MathWorks. Available at: http://www.mathworks.com (accessed January 1, 2016).

4.
Maplesoft. Available at: http://www.maplesoft.com (accessed January 1, 2016).

5.
Wolfram. Available at: http://www.wolfram.com (accessed January 1, 2016).

6.
PTC Mathcad. Available at: http://www.ptc.com/mathcad (accessed January 1, 2016).

7.
Mäder R. Parallel Computing with Mathematica. Proc. of the 4th Int. Workshop on Computer Algebra in Scientific 

Computing. Konstanz, 2001, 399 p.

8.
Schreiner W., Mittermaier C., Bosa K. Distributed Maple: parallel computer algebra in networked environ-ments. 

Journ. of Symbolic Computation. 2003, vol. 35, iss. 3, pp. 305–347.

9.
Kucan J. Multi-threading, multi-core and parallel calculation in Mathcad. Available at: http://blogs.ptc.com/2012/

05/16/multi-threading-multi-core-and-parallel-calculation-in-mathcad/ (accessed January 1, 2016).

10. Intel® Math Kernel Library (Intel® MKL). Available at: https://software.intel.com/en-us/intel-mkl (accessed January 

1, 2016).

11. Olenev N.N., Pechenkin R.V., Chernetsov A.M. Parallelnoe programmirovanie v MATLAB i ego prilozheniya [Parallel 

Programming in MATLAB and its Applications]. Moscow, Dorodnicyn Computing Centre RAS Publ., 2007, 120 p. (in Russ.).

12. Chernetsov A.M. Using foreign MPI libraries for parallel programming in MATLAB. Radioelektronika, elec
trotekhnika i energetika. 14 Mezhdunar. nauch.-tekhnich. konf. studentov i aspirantov [Proc. of the 14th Int. Science and Tech. 
Conf. for Undergraduate and Postgraduate Students “Radioelectronics, Electrical Engineering and Energetics”]. Moscow, 
MPEI Publ., 2008, pp. 309–310 (in Russ.).

13. MPICH. Available at: http://www.mpich.org (accessed January 1, 2016).
14. Chernetsov A.M. Using MATLAB features for distributed computing. Trudy pervoy mezhdunar. konf. “Informati
zatsiya inzhenernogo obrazovaniya“ [Proc. of the 1st Int. Conf. “Informatization of Engineering Research”]. Moscow, MPEI 
Publ., 2012, pp. 127–130 (in Russ.).

15. Multithreaded Programming. Available at: http://www.maplesoft.com/support/help/Maple/view.aspx?path=multi
threaded (accessed January 1, 2016).

16. Tannenbaum A.S. Modern Operating Systems 3rd ed. Pearson Prentice Hall, 2009 (Russ. ed.: Kozyrev V.P., Moscow, 

Piter Publ., 2013, 1120 p.).

17. Task Programming Model. Available at: http://www.maplesoft.com/support/help/Maple/view.aspx?path=TaskPro
grammingModel (accessed January 1, 2016).

18. WSTP API. Available at: http://reference.wolfram.com/language/guide/WSTPAPI.html (accessed January 1, 2016).
19. Parallel Computing. Available at: https://reference.wolfram.com/language/guide/ParallelComputing.html (accessed

January 1, 2016).

20. CUDALink Overview. Available at: http://reference.wolfram.com/language/CUDALink/tutorial/Overview.html (ac
cessed January 1, 2016).

21. OpenCLLink Overview. Available at: http://reference.wolfram.com/language/OpenCLLink/tutorial/Overview.html

(accessed January 1, 2016).

22. Wolfram gridMathematica. Available at: http://www.wolfram.com/gridmathematica/ (accessed January 1, 2016).
23. Kepner J. Parallel MATLAB for Multicore and Multimode Computers. SIAM, 2009. (Russ. ed.: Moscow, MSU Publ., 

2013, 296 p.).

24. Aladyev V., Grin D., Vaganov V. Izbrannye sistemnye zadachi v programmnoy srede Mathematica [Selected System 

Problems in Mathematica System]. Moscow, Oldi-plus Publ., 2013, 555 p.