ДонНТУ   Портал магістрів

Реферат за темою випускної роботи

Зміст

Вступ

Вирішення проблеми забезпечення безпеки руху транспортних засобів є першорядною задачею у зв'язку зі збільшенням транспортних потоків. Проблема безпеки стоїть особливо гостро для суден внутрішнього та змішаного плавання. У зв'язку з цим, широке поширення для вирішення задачі автономного судноводіння отримали інтегровані навігаційні системи (ІНС) [1], основним призначенням яких є підвищення безпеки руху судна на внутрішніх водних шляхах завдяки звільненню судноводія від виконання навігаційних розрахунків, необхідних для передбачення траєкторії руху. У магістерській роботі проводиться дослідження підсистеми ІНС, яка виконує розрахунок координат траєкторії руху судна. Основною задачею даної підсистеми є прогнозування параметрів руху судна на основі його математичної моделі. У зв'язку з тим, що підсистема розрахунку параметрів руху вимагає великих обчислювальних потужностей, то для її ефективної роботи необхідно застосовувати високопродуктивні системи. У магістерській роботі виконується аналіз ефективності роботи підсистеми розрахунку координат траєкторії руху суден при її реалізації на різних паралельних архітектурах.

1. Актуальність теми

Швидкодія функціонування підсистеми розрахунку координат траєкторії руху судна визначає ефективність роботи всієї ІНС. У зв'язку з цим, підвищення продуктивності даної підсистеми є актуальною задачею. Низька швидкодія роботи цієї підсистеми робить функціонування всієї ІНС неефективним, що може призвести до негативних наслідків. Проблема швидкодії виникає особливо гостро при розрахунку параметрів для групи суден. У магістерській роботі досліджуються питання забезпечення необхідної швидкодії роботи підсистеми розрахунку координат траєкторії руху суден у складі ІНС.

2. Мета і задачі дослідження

Метою роботи є аналіз ефективності роботи підсистеми розрахунку координат траєкторії руху суден, яка реалізована на паралельних архітектурах.

У рамках магістерської роботи необхідно вирішити наступні задачі:

3. Огляд досліджень і розробок

На світовому рівні розробкою ІНС і моделюванням руху транспортних засобів активно займаються рада з транспортних досліджень Національної академії наук США (Transportation Research Board of the National Academy of Sciences) [2], кафедра прикладної механіки та управління механіко-математичного факультету Московського державного університету імені М.В. Ломоносова [3], Інститут динаміки складних технічних систем товариства імені Макса Планка (Німеччина) [4], який активно співпрацює з кафедрою комп'ютерної інженерії факультету КНТ Донецького національного технічного університету (ДонНТУ). Дослідження в цьому напрямку проводяться під керівництвом професора Штутгартського університету (Німеччина) Ернста Гілеса (Ernst Dieter Gilles) [5]. Активну роботу в галузі моделювання водних транспортних засобів проводять в Норвезькому університеті науки і технології під керівництвом професора Тора Фосена (Thor Fossen) [6]. Він є одним з авторів Matlab/Simulink бібліотек, які вільно розповсюджуються, [7] для моделювання руху водних транспортних засобів.

В Україні питання створення електронних систем судноводіння активно досліджуються в Одеській національній морській академії [8]. Дослідження в цьому напрямку проводяться під керівництвом професора Вагущенко Леоніда Леонідовича [9].

У Донецькому національному технічному університеті питаннями моделювання руху транспортних засобів, створенням тренажерних систем та інтегрованих навігаційних систем займаються співробітники кафедри комп'ютерної інженерії факультету КНТ: асистент Кривошеєв Сергій Васильович, професор Анопрієнко Олександр Якович і професор Святний Володимир Андрійович [10, 11, 12, 13, 14]. Наукова школа професора Святного Володимира Андрійовича активно займається паралельним моделюванням. Питання моделювання руху транспортних засобів і використання навігаційних систем розглянуті в магістерських роботах Кондратенко А.В. [15], Гапечкіна А.І. [16], Паршина О.М. [17] і Порицького О.В. [18].

4. Огляд паралельних архітектур

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

4.1 Загальна класифікація паралельних систем

Під паралельними архітектурами розуміють такі архітектури обчислювальних систем, які на апаратному рівні дозволяють організувати паралельну обробку даних. На рисунку 1 наведена загальна класифікація паралельних обчислювальних систем [19].

Класифікація паралельних архітектур

Рисунок 1 – Класифікація паралельних архітектур

Архітектура SIMD (Single Instruction stream Multiple Data stream – один потік команд, кілька потоків даних) лежить в основі обчислювальних систем, які керуються одним потоком команд, що обробляють кілька потоків даних. До різновидів таких систем відносяться масивно-паралельні і векторні процесори (комп'ютери).

Масивно-паралельний процесор, з точки зору загальної структури, можна представити як ґрати досить великого розміру, з вузлами яких пов'язані однотипні процесори певної продуктивності, кожен з яких має свою локальну пам'ять. Єдиний блок управління активізує процесори на виконання однієї й тієї ж послідовності команд, але над різними даними, які завантажуються в локальні модулі пам'яті.

Основою векторного процесора є векторний арифметико-логічний пристрій (АЛП). Векторний АЛП – це набір паралельно функціонуючих звичайних АЛП, що виконують одночасно одну і ту ж дію (запропоновану командою) над відповідними елементами векторів даних, що зберігаються в спеціальних векторних регістрах.

Архітектура MISD (Multiple Instruction stream Single Data stream – кілька потоків команд, один потік даних) не використовується на макрорівні (рівні машинних команд) відомих обчислювальних систем. На мікрорівні MISD являє собою конвеєрну суперскалярну організацію обчислень.

MIMD архітектура (Multiple Instruction stream Multiple Data stream – кілька потоків команд, кілька потоків даних) лежить в основі мультипроцесорів і мультикомп'ютерів.

Мультипроцесор – це набір процесорів, що оперують паралельно в одному адресному просторі і використовують єдину копію операційної системи. При блокуванні якогось процесу його процесор зберігає свій стан в таблицях операційної системи і передає управління іншому процесору. Єдине відображення обчислювального процесу, яке використовується усіма процесорами, зберігається в пам'яті загального використання.

У відповідності зі способом реалізації пам'яті загального використання розрізняють три типи архітектур мультипроцесорів:

Мультикомп'ютер – обчислювальна система без загальної пам'яті, що складається з великого числа взаємопов'язаних комп'ютерів, у кожного з яких є власна пам'ять. Процесори мультикомп'ютера відправляють один одному повідомлення, для чого використовується мережева топологія.

Основою особливістю мультикомп'ютерів є те, що кожен процесор системи може використовувати тільки свою локальну пам'ять, в той час як для доступу до даних, які розташовані на інших вузлах системи, необхідно явно виконати операції передачі повідомлень (message passing operations). Для передачі даних між вузлами використовується високошвидкісна мережа передачі даних (комунікаційна мережа). На рисунку 2 наведена структура мультикомп'ютера.

Структура мультикомп'ютера

Рисунок 2 – Структура мультикомп'ютера

В даний час розрізняють два основних класи мультикомп'ютерів:

Слід відрізняти поняття кластера від мережі комп'ютерів. Для побудови локальної комп'ютерної мережі, як правило, застосовують більш прості мережі передачі даних. Комп'ютери мережі зазвичай більш розосереджені і можуть бути використані користувачами для виконання будь-яких додаткових робіт, крім паралельних обчислень.

У складі кожного вузла мультикомп'ютера міститься комутатор, який підключається до мережі передачі даних. Топологія комунікаційної мережі визначає схему розміщення ліній зв'язку і комутаторів.

4.2 Апаратна реалізація паралельних систем

В останні роки серед виробників центральних процесорів (CPU) є тенденція збільшувати не тактову частоту роботи CPU, а збільшувати число обчислювальних ядер. Під багатоядерним процесором [20] розуміється центральний процесор, який містить два або більше обчислювальних ядра на одному процесорному кристалі або в одному корпусі. Під ядром розуміється частина процесора, що здійснює виконання одного потоку команд. У багатоядерному процесорі можна здійснювати незалежне паралельне виконання декількох потоків команд одночасно. Число незалежних потоків, що виконуються, відповідає числу ядер в процесорі. Багатоядерні процесори є найпростішою MIMD системою. В даний час число ядер в CPU може досягати декількох десятків.

В нинішній час широке поширення набуло використання графічних процесорів (GPU) для проведення обчислень загального призначення, зокрема паралельних обчислень. Така техніка використання GPU отримала назву GPGPU (General-purpose graphics processing units – "GPU загального призначення"). Графічні процесори спочатку є паралельними пристроями SIMD. GPU приймає на вході групу полігонів, проводить всі необхідні операції, і на виході видає пікселі. Обробка полігонів і пікселів незалежна, їх можна обробляти паралельно, окремо один від одного. Через паралельну організацію роботи в GPU використовується велика кількість виконавчих блоків, які легко завантажити. Крім того, сучасні GPU можуть виконувати більше однієї інструкції за такт (dual issue). На рисунку 3 показана різниця в структурі CPU і GPU.

Різниця в структурі CPU і GPU

Рисунок 3 – Різниця в структурі CPU і GPU

Як видно з рисунка більшу частину кристала CPU займає кеш-пам'ять (cache), а обчислювальні модулі (ALU) займають лише четверту частину кристала. Більшу частину кристала GPU займають обчислювальні модулі (ALU), а частка кеш-пам'яті (cache) й пристроїв управління (control) дуже мала. Тому GPU доцільно використовувати для паралельних обчислень.

Одним з прикладів реалізації паралельних обчислень загального призначення на графічних процесорах є програмно-апаратна архітектура CUDA [21] від компанії NVIDIA.

В даний час широкого поширення набула ідея створення високопродуктивних кластерів [22] з персональних комп'ютерів на базі звичайних центральних процесорів, використовуючи недорогі комунікаційні мережі, наприклад мережі Ethernet. Продуктивність таких кластерів може досягати обчислювальних потужностей суперкомп'ютерів з в десятки разів меншою вартістю.

4.3 Програмна підтримка паралельних систем

Для ефективного використання апаратних можливостей паралельних архітектур необхідно використовувати відповідні програмні засоби.

Одним з найпростіших способів реалізації паралельних обчислень на базі багатоядерних і багатопроцесорних систем є створення багатопоточних додатків. Для створення багатопоточних додатків потрібна підтримка багатопоточності з боку операційної системи і наявність спеціальних бібліотек для роботи з потоками у високорівневій мові програмування. Як приклад такої бібліотеки можна навести OpenMP (Open Multi-Processing) [23]. OpenMP – відкритий стандарт для розпаралелювання програм на мовах С, С++ і Fortran. Стандарт описує сукупність директив компілятора, бібліотечних процедур і змінних оточення, які призначені для програмування багатопоточних додатків на багатопроцесорних системах із загальною пам'яттю. Багато сучасних інтегрованих середовищ розробки підтримують стандарт OpenMP.

Як приклад програмної підтримки паралельних обчислень на базі графічних процесорів можна навести апаратно-програмну платформу NVIDIA CUDA. Для роботи з цією платформою необхідна наявність відеокарти компанії NVIDIA, яка підтримує GPGPU, і установка середовища розробки CUDA (CUDA Toolkit). CUDA Toolkit можна скачати з офіційного сайту NVIDIA [24] для конкретної операційної системи. Середовище розробки CUDA (CUDA Toolkit) включає:

Таким чином, розробник отримує можливість створювати паралельні програми для графічного процесора, використовуючи звичні мови високого рівня. Компанія NVIDIA випускає спеціальні утиліти, які дозволяють розробляти CUDA-програми в складі інших інтегрованих середовищ розробки.

Одним з найбільш поширених способів організації паралельних обчислень на мультикомп'ютерах є використання програмного інтерфейсу MPI [25]. Message Passing Interface (інтерфейс передачі повідомлень) – програмний інтерфейс (API) для передачі інформації, який дозволяє обмінюватись повідомленнями між процесами, які виконують одну задачу. Існує безліч комерційних і безкоштовних реалізацій MPI для різних операційних систем та комп'ютерних платформ.

MPI-програма являє собою набір незалежних процесів, кожен з яких виконує свою власну програму. Процеси MPI-програми взаємодіють один з одним за допомогою виклику комунікаційних процедур. Як правило, кожен процес виконується у своєму власному адресному просторі, однак допускається і режим поділу пам'яті. MPI не специфікує модель виконання процесу – це може бути як послідовний процес, так і багатопоточний. MPI не надає ніяких засобів розподілу процесів на обчислювальних вузлах та запуску їх на виконання. Ці функції покладаються або на операційну систему, або на програміста. MPI не накладає ніяких обмежень на те, як процеси будуть розподілені по процесорах, зокрема, можливий запуск MPI-програми з кількома процесами на звичайній однопроцесорній системі.

Для ідентифікації наборів процесів вводиться поняття групи, що об'єднує в собі всі або якусь частину процесів. Кожна група утворює область зв'язку, з якою зв'язується спеціальний об'єкт – комунікатор області зв'язку. Процеси всередині групи нумеруються цілим числом в діапазоні 0,...,(groupsize-1). Всі комунікаційні операції з деяким комунікатором будуть виконуватись тільки всередині області зв'язку, яка описується цим комунікатором. При ініціалізації MPI створюється певна область зв'язку, яка містить всі процеси MPI-програми, з нею зв'язується певний комунікатор MPI_COMM_WORLD. У більшості випадків на кожному процесорі запускається один окремий процес, і тоді терміни "процес" і "процесор" стають синонімами, а величина groupsize стає рівною числу процесорів, які виділені задачі.

5. Модель паралельної системи для розрахунку параметрів рухомого об'єкту

Основною задачею підсистеми розрахунку координат траєкторії руху судна є прогнозування параметрів руху судна на основі заданих початкових умов з використанням математичної моделі руху. Математична модель руху судна визначає роботу підсистеми розрахунку параметрів. Вибір математичної моделі визначається необхідним рівнем деталізації руху. Можна виділити наступні математичні моделі руху судна: модель руху з шістьма ступенями свободи (рух судна в тривимірному просторі), модель руху з трьома ступенями свободи (рух судна тільки в горизонтальній площині) і модель Номото.

5.1 Загальна структура підсистеми розрахунку параметрів руху судна

Загальна структура підсистеми розрахунку параметрів траєкторії руху судна наведена на рисунку 4.

Загальна структура підсистеми розрахунку параметрів траєкторії руху судна

Рисунок 4 – Загальна структура підсистеми розрахунку параметрів траєкторії руху судна

Підсистема розрахунку параметрів руху містить наступні модулі: інтерфейс прийому інформації, база даних параметрів судна, інтерфейс передачі інформації та обчислювач. Інтерфейс прийому інформації отримує початкові параметри траєкторії руху судна від інших модулів ІНС і передає отриману інформацію на обчислювач. База даних параметрів судна містить характеристики, які описують конкретне судно, для якого виконується прогнозування параметрів. Інтерфейс передачі інформації передає спрогнозовані параметри траєкторії руху судна, які надійшли з обчислювача, на інші модулі ІНС. Обчислювач є основним елементом підсистеми розрахунку координат траєкторії руху судна. Цей модуль виконує розрахунок параметрів руху на основі математичної моделі руху судна з використанням його параметрів з бази даних і отриманих початкових параметрів руху.

5.2 Математична модель руху судна

Розрахунок параметрів руху судна виконується на основі математичної моделі. Розглянемо математичну модель руху судна в горизонтальній площині. Система координат судна наведена на рисунку 5.

Система координат судна

Рисунок 5 – Система координат судна

Маневри судна в горизонтальній площині можна описати за допомогою наступної моделі [26]:

Система рівнянь 1

де m – маса судна; vX та vY – швидкість судна по вісі X та Y відповідно; ω – кутова швидкість судна; L – довжина судна; JZ – момент інерції маси судна; lR – відстань від центру судна до рушійно-рульового комплексу (РРК); ZP – кількість РРК; XA, YA, MA – поздовжня, бокова сили і момент аеродинамічних сил, що діють на надводну частину судна; TRi та YRi – корисна тяга й бокова сила i-го РРК; k11, k22 – приєднані маси судна при русі по вісям X і Y відповідно; k66 – приєднаний момент інерції судна; k26 – приєднаний статичний момент; R – опір води; YK – бокова гідродинамічна сила неінерційної природи; MK – момент гідродинамічних сил відносно вертикальної вісі, що проходить через центр судна.

В системі рівнянь (1) три невідомі величини – vX, vY, ω. Всі інші параметри або відомі для конкретного судна, або розраховуються за формулами. Невідомі величини знаходяться в ході вирішення системи диференціальних рівнянь. Швидкості по вісі X і Y і кутова швидкість в кожен момент часу вичерпно описують динаміку руху судна в горизонтальній площині.

При деяких режимах руху і при нехтуванні деякими параметрами система рівнянь (1) може значно спрощуватись. Наприклад, при круговому (циркулярному) русі судна система рівнянь (1) приймає вигляд:

Система рівнянь 2

де Xr, Yr та Mr – корпусні гідродинамічні зусилля.

Підсистема розрахунку координат траєкторії руху вирішує задачу Коші для системи рівнянь (1): знаючи значення vX, vY, ω в початковий момент часу t0 для судна, знаходить значення параметрів vX, vY, ω в наступні моменти часу. Попередньо система рівнянь (1) перетворюється до виду, зручного для застосування чисельних методів. Постановка задачі Коші для системи рівнянь (1) виглядає наступним чином:

Система рівнянь 3

де t0 – початковий час дослідження руху судна; vX0, vY0 – швидкість руху судна по вісі X і Y відповідно в початковий момент часу t0; ω0 – кутова швидкість судна в t0.

Для вирішення системи рівнянь (3) застосовується чисельний метод Рунге-Кутти 4-го порядку. Цей метод є одним з найбільш поширених чисельних методів вирішення диференціальних рівнянь та їх систем. На рисунку 6 показано даний метод на прикладі вирішення звичайного диференціального рівняння 1-го порядку.

Метод Рунге-Кутти 4-го порядку

Рисунок 6 – Вирішення диференціального рівняння методом Рунге-Кутти 4-го порядку
(анімація: 10 кадрів, 5 циклів повторення, 1 секунда інтервал між кадрами, розмір 80,3 кілобайта)
(h – крок інтегрування, n – кількість кроків інтегрування)

6. Результати експериментів

Дослідження продуктивності підсистеми розрахунку координат траєкторії руху суден виконувалось при реалізації на двох різних паралельних системах: з використанням двоядерного центрального процесора (Intel Core 2 Duo E8500, 3.16 ГГц) і відеокарти NVIDIA GeForce GTS 250 з графічним процесором NVIDIA G92b, який містить 128 потокових процесора і підтримує технологію CUDA. Результати експериментів наведені на рисунку 7.

Результати розрахунків на CPU та GPU

Рисунок 7 – Залежність часу розрахунку (мс) координат траєкторії від кількості суден при моделюванні на центральному та графічному процесорах

Як видно з графіку, при малій кількості суден використання CPU ефективніше, ніж використання GPU. GPU доцільно використовувати при 75 і більше кількості суден.

Висновки

На момент написання даного реферату в рамках проведених досліджень виконані:

Подальші дослідження планується спрямувати на такі аспекти:

При написанні даного реферату магістерська робота ще не завершена. Остаточне завершення: грудень 2013 року. Повний текст роботи та матеріали по темі можуть бути отримані у автора або його керівника після зазначеної дати.

Перелік посилань

  1. Анучин О.Н., Емельянцев Г.И. Интегрированные системы ориентации и навигации для морских подвижных объектов. СПб.: Электроприбор, 2003. – 390 с.
  2. Transportation Research Board [Электронный ресурс]. – Режим доступа: http://www.trb.org/Main/Home.aspx
  3. Кафедра прикладной механики и управления механико-математического факультета МГУ имени М.В. Ломоносова [Электронный ресурс]. – Режим доступа: http://www.damc.ru/
  4. Max Planck Institute for Dynamics of Complex Technical Systems [Электронный ресурс]. – Режим доступа: http://www.mpi-magdeburg.mpg.de/
  5. Bittner R., Driescher A., Gilles E.D. Entwurf einer Vorsteuerung zur hochgenauen Bahnführung von Binnenschiffen. 3. Wismarer Automatisierungssymposium, September 2002. ss. 4-11
  6. Professor Thor I. Fossen [Электронный ресурс]. – Режим доступа: http://www.itk.ntnu.no/ansatte/Fossen_Thor/
  7. Marine Systems Simulator [Электронный ресурс]. – Режим доступа: http://www.marinecontrol.org/index.html
  8. Кафедра Электронные Комплексы Судовождения [Электронный ресурс]. – Режим доступа: http://nav-eks.org.ua/
  9. Вагущенко Л.Л. Судовые навигационно-информационные системы. – Одесса, Латстар, 2004. – 302 с.
  10. Аноприенко А.Я., Кривошеев С.В. Разработка подсистемы моделирования движения судна по заданной траектории // Научные труды Донецкого национального технического университета. Выпуск 12. Серия «Вычислительная техника и автоматизация». – Донецк, ДонГТУ, ООО «Лебедь», 1999. С. 197-202. http://ea.donntu.ru:8080/jspui/bitstream/123456789/3462/1/1999-anopriyenko-krivosheeev-ship-simulation.pdf
  11. Аноприенко А.Я., Кривошеев С.В. Моделирование динамики речного судна на базе системы Matlab/Simulink // «Прогрессивные технологии и системы машиностроения»: Международный сборник научных трудов. – Донецк: ДонГТУ, 2000. Вып. 9. С. 13-20. http://ea.donntu.ru:8080/jspui/bitstream/123456789/3692/1/2000-anopriyenko-krivosheeev-ship-simulation.pdf
  12. Кривошеев С.В. Исследование эффективности параллельных архитектур вычислительных систем для расчета параметров движения транспортного средства // Научные труды Донецкого национального технического университета. Выпуск № 1(10)-2(11). Серия «Проблемы моделирования и автоматизации проектирования». – Донецк, ДонНТУ, 2012. С. 207-214. http://ea.donntu.ru:8080/jspui/bitstream/123456789/17309/1/12ksvotv.pdf
  13. Аноприенко А.Я., Кривошеев С.В., Потапенко В.А. Моделирование процесса обработки информации в интегрированной навигационной системе // Тези доповідей міждержавної науково-методичної конференції "Комп'ютерне моделювання" 30 червня – 2 липня 1999 р., м. Дніпродзержинськ. – Дніпродзержинськ. – 1999. С. 114-115. http://ea.donntu.ru:8080/jspui/bitstream/123456789/3694/1/1999-06-30-anopriyenko-krivosheeev-potapenko-ins-simulation.pdf
  14. Святный В.А., Аноприенко А.Я., Кривошеев С.В., Потапенко В.А. Имитация радиолокационной информации в интегрированной навигационной системе //Сборник трудов VI международной научно-технической конференции «Машиностроение и техносфера на рубеже XXI века» 13-18 сентября 1999 г. В г. Севастополе. – Том 3. – Донецк. – 1999, с. 12-15. http://ea.donntu.ru:8080/jspui/bitstream/123456789/3693/1/1999-09-15-svjatnyj-anopriyenko-krivosheeev-radiolocation-information.pdf
  15. Кондратенко А.В. Моделирование алгоритмов определения координат в модуле отображения систем логистики [Электронный ресурс]. – Режим доступа: http://masters.donntu.ru/2011/fknt/kondratenko/diss/index.htm
  16. Гапечкин А.И. Анализ поведения подвижного объекта в замкнутом пространстве [Электронный ресурс]. – Режим доступа: http://masters.donntu.ru/2011/fknt/gapechkin/diss/index.htm
  17. Паршин А.Н. Вычисление координат подвижного объекта [Электронный ресурс]. – Режим доступа: http://masters.donntu.ru/2010/fknt/parshin/diss/index.htm
  18. Порицкий А.В. Алгоритмы генерации траектории движения подвижного объекта [Электронный ресурс]. – Режим доступа: http://masters.donntu.ru/2010/fknt/poritskiy/diss/index.htm
  19. Классификация архитектур по параллельной обработке данных [Электронный ресурс]. – Режим доступа: http://www.csa.ru/analitik/distant/q_4.html
  20. Multi-core processor [Электронный ресурс]. – Режим доступа: http://en.wikipedia.org/wiki/Multi-core_processor
  21. Казеннов А. М. Основы технологии CUDA // Компьютерные исследования и моделирование Т. 2 № 3. – 2010. – c. 295-308.
  22. Linux. Кластер. Практическое руководство по параллельным вычислениям [Электронный ресурс]. – Режим доступа: http://cluster.linux-ekb.info/
  23. The OpenMP API specification for parallel programming [Электронный ресурс]. – Режим доступа: http://openmp.org/wp/
  24. CUDA Parallel Computing Platform [Электронный ресурс]. – Режим доступа: http://www.nvidia.com/object/cuda_home_new.html
  25. Message Passing Interface Forum [Электронный ресурс]. – Режим доступа: http://www.mpi-forum.org/
  26. Ходкость и управляемость судов. Под ред. В.Г. Павленко. М.: Транспорт, 1991. – 396 с.