argon bulletin board

Факултети => Факултет по математика и информатика => Темата е започната от: А.Пенев в 22.12.2011, 15:14:55

Титла: Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 22.12.2011, 15:14:55
През втория триместър тази година за спец. Инфоматика ще бъде обявена и ще се проведе (при наличие на желаещи) следната факултативна дисциплина:

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

С развитието на съвременните процесори и хардуерни архитектури възниква съществен проблем при разработката на софуерните приложения: те не могат да се възползват максимално добре от новостите. Много често се оказва, че на пръв поглед добре реализирана програма използва само малка част от възможностите на хардуерните компоненти. Това се дължи на различни взаймосвързани фактори като: реализирания проблем, дизайна, алгоритмите и данните, качеството на реализация, компилатора и библиотеките, наличния хардуер, набора инструкции, микроархитектурата на ЦП и реализацията на интегралните схеми. Много често се обръща внимание само на първите няколко фактора, а това не е достатъчно, защото те зависят от останалите.

Съвременните изчислителни платформи предоставят огромни възможности за извършване на изчисления. На практика, обаче, постигането на добра производителност изисква сериозно разбиране на всички слоеве на целевата платформа, подробно осъзнаване на изчисленията, изобретателност и находчивост. Наградата от овладяването на тази сложен процес е в постигането на производителност в пъти повече и почти невъзможна в стандартната практика.

Основната цел на курса е да направи въведение в областта на анализ и оптимизация на производителността на софтуерни приложения, да предложи възможни практически съвети за решаване или минимизиране на проблемите при използването на наличния хардуер. Студентите ще получат теоритични и практически познания в областта и ще се запознаят със съвременни инструменти за анализ като Intel VTune Amplifier и AMD CodeAnalyst.

гл.ас. А. Пенев, В. Василев
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: Veska Noncheva в 25.12.2011, 09:54:48
А кои параметри на едно софтуерно приложение могат да бъдат измерени?

Какви математически методи за анализ на данни и оптимизация могат да се използват?
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 27.12.2011, 18:55:01
Обикновено се мерят параметри не на приложение като цяло, а на някои негови специфични части подлежащи на лесна промяна (която ще цели подобряване на параметрите). Например това обикновено са всички (или само предварително набелязани) функции, методи, модули. Параметрите които обикновено ни интересуват са най-често: Време на изпълнение (сумарно), Брой изплнения, Използвана памет за данни, Брой "неуспешни" четения от кеша на процесора (cache misses) и др.
Искам само да обърна внимание, че кои параметри мерим зависи от целта ни т.е. какво ще оптимизираме. Най-често целим подобряване на бързодействието на програмата като цяло или на някой нейни части: модули, класове, методи и т.н.

На този етап на развитие на областта на оптимизация на софтуерни приложения не се използват много от математическите методи за анализ на дани (а би трябвало). В момента стандартния подход е: 1. Измерваме съответен параметър/параметри (например времената на изпълнение на методите); 2. Сортираме методите по получените времена и получаваме един списък, в който най-времеотнемащите методи са малък брой; 3. За всеки от тези методи прилгаме основно "ръчни" методи на оптимизация т.е. преработваме кода на метода така, както смятаме че той ще е по-добър (за съжаление това в повечето случаи е "на шесто чувство" :-) ); 4. Изпълняваме програмата отново и виждаме дали сме постигнали подобрение по отношение на измерваните параметри; 5. Ако не сме постигнали целта си отиваме на 1.

Само две неща още:
1. Обикновено програмата не е от типа: "Четат се някакви данни, прави някакви сметки и изписваме резултатите". Софтуера обикновено е интерактивен, може и да не се изпълнят всички негови функции при едно стартиране и т.н. Затова при една голяма система е добре да имаме тестови случаи/данни, с които да можем автоматизирано да изпълним всички части от системата, да се изпълнят с много и разнообразни данни и т.н. Това дава гаранция че: Ще сравняваме измерваните параметри за всички части от системата; Няма да бъдем заблудени и да развалим някой добре работещ метод поради недобре подбрани данни; Ще имаме повторимост на тестовете на параметрите преди и след промяната/оптимизацията.
2. В съвременните компилатори има набор от автоматични методи за оптимизция т.н. Profile-based optimizations (PBO). Те използват автоматично събраните данни за изпълнението, но това за сега има ограничена мощ. Все пак анализа на тези данните не може да реши да промени коренно алгоритъма, както би могъл програмиста да направи.
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: ShitHappen в 31.12.2011, 01:03:37
Здравейте,

Как се заявява желание за участие?

Поздрави,
Венелин
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 31.12.2011, 02:13:22
Засега може да пишете тук: Име, курс, факултетен номер.
На първото занятие ще направим офицялен списък, за да може курса да ви бъде вписан заедно с другите избираеми дисциплини (Напомням: Факултативните курсове не се броят и не заменят спец. курсовете т.е. те са допълнителни).
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: Михаил Петров в 31.12.2011, 17:34:22
Въпрос:
Кога ще се проведе въросната дисциплина и от колко часа, защото съм се записал и на друга факултативна в Събота от 9:00  и искам да знам дали мога да ги комбинирам.
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 02.01.2012, 16:14:35
Още не сме определили време и място. Очаквам всеки желаещ да каже кога желае да се проведа факултативната дисциплина. Възможностите не са много. Събота и/или неделя (опцитята през седмицата например в петък не е много реална поради многото задължителни спецкурсове в този ден). Също поради някои причини може би ще се наложи няколко занятия да бъдат взети по-интензивно (например някоя от седмиците може да се кара и в събота и в неделя по 4 часа или събота или неделя по повече от 4 часа). Тези подробности ще бъдат уточнени когато започнем курса, както и когато станат ясни заетостите на залите.
Целта ни ще бъде да угодим на всички ентусиасти, но разбира се това рядко е възможно.  :-)
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: radko87 в 04.01.2012, 08:29:38
Дали ще е възможно, да качвате  материалите от курса някъде след всяко занятие?

На мен лично ми звучи доста интересно заглавието както и описанието и определено бих инвестирал  малко свободно време за да ги прегледам.
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 06.01.2012, 11:26:02
Да, по принцип ще има специализирана страница, където ще качваме материали. Основно това ще са презентациите от лекциите. Всеки който се интересува може да ги гледа. Въпреки това аз препоръчвам и присъствие на занятията, защото ще има много обяснения и практически примери и упражнения.
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: Михаил Петров в 06.01.2012, 17:16:50
Понеже триместъра чука на вратата може ли да се каже кога ще се напарви първата среща организационна или реална.
Щом дисциплината ще се провежда в събота, както сочи желанието на анкетата може да се направи в някой кабинет от 13:00ч

Всичко разбирасе зависи от организацията.тоест може да се посочи във форума или да се разлепи изи факултета, решението е ваше.
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 06.01.2012, 17:45:14
Мисля че от понеделник, като започне семестъра ще станат ясни доста неща. Информация ще се разлепи във ФМИ и ще се обяви и тук във форума.
За сега се очертава първата встъпителна лекция/упражнение/занятие/среща да бъде на 14.01.2012 (събота) след обяд (13:00 или 13:30 ще уточним до няколко дена). Доколкото разбрах и проблема със залите е голям в събота и неделя заради магистрите и други дисциплини, но в събота след обяд има шанс да се намери зала. За това обаче ще пиша най-късно до сряда, като уточним всичко с учебен отдел. Обявата предполагам ще бъде лепната преди това за да може повече хора да научат (разбира се хората от форума вече знаят :-) но може да се появят още желаещи).
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 08.01.2012, 15:48:37
Записване: на 14.01.2012 г. (събота) от 13:00 ч. в 431 к. з.
Провеждане: Лекциите ще се провеждат всяка събота от 14.01.2012 г. от 13:00 ч. в 431 к.з.

http://fmi-plovdiv.org/news.jsp?ln=1&newsId=464&newsPageNumber=1
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 13.01.2012, 17:50:30
Промяна на залата за записване: на 14.01.2012 г. (събота) от 13:00 ч. в 546 к. з.
Много е вероятно дисциплината да бъде призната за спецкурс.
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: Светослав Енков в 13.01.2012, 19:26:36
Да, интересна и полезна тематика е - дано се признае за спецкурс или избираема.
Титла: Re:Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"
Публикувано от: А.Пенев в 18.01.2012, 21:32:04
Качени са материалите от първото занятие: тук (http://www.alexander-penev.info/bg/%D1%81%D1%8A%D0%B4%D1%8A%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5/2011-2012-%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%B8-%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BD%D0%B0-%D1%81%D0%BE%D1%84%D1%82%D1%83%D0%B5%D1%80%D0%BD%D0%B8-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D1%84%D0%B0%D0%BA%D1%83%D0%BB%D1%82%D0%B0%D1%82%D0%B8%D0%B2%D0%B5%D0%BD-%D0%BA%D1%83%D1%80%D1%81)