ception є метод Handle, який дозволяє обробити всі включені в нього винятки.
OpenMP не надає коштів для зовнішніх обробок винятків. Однак, всередині паралельних регіонів є можливість використовувати механізм винятків. При цьому на даний механізм накладаються жорсткі обмеження. Усі винятки не повинні покидати паралельний регіон, який формується директивами for і section. Тобто, всі винятки повинні бути оброблені саме в паралельному регіоні. При виході виключення за паралельний регіон може відбутися збій програми. Якщо ж є необхідність у зовнішній передачі повідомлення про помилку, то для цього слід застосовувати інші механізми.
Іншим не менш важливим механізмом є планування обчислень. Під плануванням в нашому випадку можна уявити процес розподілу завдань і потоків. Так, распараллелівая цикл, його ітерації можна об'єднати в групи і задати виконання кожної групи ітерацій певного потоку.
У розглянутих інструментаріях присутній механізм планування, проте його реалізації відрізняються.
У TPL планування і розподіл обчислень по потокам здійснюється автоматично. Варто відзначити той факт, що програміст не може явно вплинути на цей процес.
У OpenMP існує кілька стратегій планування:
· Static - групове розподіл обчислень. Є можливість явно вказати розмір групи. Групи розподіляються по нитках від нульової і до останньої, потім процес повторюється знову ж починаючи з нульовою нитки.
· Dynamic - динамічний розподіл обчислень з певним розміром групи.
· Guided - динамічний розподіл обчислень, при цьому розмір групи обчислень поступово зменшується до деякої заданої величини прямо пропорційно кількості нерозподілених обчислень і назад пропорційно кількості ниток.
· Auto - стратегія розподілу встановлюється компілятором або під час виконання.
· Runtime - стратегія розподілу встановлюється під час виконання програми.
Далі варто розглянути можливості для управління циклом. При використанні звичайних циклів надаються два способи для управління ітераціями - пропуск ітерації і переривання циклу. Для цих цілей визначені такі ключові слова як continue і break.
Для паралельних циклів пропуск ітерації не є суттєвим, тому реалізації оператора continue не передбачено.
У TPL можливості для управління ітераціями циклу реалізовані в класі ParallelLoopState. Для об'єктів цього класу визначені два методи - Break і Stop.
Метод Break дозволяє перервати виконання циклу для всіх ітерацій після поточної. При цьому, якщо в якийсь момент часу в одній з ітерацій викликаний даний метод, то всі запущені ітерації продовжать свою роботу, а далі будуть виконані тільки ітерації з меншим номером.
Метод Stop явно вказує на те, що в циклі повинні бути завершені виконувані ітерації, а що залишилися ітерації не повинні бути запущени.не надає явних механізмів для управління ітераціями. При цьому використання стандартних операторів завершення циклу забороняється.
Так само варто розглянути обидва інструментарію з точки зору можливості установки додаткових параметрів. У OpenMP присутні методи для явного завдання кількості ниток, породжуваних в паралельних регіонах. У TPL така можливість відсутня.
Нижче в таблиці наведено короткий порівняння інструментаріїв по вищеперелічених критеріях.
Обробка ісключеній.Планірованіе.Управленіе ціклом.Установка параметров.OpenMPТолько всередині паралельної областіАвтоматіческі і вручнуюЗапрещеноПоддержівается.Net TPLПрісутствует АвтоматіческіПоддержіваетсяОтсутствует
. 3 Лінійна алгебра та паралельні обчислення
Лінійна алгебра являє собою розділ математики, який досліджує вектори, лінійні і векторні простори, лінійні системи рівнянь і лінійні відображення. Як дисципліна лінійна алгебра є важливим розділом математики, оскільки векторні простори широко зустрічаються в програмуванні. Лінійна алгебра добре підходить для перевірки ефективності розпаралелювання систем при великих значеннях n, а так само досить легко распараллеливается.
У даній дипломній роботі ми розглянемо основні операції над матрицями та їх визначниками:
· Множення матриць;
· Піднесення до степеня;
· Рішення систем;
· Рішення систем з n правими частинами;
· Детермінант матриць;
· Робота зі слабко заповненими матрицями.
Далі ми розглянемо поставлені завдання.
. 3.1 Множення ма...