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

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

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

Препис

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

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

3 Какво е векторизация? (vectorization) е процес на преобразуване на програма изпълняваща една операция за всеки такт от време (в една нишка) към програма изпълняваща няколко операции едновременно в един такт (в една нишка) та е частен случай на паралелизацията Обикновено се използват SIMD инструкциите на съвременните процесори (MMX, SSE, AVX, AltiVec, NEON,...) 3/12

4 Как се прилага Ръчно Ръчно с използване на intrinsic функции Автоматично от компилатора Обикновено компилатора трябва да бъде подпомогнат от нас Автоматично от процесора Като част от скаларните и супер-скаларните архитектури 4/12

5 Пример 1 for (i = 0; i < 1024; i++) C[i] = A[i] + B[i]; на цикли for (i = 0; i < 1024; i+=4) (C[i], C[i+1], C[i+2], C[i+3]) = (A[i], A[i+1], A[i+2], A[i+3]) + (B[i], B[i+1], B[i+2], B[i+3]); псевдокод Частично развиване на цикъл. Може ли границите на цикъла да не са кратни на 4? 5/12

6 Пример 2 for (i = 0; i < MAX; i++) C[i].x = A[i].x + B[i].x; C[i].y = A[i].y + B[i].y; C[i].z = A[i].z + B[i].z; в блок for (i = 0; i < MAX; i++) (C[i].x, C[i].y, C[i].z) = (A[i].x, A[i].y, A[i].z) + (B[i].x, B[i].y, B[i].z); псевдокод Ако дължината на вектора е 4, то в примера има проблем с непълното използване на SIMD възможностите 6/12

7 Пример 3 for (i = 0; i < 1024; i++) if (A[i] > 0) C[i] = B[i]; else D[i] = D[i-1]; на разклонени алгоритми for (i = 0; i < 1024; i++) P = A[i] > 0; NP =!P; C[i] = B[i]; (P) // изпълнява се само ако P е истина D[i] = D[i-1]; (NP) // изпълнява се само ако NP е истина псевдокод for (i = 0; i < 1024; i+=4) vp = (A[i], A[i+1], A[i+2], A[i+3]) > (0, 0, 0, 0); vnp =!vp; // векторно т.е. покомпонентно отрицание (C[i], C[i+1], C[i+2], C[i+3]) = vsel(vp, (B[i], B[i+1], B[i+2], B[i+3]), (C[i], C[i+1], C[i+2], C[i+3])); if (vnp[4]) D[i+3] = D[i+2]; if (vnp[3]) D[i+2] = D[i+1]; if (vnp[2]) D[i+1] = D[i]; if (vnp[1]) D[i] = D[i-1]; 7/12 псевдокод

8 Пример 3 Векторна ф-я vsel(p, A, B) p 3 p 2 p 1 p 0 P???? a 3 a 2 a 1 a 0 A : : : : b 3 b 2 b 1 b 0 B p 3?a 3 :b 3 p 2?a 2 :b 2 p 1?a 1 :b 1 p 0?a 0 :b 0 8/12

9 на цикли общ случай Всеки цикъл се развива до определено ниво (зависи от границите т.е. дали са известни по време на компилация и колко са големи). Циклите се разделят на 4 части (или по-малко): Пред цикъл Операции независими от цикъла (инварианти). Обикновено се зареждат (инвариантни) данни във векторни регистри и други Цикъл (Цикли) Векторизирани вариант(и) на цикъла (циклите) След цикъл Получаване на резултати и допълнителна инварианта обработка Индукции, редукции и други Опашка на цикъл Реализация на невекторизиран вариант на цикъла за оставащите итерации, които по някакви причини не са попаднали в основния цикъл (например броя итерации не е кратен на големината на векторите или размера се определя в runtime) 9/12

10 Не всичко може да се векторизира for (i = 0; i < 3; i++) C[i] = A[i] + B[i]; OK. Цикълът може да бъде развит и/или векторизиран напълно for (i = 0; i < 1024; i++) C[i] = A[i] + B[i]; OK. Цикълът може да бъде векторизиран for (i = 0; i < 1024; i++) D[i] = E[i] - A[i-1]; A[i] = B[i] + C[i]; Не може! Използва се стойност преди да бъде пресметната 10/12

11 Масив от структури или няколко масива?? z i y i x i v1 struct float x, y, z; vec; vec[100] v1, v2; ? z i y i x i v2 for (i = 0; i < 100; i++) v1[i].x += v2[i].x; v1[i].y += v2[i].y; v1[i].z += v2[i].z; или x i+3 x i+2 x i+1 x i v1x float[100] v1x, v2x; float[100] v1y, v2y; float[100] v1z, v2z; x i+3 x i+2 x i+1 x i v2x for (i = 0; i < 100; i++) v1x[i] += v2x[i]; for (i = 0; i < 100; i++) v1y[i] += v2y[i]; for (i = 0; i < 100; i++) v1z[i] += v2z[i]; 11/12

12 Типове данни Ако типа е еднакъв Например 4 float числа се събират точно в един SSE регистър float float float float double double int32 int32 int32 int32 Ако типовете са различни Имаме загуба на производителност. Трябва да се внимава с Align на структурите За някои типове може да се налага разширяване до по-голям тип (float->double) float double int32 int32 short int32 12/12

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

C++

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

Подробно

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

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

Подробно

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

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

Подробно

Логаритмична регресия

Логаритмична регресия Логаритмична регресия Доц. д-р Ивайло Пенев Кат. Компютърни науки и технологии Функция на хипотезата h θ x = g θ T x = 1 1 + e θt x Функция на цената J θ = 1 σ m i=1 m Cost(h θ x i, y i ), където Cost(h

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Homework 2

Homework 2 Домашна работа 2 по Дизайн и анализ на алгоритми за специалност Компютърни науки, 2. курс, 1. поток СУ, ФМИ, летен семестър на 2017 / 2018 уч. г. СЪСТАВЯНЕ НА АЛГОРИТМИ Задача 1 2 3, а 3, б 3, в Общо получен

Подробно

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

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

Подробно

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

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г ноември 2018 г. Трифон Трифонов (УП 18/19) Ма Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 29 ноември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15 29 ноември 2018 г. 1 / 16 Масиви Логическо

Подробно

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1 Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 18/19) Масиви и низове 15.11-6.12.2018 г. 1 / 17 Масиви

Подробно

Microsoft PowerPoint - Ppt ppt [Read-Only]

Microsoft PowerPoint - Ppt ppt [Read-Only] ТЕХНИЧЕСКИ УНИВЕРСИТЕТ ВАРНА КАТЕДРА АВТОМАТИЗАЦИЯ НА ПРОИЗВОДСТВОТО ЦИФРОВИ СИСТЕМИ ЗА УПРАВЛЕНИЕ - ЧАСТ 2 Янко Янев ВИДОВЕ ТЕХНОЛОГИИ ЗА ИЗГРАЖДАНЕ НА ЦИФРОВИ СИСТЕМИ ЗА УПРАВЛЕНИЕ микропроцесори микроконтролери

Подробно

Проф

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

Подробно

Lush Green

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

Подробно

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

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

Подробно

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5 Литература Необходими програми Kernighan & Ritchie - The C Programming

Подробно

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

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

Подробно

Kontrolno 5, variant 1

Kontrolno 5, variant 1 N P - П Ъ Л Н И З А Д А Ч И КОНТРОЛНО 5 ПО ДИЗАЙН И АНАЛИЗ НА АЛГОРИТМИ СУ, ФМИ ( ЗА СПЕЦИАЛНОСТ КОМПЮТЪРНИ НАУКИ, 1. ПОТОК; 3 МАЙ 018 Г. ) Задача 1. Разглеждаме задачата за разпознаване LongestCycle:

Подробно

Slide 1

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

Подробно

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

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

Подробно

4

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

Подробно

Lush Green

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

Подробно

Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от п

Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от п Управление на перална машина с размита логика Пералните машини в наши дни са обикновен уред в дома. Най-голяма изгода, която потребителя получава от пералната машина е, че имат почистване, центрофугиране

Подробно

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн

Лабораторно упражнение 6 Тема: Оператори за цикли в езика C++. Реализиране на циклични алгоритми I. Цел на лабораторното упражнение Да се затвърдят зн Лабораторно упражние 6 Тема: Оператори за цикли в езика C++. Реализира на циклични алгоритми I. Цел на лабораторното упражние Да се затвърдят знанията на студентите за организацията и синтаксиса на програми

Подробно

Microsoft Word - Sem03+04sup_KH_VM2-11.doc

Microsoft Word - Sem03+04sup_KH_VM2-11.doc Връзка между символ на Кронекер (Conece delta i ) и символ на Леви Чивита (Levi-Civita symbol ε i ) Примери от векторния анализ Всички разглеждания се правят за случая на тримерно евклидово пространство

Подробно

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

компютърна Графика и Презентации - Виртуални машини Компютърна Графика и Презентации Виртуални машини: Дисплеен, Геометричен, Структурен, Семантичен и Диалогов процесори гл. ас. д-р А. Пенев Диалогов Диалогов Процесор Процесор Семантичен Семантичен Процесор

Подробно

Slide 1

Slide 1 Въведение в VHDL Паралелни оператори Паралелни оператори Паралелен оператор оператор, който се изпълнява едновременно с другите оператори от този тип. Process - Процес

Подробно

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

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

Подробно

Годишното тематично разпределение по Компютърно моделиране за 4. клас N седмица Тема очаквани резултати Методи бележки и коментари Първи учебен срок Т

Годишното тематично разпределение по Компютърно моделиране за 4. клас N седмица Тема очаквани резултати Методи бележки и коментари Първи учебен срок Т Годишното тематично разпределение по Компютърно моделиране за 4. клас N седмица Тема очаквани резултати Методи бележки и коментари Първи учебен срок Тема 1. Информация 1 1 Видове информация Познава начините

Подробно

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

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

Подробно

Маисви

Маисви МАСИВИ 1. Структурни типове данни Структура от данни - организирана информация, която може да бъде описана, създадена и обработена с помощта на програма. Скаларни типове данни: Целочислен int Реален double

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

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

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

Подробно

Информатика

Информатика ХИМИКОТЕХНОЛОГИЧЕН И МЕТАЛУРГИЧЕН УНИВЕРСИТЕТ - СОФИЯ ИНФОРМАТИКА част първа лектор: доц. д-р Атанас Атанасов Катедра Програмиране и използване на компютърни системи Лекция 3 ЛОГИЧЕСКИ ОСНОВИ НА КОМПЮТЪРНИТЕ

Подробно

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

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

Подробно

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц

В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операц В тази част, ще разгледаме аритметичните и логически операции, както, и включването им в изрази. В следващата таблица са дадени всички възможни операции в езикът C и С++. Символ Предназначение Аритметични

Подробно

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и

При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) и При изпълнението на програма се извършват определени действия над данните, дефинирани в програмата.тези данни могат да бъдат постоянни ( константи ) или изменящи се (променливи). Тези данни най-често бива

Подробно