Расширение объектно-ориентированных языков программирования параллельными конструкциями для многопроцессорных и распределенных систем тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат технических наук Гузев, Вадим Борисович

  • Гузев, Вадим Борисович
  • кандидат технических науккандидат технических наук
  • 2009, Москва
  • Специальность ВАК РФ05.13.11
  • Количество страниц 143
Гузев, Вадим Борисович. Расширение объектно-ориентированных языков программирования параллельными конструкциями для многопроцессорных и распределенных систем: дис. кандидат технических наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. Москва. 2009. 143 с.

Оглавление диссертации кандидат технических наук Гузев, Вадим Борисович

ВВЕДЕНИЕ.

ГЛАВА 1. АНАЛИТИЧЕСКИЙ ОБЗОР СУЩЕСТВУЮЩИХ ПАРАЛЛЕЛЬНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ.

1.1. cilk.

1.2. Т++.

1.3. АФС.

1.4. Polyphonic С#.

1.5.Х Ю.

1.6. МС#.

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Расширение объектно-ориентированных языков программирования параллельными конструкциями для многопроцессорных и распределенных систем»

Актуальность работы.

Для решения современных вычислительных задач постоянно создаются всё более мощные процессоры, позволяющие выполнять огромное количество операций в секунду. Многопроцессорные компьютеры (в т.ч. с многоядерными процессорами) получили широкое распространение в научной и образовательной сферах. Наряду с этим разработчики вычислительной техники значительное внимание уделяют расширяемым системам, в которых производительность определяется количеством вычислительных узлов -процессоров, компьютеров, кластеров, объединяемых посредством высокоскоростной сети передачи данных. Между тем, разработка параллельных программ и обучение параллельному программированию всё ещё остаются нетривиальными задачами, что является основной причиной слабого использования заложенного в современных компьютерах потенциала. Одним из подходов, направленных на решение данной проблемы, является создание высокоуровневых, интуитивно понятных и надёжных языков программирования, а также систем времени исполнения (Runtime system) для данных языков, эффективно использующих возможности аппаратных платформ и легко расширяемых на произвольно заданное количество виртуальных узлов.1 Однако создание абсолютно новых параллельных языков программирования приводит к необходимости длительного и затратного обучения, что является очередной преградой широкому использованию параллельного программирования, т.к. языки остаются доступны лишь узкому кругу

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

Исследования в данной области непрерывно ведутся, начиная с 1980-х гг. Было разработано множество расширений существующих языков: Т++ [2], Cilk [3], Unified Parallel С [4], Charm++ [5], ZPL [6], HiPE [7], MultiLISP [8], Concurrent Haskell [9], Join Java [10], JoCaml [11] и др. В 1992 P. Милнер, Ё. Пэрроу и Д. Уолкер разработали тс-исчисление [12], процессную алгебру, (являющуюся расширением CCS-исчисления, Calculus of Communicating Systems), основная цель которой - помочь при описании параллельных вычислений, конфигурация которых может меняться во время самих вычислений. В 1995 г. Ц. Фурнье и Дж. Гонтье из института INRIA разрабатывают join-исчисление [13] — процессную алгебру, представляющую формальный базис для разработки распределенных языков программирования. Данное расширение имеет важное преимущество по сравнению с к-исчислением - возможность определения образцов связок (join-patterns), которые позволяют выполнять некоторые действия при нахождении соответствий в поступающих по разным каналам сообщениям. Разработка join-исчисления привела к появлению целого семейства join-языков. В-2002 г. в Университете Южной Австралии создается язык Join Java [10], являющийся расширением языка Java. В 2003 г. корпорация Майкрософт спонсирует исследования по созданию языка Polyphonic С#, который позже был объединен с языком Сю [14] и теперь является кандидатом на слияние в следующих версиях с языком С#. Исследования в направлении расширения существующих языков также ведут такие компании как IBM (язык Х10 [15], расширяющий язык Java), Intel (Cluster OpenMP [16], расширяющий языки С++ и Fortran), Sun

Microsystems (язык Fortress [17], расширяющий язык Fortran) и др. Все предложенные расширения являются оптимизированными под конкретные базовые языки.

Среди отечественных разработок на сегодняшний день, к сожалению, можно выделить лишь три языка, разработанных в Институте программных систем РАН: Т++ [2, 18, 19] (расширение языка С++, созданное в рамках суперкомпьютерной программы СКИФ [20, 21] России и Белоруссии), Т# [22] и МС# [23] (оба языка являются расширениями языка С#). Автор данной диссертации участвовал в разработке языка МС#, в процессе работы над которым появились новые идеи, которые стали основой для данной работы.

Цель работы. Цель диссертационной работы - поддержка параллельного программирования для многопроцессорных и распределенных систем на базе существующих широко распространенных объектно-ориентированных языков программирования.

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

Научная новизна результатов исследования.

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

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

Практическая значимость работы. Разработанная технология расширения существующих объектно-ориентированных языков программирования (имеющих встроенные механизмы сериализации/десериализации) позволяет повысить эффективность работы программистов при написании параллельных программ на расширенных языках за счет компактного синтаксиса и автоматической генерации кода в базовых языках. При этом среднее отношение объема сгенерированного кода к объему, написанному разработчиком равно -10 к 1. Поскольку модель предполагает внесение минимальных изменений в распространенные языки программирования, существенно сокращаются временные и финансовые расходы на обучение программистов уже знакомых с базовым (расширяемым) языком.

Апробация работы. Основные результаты работы представлялись на следующих конференциях и семинарах:

- "The 2008 International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'08)", Monte Carlo Resort, Las Vegas, Nevada, USA (July 14-17, 2008);

- "XLIV Всероссийской Конференции по Проблемам Математики, Информатики, Физики и Химии, секция "Программные Системы", г. Москва, Российский Университет Дружбы Народов (21-25 апреля 2008

- "Всероссийская научная конференция "Научный сервис в сети Интернет: технологии распределенных вычислений", г. Новороссийск (19-24 сентября 2005 г.);

- "П-й Белорусский космический конгресс", Минск (25-27 октября 2005 г.);

- "ХП-ой международная конференция по вычислительной механике и современным прикладным программным системам (ВМСППС'2003)", г. Владимир (30 июня - 5 июля 2003 г.);

- "Международная конференция Parallel Computing Technologies 2003 (РАСТ'2003)", Нижний Новгород (15-19 сентября 2003);

- "Технологии Microsoft в научных исследованиях и высшем образовании", Научно-техническая конференция по программированию, Москва (15-17 июня, 2003 г.);

- "1st International Workshop on С# and .NET Technologies on Algorithms, Computer Graphics, Visualization, Distributed and WEB Computing (C# and .NET Technologies'2003)", University of West Bohemia, Plzen, Czech Republic (5-7 February, 2003);

- сообщения и доклады на научно-практических и научно-методических конференциях РУДН в 2007-2009 гг.

Основное содержание диссертации отражено в 8 научных работах, включая одну публикацию в издании из списка ВАК.

Структура и объем работы.

Диссертационная работа состоит из введения, 3 глав, заключения, библиографического списка, включающего 105 наименований. Общий объем основного текста диссертации 107 страниц. В работе содержатся 10 рисунков и 8 таблиц.

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Заключение диссертации по теме «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», Гузев, Вадим Борисович

Основные результаты работы:

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

2. Разработаны правила трансляции новых синтаксических конструкций в базовые языки и представлена в качестве демонстрации практическая реализация данных правил на примере языка Parallel С# (расширение существующего языка С#). Стоит отметить, что с помощью данных конструкций можно легко расширить многие языки программирования, например, Java, Nemerle и др., т.е. представленная модель рассчитана не только на один конкретный язык программирования.

3. Разработаны транслятор и две системы времени исполнения для языка Parallel С# - для многопроцессорных и кластерных архитектур (обе системы оформлены как проект с открытым исходным кодом и доступны в Internet по адресу: www.parallelcsharp.com). Реализованы тестовые программы и произведены замеры производительности этих программ на кластере, показавшие приемлемый уровень ускорения на разном числе процессоров.

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

Заключение

Список литературы диссертационного исследования кандидат технических наук Гузев, Вадим Борисович, 2009 год

1. Berger М. Towards Abstractions For Distributed Systems. // Электронный ресурс. 2004. - Режим доступа:http://www.informatics.sussex.ac.uk/users/mfb21/publications/phd/thesis.pdf

2. OpenTS :: Описание языка Т++. // Электронный ресурс. 2006. - Режим доступа: http://www.opents.net/index.php/ru/lang-tpp.

3. The Cilk Project. // Электронный ресурс. 1994, - Режим доступа: http://supertech.csail.mit.edu/cilk/.

4. UPC Language Specification. // Электронный ресурс. 2005. - Режим доступа: https://upc-wiki.lbl.gOv/UPC/images/f/f6/Upcspecsl.2.pdf.

5. Kaleev L. V., Sanjeev К. Charm++: Parallel Programming with Message-Driven Objects. // in "Parallel Programming using С++", by Gregory V. Wilson and Paul Lu. MIT Press. 1996. - C. 175-213.

6. ZPL. // Электронный ресурс. 1997. - Режим доступа: http://www.cs.washington.edu/research/zpl/home/index.html.

7. High-Performance Erlang. // Электронный ресурс. 1998. - Режим доступа: http://www.it.uu.se/research/group/hipe/.

8. Halstead R.H., Jr., MULTILISP: a language for concurrent symbolic computation. // ACM Transactions on Programming Languages and Systems (TOPLAS), v.7 1985. -№4. - C. 501-538.

9. Jones S.P., Gordon A., Finne S. Concurrent Haskell. // ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (PoPL). -1996.

10. Sangiorgi D., Walker D. The Pi-calculus: a Theory of Mobile Processes. // Cambridge University Press. 2001. - ISBN 0521781779.

11. Fournet C., Gonthier G. The Join Calculus: A Language for Distributed Mobile Programming. // In Proceedings of the Applied Semantics Summer School (APPSEM), Caminha. Springer-Verlag. 2000. - C. 268-332.

12. М.Исследовательский язык программирования С00. // Электронный ресурс. 2005. - Режим доступа: http://research.microsoft.com/en-us/um/cambridge/proj ects/comega/.

13. The XI0 Programming Language. // Электронный ресурс. 2004. - Режим доступа:http://domino.research.ibm.eom/comm/researchprojects.nsf/pages/xlO.index.h tml.

14. Библиотека Cluster OpenMP для компиляторов Intel® для ОС Linux. // Электронный ресурс. 2008. - Режим доступа: http://www.intel.com/cd/software/products/emea/rus/379901 .htm.

15. Project Fortress Community. // Электронный ресурс. 2008. - Режим доступа: http://projectfortress.sun.com/Projects/Community/.

16. Суперкомпьютерная программа «СКИФ» союзного государства. // Электронный ресурс. 2002. - Режим доступа: http://skif.pereslavl.ru.

17. Абламейко С. В., Абрамов С. М., Анищенко В. В., Парамонов Н. Н., Чиж О. П. Суперкомпьютерные конфигурации СКИФ. // Минск: ОИПИ НАН Беларуси, 2005. 170 с. - ISBN 985-6744-19-9.

18. Сайт проекта МС#. // Электронный ресурс. — 2007. — Режим доступа: http://www.mcsharp.net.

19. Кораблин Ю. П. Язык асинхронных функциональных схем и его операционная семантика // Известия академии наук. Теория и системы управления. 1996. - №5. - С. 42-53.

20. Кораблин Ю. П., Налитов С. Д., Куликова Н. JI. Распределенное программирование на языке АФС. М.: Изд. МЭИ, 1995. - 40 с.

21. Хендерсон П. Функциональное программирование: Применение и реализация. // М.: Мир, 1983. 349 с.

22. Hoare C.A.R. Communicating Sequential 'Processes // Comm. of the ACM.-1978. v. 21. - №8. - C. 666-677.

23. Benton N., Cardelli L., Fournet C. Modern Concurrency Abstractions for C#. // ACM Transactions on Programming Languages and Systems. T.26. - №5. -2004. - C. 769-804.

24. Standard ECMA-334: C# Language Specification. // Электронный ресурс. -2001. http://www.ecma-international.org/publications/standards/Ecma-334.htm.

25. Монахов В. Язык программирования Java и среда NetBeans. / СПб.: БХВ-Петербург, 2008. С. 627.

26. MPI: A Message Passing Interface Standard. Version 2.2. // Электронный ресурс. 2009. - http://www.mpi-forum.Org/docs/mpi-2.2/mpi22-report.pdf.

27. Домашняя страница языка программирования Nemerle. // Электронный ресурс. 2003. — http://nemerle.org.

28. Microsoft .Net Framework. // Электронный ресурс. — 2008. -http://www.microsofl.com/NET/.

29. Сердюк Ю.П. Формальный базис для языка программирования МС#. // Электронный ресурс. 2007. - Режим доступа: http://mcsharp.net/publications/formalbasisextendedabstract.pdf.

30. Serdyuk Y. МС# 2.0: a language for concurrent distributed programming on .NET. // In proceedings of .NET Technologies 2006 conference. Plzen, Czech Republic, 2006.

31. Prasad S., Arun-Kumar S. An Introduction to Operational Semantics. // Электронный ресурс., 2003. - Режим доступа: http://www.cse.iitd.ernet.in/~sanjiva/opsem.ps.

32. Berry G., Boudol G. The;chemical abstract machine. // In POPL '90: Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages. New York, NY, USA: ACM Press, 1990. - C. 8194.

33. Fournet С., Gonthier G. The reflexive chemical abstract machine and the join-calculus. // In Proceedings of POPL'96. ACM, Jan. 1996. - C. 372-385.

34. Dean J., Ghemawat S. MapReduce: Simplified Data Processing on Large Clusters. // Электронный ресурс. Режим доступа: http://labs.google.com/papers/mapreduce-osdi04.pdf.

35. Сайт проекта Parallel С#. // Электронный ресурс. 2008. - Режим доступа: http://www.parallelcsharp.com.

36. Проект Mono. // Электронный ресурс. 2004. - Режим доступа: http://www.mono-project.com.

37. Gough J. Compiling for the .NET Common Language Runtime (CLR). / Prentice Hall PTR- 2002. ISBN 0-13-062296-6.

38. Gough J. The GPLEX Scanner Generator. // Электронный ресурс. 2008. -Режим доступа: http://plas2003.fit.qut.edu.au/gplex/.

39. Gough J., Kelly W. The GPPG Parser Generator. // Электронный ресурс. -2005. Режим доступа: http://plas.fit.qut.edu.au/gppg/.

40. Managed Babel System. / Электронный ресурс. 2006. - Режим доступа: http://msdn;microsoft.com/en-us/library/bbl65037%28VS.80%29.aspx.

41. Martin R. The Principles, Patterns, and Practices of Agile Software Development. / Prentice Hall 2002. - ISBN 0-13-597444-5.

42. The SSH Protocol. // Электронный ресурс. 2001. - Режим доступа: http://www.snailbook.com/protocols.html.

43. Linux NFS FAQ. // Электронный ресурс. 1984. - Режим доступа: http://nfs.sourceforge.net.

44. Trono J.A. A new exercise in concurrency. // SIGCSE Bulletin, 26(3):8-10, 1994. Corrigendum: 26(4):63.

45. Ben-Ari M. How to solve the Santa Claus problem. // Concurrency: Practice & Experience, 10(6). 1998. - C. 485-496.

46. Benton N. Jingle bells: Solving the santa claus problem in polyphonic c#. // Microsoft Research, Tech. Rep., Электронный ресурс. 2003. - Режим доступа: http://research.microsoft.com/~nick/polyphony/santa.pdf.

47. Костарев А. Н. Разработка инструментального комплекса для создания и семантического анализа распределенных информационных систем. Дис. на соиск. уч. ст. к-та техн. наук. М., 2004. - 138 с.

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

49. Titanium Language Reference Manual. // Электронный ресурс. 2006. -Режим доступа:http://www.cs.berkeley.edu/Research/Projects/titanium/doc/lang-ref.pdf.

50. TRINDER P. W., LOIDL H.-W., POINTON R. F. (2002). // Parallel and Distributed Haskells. // Journal of Functional Programming. 2002. - №12-C. 469-510.

51. Fournet C. The Join-Calculus: a Calculus for Distributed Mobile Programming. // PhD thesis, Ecole Polytechnique, Palaiseau, November 1998. INRIA TU-0556. Электронный ресурс. 1998. - Режим доступа: http://research.microsoft.com/~fournet.

52. Courtois P. J., Heymans F., Parnas D. L. Concurrent control with "readers" and "writers". // Communications of the ACM. -T. 14. -№10. -1971. C. 667668.

53. Hemmendinger D. A correct implementation of general semaphores. // ACM SIGOPS Operating Systems Review. T.22. - №3. -1988. - C. 42-44.

54. Hemmendinger D. Comments on "a correct and unrestrictive implementation of general semaphores". // ACM SIGOPS Operating Systems Review. T.23. -№1.-1989.- C. 7-8.

55. Chudinov A., Guzev V., Serdyuk Y. MC#: An Asynchronous Parallel Programming Language for Cluster and GRID-Architectures. // In proc. of C# and .NET Technologies' 2003. Plzen, Czech Republic. - 2003. - C. 21-24. -ISBN 80-903100-3-6.

56. Абрамов C.M. Суперкомпьютеры семейства "СКИФ": вчера, сегодня, завтра. // Информационные и математические технологии в науке и управлении. Труды XII Байкальской Всероссийской конференции. -Иркутск, 2007. Часть II. - С. 6-12.

57. Антонов А.С. Параллельное программирование с использованием технологии MPI. / М.: Изд-во МГУ, 2004. 71 с. - ISBN 5-211-04907-1.

58. Антонов А.С. Параллельное программирование с использованием технологии ОрепМР: Учебное пособие. / М.: Изд-во МГУ, 2009. 77 с. -ISBN 978-5-211-05702-9.

59. Воеводин В.В. Вычислительная математика и структура алгоритмов. / М.: Изд-во МГУ, 2006. 112 с. - ISBN 5-211-05310-9.

60. Хьюз К., Хьюз Т. Параллельное и распределенное программирование с использованием С++. / Вильяме, 2004. 672 с. - ISBN 5-8459-0686-5, 013-101376-9.

61. Эндрюс Г. Основы многопоточного, параллельного и распределенного программирования. / Вильяме, 2003. 512 с. - ISBN 5-8459-0388-2, 02013-5752-6.

62. Ахо А., Лам М., Сети Р., Ульман Д. Компиляторы: принципы, технологии и инструментарий, 2 издание. / Вильяме, 2008. 1184 с. - ISBN 978-58459-1349-4, 0-321-48681-1.

63. Карпов Ю. Теория и технология программирования. Основы построения трансляторов. / BHV-Санкт-Петербург, 2004. 272 с. - ISBN: 5-94157285-9.

64. Хантер Р. Основные концепции компиляторов. / Вильяме, 2002. 256 с. -ISBN: 5-8459-0360-2.

65. Петров А., Гузев В. MC# универсальный язык параллельного программирования. // Журнал "Информационные технологии". - №4. -2008. - С. 29-32.

66. Barendregt Н.Р. The Lambda Calculus: Its Syntax and Semantics. / Studies in Logic and the Foundations of Mathematics, v. 103. Amsterdam: North-Holland, 1984. - 654 c. - ISBN 0-444-87508-5.

67. Абрамов С.М., Кузнецов А.А., Роганов В.А. Кроссплатформенная версия Т-системы с открытой архитектурой. // Вычислительные методы и программирование. 2007. - Т. 8. - №1. - Раздел 2. - С. 175-180.

68. Троелсен Э. Язык программирования С# 2005 (Си Шарп) и платформа .NET 2.0. Вильяме, 2007. - 1168 с. - ISBN 978-5-8459-1124-7, 1-59059419-3.

69. Таненбаум Э., Стен М. Распределенные системы. Принципы и парадигмы. / Питер, 2003. 880 с. - ISBN 5-272-00053-6.

70. Буч Г., Максимчук Р., Энгл М., Янг Б., Коналлен Д., Хьюстон К. Объектно-ориентированный анализ и проектирование с примерами приложений, третье издание. / Вильяме, 2008. 720 с. - ISBN 978-5-84591401-9.

71. Goetz В., Peierls Т., Bloch J., Bowbeer J., Holmes D., Lea D. Java Concurrency in Practice. / Addison Wesley Professional, 2006. 384 c. - ISBN 0-321-34960-1.

72. Шредер К. Linux. Сборник рецептов. / Питер, 2006. 432 с. - ISBN 5-46901188-7.

73. Роббинс Д. Отладка приложений Microsoft .NET и Microsoft Windows. / Русская Редакция, 2004. 736 с. - ISBN 5-7502-0243-0, 0-7356-1536-5.

74. Маклин С., Нафтел Д., Уильяме К. Microsoft .NET Remoting. / Русская Редакция, 2003. 384 с. - ISBN 5-7502-0229-1.

75. Робинсон С., Корнес О., Глинн Д. и др. С# для профессионалов. / ЛОРИ, 2005. 1480 с. - ISBN 5-85582-187-0.

76. Керниган Б., Ритчи Д. Язык программирования Си. / Санкт-Петербург: Невский диалект, 2001. 352 с. - ISBN 5794000457.

77. Страуструп Б. Язык программирования С++. Специальное издание. / Бином, 2007. 1099 с. - ISBN 978-5-7989-0226-2.

78. Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений. / Вильяме, 2002. 528 с. - ISBN 5-8459-0261-4, 0201-44124-1.

79. Немеет Э., Снайдер Г., Хейн Т. Руководство администратора Linux. / Вильяме, 2007. 1072 с. - ISBN 978-5-8459-1093-6.

80. Hoare C.A.R. Monitors: An operating system structuring concept. // Communications of the ACM T.17. - №10. - 1974. - C. 549-557. - ISSN: 0001-0782.

81. Hoare C.A.R. Communicating Sequential Processes. / Prentice-Hall. 1985. -256 c. - ISBN: 0-131-53271-5.

82. Gosling J., Joy В., Steele G. Threads and locks. // In "The Java Language Specification". Prentice Hall PTR, 2000. - Глава 17. - С. 429-448. - ISBN 0-201-31008-2.

83. Parallel.ru: Технологии параллельного программирования. // Электронный ресурс. 2009. - Режим доступа: http://parallel.ru/tech/.

84. Норма. Система построения параллельных программ. // Электронный ресурс. 2007. - Режим доступа: http://www.keldysh.ru/pages/norma/.

85. Аветисян А., Бабкова В., Монаков А. Обеспечение высокопродуктивного программирования для современных параллельных платформ. // Электронный ресурс. 2009. - Режим доступа: http://wmv.citforum.ru/programming/ digest/highproductive/.

86. Немнюгин С., Стесик О. Параллельное программирование для многопроцессорных вычислительных систем. / БХВ-Петербург, 2002. -400 с. ISBN 5-94157-188-7.

87. Корнеев В. Параллельное программирование в MPI. / Институт компьютерных исследований, 2003. 304 с. - ISBN 5-93972-239-3.

88. PVM: Parallel Virtual Machine. // Электронный ресурс. 2007. -Режим доступа: http://www.csm.oml.gov/pvm/.

89. Axum Programmer's Guide. // Электронный ресурс. 2008. -Режим доступа: http://download.microsoft.eom/download/B/D/5/BD51FFB2-C777-43B0-AC24-BDE3C88E231F/Axum%20Programmers%20Guide.pdf.

90. Concurrency and Coordination Runtime. // Электронный ресурс. -2009. Режим доступа: http://msdn.microsoft.com/en-us/library/bb905470.aspx.

91. Гергель В. Теория и практика параллельных вычислений. / Бином. Лаборатория знаний, 2007. 424 с. - ISBN 978-5-94774-645-7, 978-5-95560096-3.

92. Джоунз Г. Програмирование на языке Оккам / Пер. с англ. Л. В. Шабанова, под ред. Ю. Г. Дадаева. М: Мир, 1989. - 208с.: ил. ISBN 5-03001155-2.

93. Богачев К. Основы параллельного программирования. / Бином. Лаборатория знаний, 2003. 344 с. - ISBN 5-94774-037-0.

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