Анализ и оптимизация на софтуерни приложения

Размер: px
Започни от страница:

Download "Анализ и оптимизация на софтуерни приложения"

Препис

1 Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев

2 Съдържание 1. Какво е паралелизация? 2. Примери 3. Паралелни алгоритми 4. Синхронизация. Критични секции 5. Проблеми при паралелните алгоритми 6. Решения. Алгоритми без заключване 2/19

3 Какво е паралелизация? (parallelization) е процес на преобразуване на програма изпълняваща стъпките на алгоритмите си последователно в програма изпълняваща ги (там където е възможно) паралелно/едновременно Паралелното изпълнение може да е с използването на SIMD инструкции (векторизация), много нишки, много процеси, много компютри Обикновено се използва повече от едно ядро/процесор 3/19

4 Какво е паралелизация? A B A B 4/19

5 Защо? Преди (70-те години на миналия век) Intel 8086 Сега (2015 г.) GPGPU: Intel Xeon Phi / nvidia Tesla Intel i7 Процесор Datacenters 5/19

6 Как се използва PThreads Threading Building Blocks (TBB) Cilk++ OpenMP OpenCL, CUDA... 6/19

7 Пример 1 int fib(int n) { if (n < 2) return n; Указание за компилатора int n1, n2; #pragma omp task shared(n1) n1 = fib(n - 1); #pragma omp task shared(n2) n2 = fib(n - 2); #pragma omp taskwait return n1 + n2; } Ако компилатора не поддържа автоматична паралелизация (OpenMP), то програмата се компилира както до сега 7/19

8 Пример анализ fib(4) fib(3) fib(2) fib(2) fib(1) fib(1) fib(0) 8/19

9 Важни характеристики TP Времето за изпълнение на P процесора Времето за изпълнение на алгоритъма на повече от един процесор може да съвпада с това за изпълнението на повече процесори, ако алгоритъма не е паралелизиран T Време за изпълнение на т.н. критичен път Може да смятаме че критичния път е възможно най-бавния възможен път за изпълнение на алгоритъма. Това време се нарича още период (span) T1 Време за изпълнение на 1 процесор Без паралелни изпълнения, независимо дали програмата е паралелизирана или не. Това време се нарича още работа (work) TP T1/P TP T 9/19

10 Времена на паралелен алгоритъм A B T1(A B) = T1(A) + T1(B) T (A B) = T (A) + T (B) 10/19

11 Времена на паралелен алгоритъм A B T1(A B) = T1(A) + T1(B) T (A B) = max(t (A), T (B)) 11/19

12 Фактор на ускорение Фактор на ускорение на P процесора се нарича T1 / TP Линейно при T1/TP = k*p Перфектно линейно при T1/TP = P Супер линейно при T1/TP > P Невъзможно? На практика е възможно поради наличие на Кеш паметта и други фактори... 12/19

13 Паралелизъм Коефициент на паралелизъм се нарича T1 / T За fib(4) имаме Паралелизъм 17/8 = Използването на повече от 2 процесора няма да даде съществено подобрение За умножение на матрици 1000x1000 имаме Паралелизъм 106 В зависимост от реализацията паралелизма може да достигне и 10 7 За един нормален RayTracer (при сцена 1000х1000 пиксела) имаме Паралелизъм 106 Много груба оценка и то за не рекурсивен RayTracer. На практика може да е и много по-голяма 13/19

14 Пример 2 Може да възникне проблем при паралелно изпълнение void add(hashtable table, value v) { int h = hash(v.key); v.next = table[h].next; table[h].next = &v; } h1 = hash(x.key); x.next = table[h1].next; h2 = hash(y.key); y.next = table[h2].next; table[h1].next = &x; table[h2].next = &y; Какъв е проблемът тук? 14/19

15 Пример 2 използване на критична секция Критична секция void add(hashtable table, value v) { int h = hash(v.key); mutex m; m.lock(); v.next = table[h].next; table[h].next = &v; m.unlock(); } h1 = hash(x.key); m.lock(); x.next = table[h1].next; table[h1].next = &x; m.unlock(); h2 = hash(y.key); m.lock(); y.next = table[h2].next; table[h2].next = &y; m.unlock(); Няма проблем при h1=h2, обаче... Какъв е проблема при тази реализация на критичната секция? 15/19

16 Пример 2 по-добро използване на к.с. void add(hashtable table, value v) { int h = hash(v.key); table[h].mutex.lock(); v.next = table[h].next; table[h].next = &v; table[h].mutex.unlock(); } h1 = hash(x.key); table[h1].mutex.lock(); x.next = table[h1].next; table[h1].next = &x; table[h1].mutex.unlock(); h2 = hash(y.key); table[h2].mutex.lock(); y.next = table[h2].next; table[h2].next = &y; table[h2].mutex.unlock(); Така е по-добре, защото няма заключване при h1 h2 16/19

17 Извод Внимателно с критичните секции! 17/19

18 Други опасности и проблеми Мъртва хватка (deadlock) Два или повече процеси взаимно се изчакват за достъп до общи ресурси, като всички попадат в изчакващо състояние Жива хватка (livelock) Два или повече процеси взаимно се изчакват за достъп до общи ресурси, като за разлика от мъртвата хватка те не са в изчакващо състояние, а активно се опитват да получат ресурсите без да извършват никаква друга полезна работа Конвоиране (convoying) За разлика от мъртвата хватка процесите не се блокират и работят, но непрекъснато се изчакват един друг, като въпреки че вършат и полезна работа, то тя е много малко, което води до драстично падане на производителността. Например може да се получи, че процесите чакат един от тях, а той изчаква нов квант време за да продължи работата си Съперничество (contention) Проблеми с общността на заключването: Ред вместо таблица, клетка вместо ред... Допълнително време (overhead) Понякога времето за изпълнение на организационните дейности по паралелизация, критични секции и други е прекалено много в сравнение с алгоритъма Трудни за отриване и отстраняване на грешки 18/19

19 Решения Използване на свободни от заключване структури Използване на високо паралелни алгоритми Transactional memory Read-Copy-Update (RCU) Map-Reduce алгоритми И много други... 19/19

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание 1. Какво е векторизация? 2. Примери 3. на цикли 4. Масиви от структури или структури от масиви 5. на при различни

Подробно

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание 1. Производителност 2. Оптимизация 3. Методи за оптимизация 2/18 Защо производителността е важна? Дава възможност

Подробно

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание Конвейерно изпълнение Проблеми при конвейерното изпълнение Структурни опасности Даннови опасности Контролни опасности

Подробно

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание Конвейерно изпълнение Проблеми при конвейерното изпълнение Структурни опасности Даннови опасности Контролни опасности

Подробно

Lush Green

Lush Green Класове Какво са класовете? Основен инструмент на ООП Средство за дефиниране на абстрактни типове данни Синтактична конструкция, която позволява логическо групиране на данни и операциите над тях Дефиниция

Подробно

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев (от гледна точка на производителността) Съдържание 1. Видове транслатори 2.Фази по време на компилация 3. Оптимизационна фаза

Подробно

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор Структура на програма в C Част 7 - масиви, оператор за индексиране, sizeof оператор Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София

Подробно

Структура на програма в C - Част 2 - типове, функции

Структура на програма в C - Част 2 - типове, функции Структура на програма в C Част 2 - типове, функции Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 10 март 2019 г. И. Георгиев, Х.

Подробно

C++

C++ Управляващи оператори в C++ Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 18 30 октомври 2018 г. Трифон Трифонов (УП 18/19) Управляващи оператори в C++ 18 30 октомври

Подробно

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Какво могат и какво не могат компилаторите Съдържание 1. Оптимизационен континуум 2. Някои известни видове оптимизации 2/49 Оптимизационен

Подробно

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision :

Подробно

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.3 16 ноември 2004 г. Пример:

Подробно

ПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА

ПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА СРЕДИ ЗА ПРОГРАМИРАНЕ ПРОГРАМНО ОСИГУРЯВАНЕ НА КОМПЮТЪРА Същност на програмното осигуряване За да могат компютрите да разбират описаните на езика за програмиране алгоритми, те трябва да бъдат преведени

Подробно

Виртуални функции

Виртуални функции Виртуални функции Статично свързване Как компилаторът избира кой метод или коя функция да бъде извикана? Прави се сравнение между формални и фактически параметри и се избира най-точното съвпадение в случай,

Подробно

Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/

Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/ Синтаксис за дефиниране на функции Трифон Трифонов Функционално програмиране, спец. Информатика, 2015/16 г. 6 януари 2016 г. Трифон Трифонов (ФП-И 15/16) Синтаксис за дефиниране на функции 6 януари 2016

Подробно

Машинно обучение - въведение

Машинно обучение - въведение Линейна регресия с една променлива Доц. д-р Ивайло Пенев Кат. Компютърни науки и технологии Пример 1 Данни за цени на къщи Площ (x) Означения: Цена в $ (y) 2104 460 000 1416 232 000 1534 315 000 852 178

Подробно

Програмиране на Паскал

Програмиране на Паскал Поради връзката на С++ с езика С в голяма част от литературата е прието записването С/С++. Това е найизползваният език за програмиране в света, поради което синтаксисът на някои от по-новите езици като

Подробно

Lush Green

Lush Green Конструктори Жизнен цикъл на обект За обекта се заделя памет и се свързва с неговото име Извиква се подходящ конструктор на обекта... (достъп до компоненти на обект, изпълняване на операции) Достига се

Подробно

Линейна алгебра 7. Умножение на матрици. Обратими матрици. Матрични уравнения специалности: Математика, Бизнес математика, Приложна математика, I курс

Линейна алгебра 7. Умножение на матрици. Обратими матрици. Матрични уравнения специалности: Математика, Бизнес математика, Приложна математика, I курс . Обратими матрици. Матрични уравнения специалности: Математика, Бизнес математика, Приложна математика, I курс лектор: Марта Теофилова Кратка история Матричното умножение е въведено от немския математик

Подробно

Slide 1

Slide 1 Методи и алгоритми за моделиране, симулация и оптимизация на полупроводникови сензори Венцеслав Шопов E-mail: vkshopov@yahoo.com BG051PO001-3.3.06-0002 Цел на дисертационния труд е да се създаде софтуерна

Подробно

Компютърна Графика и Презентации - Алгоритми за Визуализация

Компютърна Графика и Презентации - Алгоритми за Визуализация Компютърна Графика и Презентации Алгоритми за Визуализация гл. ас. д-р А. Пенев Визуализация Построяване на изображение съответстващо на модел. Операция по преобразуване на представяне на двумерни/тримерни

Подробно

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23

Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели. Маисиви, указатели, параметри на функции Калин Георгиев 21 декември 2016 г. Калин Георгиев Увод в програмирането 21 декември 2016 г. 1 / 23 Указатели! Калин Георгиев Увод в програмирането 21

Подробно

Споделяне на анонимни данни с Lenovo Съдържание Споделяне на анонимни данни с Lenovo... 1 Harmony... 1 Lenovo Companion Lenovo Customer Engag

Споделяне на анонимни данни с Lenovo Съдържание Споделяне на анонимни данни с Lenovo... 1 Harmony... 1 Lenovo Companion Lenovo Customer Engag Споделяне на анонимни данни с Lenovo Съдържание Споделяне на анонимни данни с Lenovo... 1 Harmony... 1 Lenovo Companion 3.0... 2 Lenovo Customer Engagement Service... 3 Lenovo Experience Improvement (само

Подробно

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23 f «data; f» data; Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 2 / 23 Първо изискване:

Подробно

Системи за управление на версии - Работа с git

Системи за управление на версии - Работа с git Системи за управление на версии Работа с git Иван Георгиев, Христо Иванов, Христо Стефанов Tехнологическо училище "Електронни системи", Технически университет, София 28 февруари 2019 г. И. Георгиев, Х.

Подробно

Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари

Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари 2017 г. Трифон Трифонов (УП 16/17) Рекурсия 21.12.16

Подробно

Проф

Проф Утвърдил:.. / доц. д-р Е. Великова / Утвърден от Факултетен съвет с протокол... /... СОФИЙСКИ УНИВЕРСИТЕТ СВ. КЛИМЕНТ ОХРИДСКИ Факултет по Математика и Информатика Специалност: Компютърни науки М И К 0

Подробно

Софийски университет Св. Климент Охридски Факултет по математика и информатика Курсов проект по Системи за паралелна обработка Тема: Изобразяване на ф

Софийски университет Св. Климент Охридски Факултет по математика и информатика Курсов проект по Системи за паралелна обработка Тема: Изобразяване на ф Софийски университет Св. Климент Охридски Факултет по математика и информатика Курсов проект по Системи за паралелна обработка Тема: Изобразяване на фрактал Mandelbrot set Изготвил: Елена Валентинова Георгиева,

Подробно

СТАНОВИЩЕ

СТАНОВИЩЕ РЕЦЕНЗИЯ върху дисертационeн труд за получаване на образователната и научна степен доктор, Автор: маг.инж. Ивайло Пламенов Пенев Тема: ПОДХОД ЗА ПЛАНИРАНЕ И ИЗПЪЛНЕНИЕ НА ПАРАЛЕЛНИ ЗАДАЧИ В РАЗПРЕДЕЛЕНА

Подробно

Структура на програма в C - Част 6 - goto, switch, break и continue клаузи

Структура на програма в C - Част 6 - goto, switch, break и continue клаузи Структура на програма в C Част 6 - goto, switch, break и continue клаузи Иван Георгиев, Христо Иванов, Христо Стефанов Технологично училище "Електронни системи", Технически университет, София 21 април

Подробно

10. Линейни оптимизационни модели – обща постановка

10. Линейни оптимизационни модели – обща постановка 0. Линейни оптимизационни модели обща постановка Пример Разполагате с 26 бр. самолети от тип А и 5 бр. самолети от тип В. Задачата е да се пренесе възможно по-голямо количество от разполагаем товар, при

Подробно

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Трифон Трифонов (УП 16/17) Динамична памет 21 декември

Подробно

Компютърна Графика и Презентации - Графично моделиране

Компютърна Графика и Презентации - Графично моделиране Компютърна Графика и Презентации Графично Моделиране. Генеративна Компютърна Графика гл. ас. д-р А. Пенев Генеративната КГ се занимава с: Построяване на обекти (модели); Генерация на изображение; Преобразуване

Подробно

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София lchorbadjiev@elsys-bg.org Revision : 1.1 9 март 2005 г. template< class

Подробно

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет 2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнението представя кратко въведение в теорията на лексическия

Подробно

Microsoft Word - VypBIOL-08-ZZ-Energiata.doc

Microsoft Word - VypBIOL-08-ZZ-Energiata.doc ВЪПРОС 8 ЗАКОН ЗА ЗАПАЗВАНЕ НА МЕХАНИЧНАТА ЕНЕРГИЯ Във въпроса Закон за запазване на механичната енергия вие ще се запознаете със следните величини, понятия и закони, както и с основните единици за измерване:

Подробно

Black and White

Black and White Advanced C++ Memory Management Йордан Димитър Зайков Трендафилов Memory Management Effective C++ 2 nd ed: 3, 5, 7, 8, 9, 10 More Effective C++: 1, 3, 8 Exceptional C++: 35, 36 Какво всъщност прави new?

Подробно

4

4 Наследяване и 4 Трифон Трифонов Обектно-ориентирано програмиране, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 11 май 2017 г. Трифон Трифонов (ООП 16/17) Наследяване и голямата

Подробно

I

I . Числено решаване на уравнения - метод на Нютон. СЛАУ - метод на проста итерация. Приближено решаване на нелинейни уравнения Метод на допирателните (Метод на Нютон) Това е метод за приближено решаване

Подробно

doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н

doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката на механични кукли, датиращи от древни времена. Движенията

Подробно

Анализ и оптимизация на софтуерни приложения

Анализ и оптимизация на софтуерни приложения Анализ и оптимизация на софтуерни приложения Александър Пенев Васил Василев Съдържание Фон Нойманова архитектура История на оперативна памет Архитектура на DRAM Памет на много нива Кеш памети Кеш с директна

Подробно