argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: Нова факултативна дисциплина "Анализ и оптимизация на софтуерни приложения"  (Прочетена 2946 пъти)

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

През втория триместър тази година за спец. Инфоматика ще бъде обявена и ще се проведе (при наличие на желаещи) следната факултативна дисциплина:

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

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

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

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

гл.ас. А. Пенев, В. Василев
Активен
А.Пенев

Veska Noncheva

  • Неактивен Неактивен
  • Публикации: 45

А кои параметри на едно софтуерно приложение могат да бъдат измерени?

Какви математически методи за анализ на данни и оптимизация могат да се използват?
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

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

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

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

ShitHappen

  • Неактивен Неактивен
  • Публикации: 6

Здравейте,

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

Поздрави,
Венелин
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

Засега може да пишете тук: Име, курс, факултетен номер.
На първото занятие ще направим офицялен списък, за да може курса да ви бъде вписан заедно с другите избираеми дисциплини (Напомням: Факултативните курсове не се броят и не заменят спец. курсовете т.е. те са допълнителни).
« Последна редакция: 31.12.2011, 02:19:39 от А.Пенев »
Активен
А.Пенев

Михаил Петров

  • Неактивен Неактивен
  • Публикации: 18
  • информатика 1 курс редовно обучение

Въпрос:
Кога ще се проведе въросната дисциплина и от колко часа, защото съм се записал и на друга факултативна в Събота от 9:00  и искам да знам дали мога да ги комбинирам.
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

Още не сме определили време и място. Очаквам всеки желаещ да каже кога желае да се проведа факултативната дисциплина. Възможностите не са много. Събота и/или неделя (опцитята през седмицата например в петък не е много реална поради многото задължителни спецкурсове в този ден). Също поради някои причини може би ще се наложи няколко занятия да бъдат взети по-интензивно (например някоя от седмиците може да се кара и в събота и в неделя по 4 часа или събота или неделя по повече от 4 часа). Тези подробности ще бъдат уточнени когато започнем курса, както и когато станат ясни заетостите на залите.
Целта ни ще бъде да угодим на всички ентусиасти, но разбира се това рядко е възможно.  :-)
« Последна редакция: 02.01.2012, 16:25:58 от А.Пенев »
Активен
А.Пенев

radko87

  • Неактивен Неактивен
  • Публикации: 112
  • Stupid man :D

Дали ще е възможно, да качвате  материалите от курса някъде след всяко занятие?

На мен лично ми звучи доста интересно заглавието както и описанието и определено бих инвестирал  малко свободно време за да ги прегледам.
Активен
Sun Certified Java Programer/OCJP/ - От Sun спомен нема .....

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

Да, по принцип ще има специализирана страница, където ще качваме материали. Основно това ще са презентациите от лекциите. Всеки който се интересува може да ги гледа. Въпреки това аз препоръчвам и присъствие на занятията, защото ще има много обяснения и практически примери и упражнения.
Активен
А.Пенев

Михаил Петров

  • Неактивен Неактивен
  • Публикации: 18
  • информатика 1 курс редовно обучение

Понеже триместъра чука на вратата може ли да се каже кога ще се напарви първата среща организационна или реална.
Щом дисциплината ще се провежда в събота, както сочи желанието на анкетата може да се направи в някой кабинет от 13:00ч

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

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

Мисля че от понеделник, като започне семестъра ще станат ясни доста неща. Информация ще се разлепи във ФМИ и ще се обяви и тук във форума.
За сега се очертава първата встъпителна лекция/упражнение/занятие/среща да бъде на 14.01.2012 (събота) след обяд (13:00 или 13:30 ще уточним до няколко дена). Доколкото разбрах и проблема със залите е голям в събота и неделя заради магистрите и други дисциплини, но в събота след обяд има шанс да се намери зала. За това обаче ще пиша най-късно до сряда, като уточним всичко с учебен отдел. Обявата предполагам ще бъде лепната преди това за да може повече хора да научат (разбира се хората от форума вече знаят :-) но може да се появят още желаещи).
« Последна редакция: 06.01.2012, 17:53:39 от А.Пенев »
Активен
А.Пенев

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

Записване: на 14.01.2012 г. (събота) от 13:00 ч. в 431 к. з.
Провеждане: Лекциите ще се провеждат всяка събота от 14.01.2012 г. от 13:00 ч. в 431 к.з.

http://fmi-plovdiv.org/news.jsp?ln=1&newsId=464&newsPageNumber=1
Активен
А.Пенев

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

Промяна на залата за записване: на 14.01.2012 г. (събота) от 13:00 ч. в 546 к. з.
Много е вероятно дисциплината да бъде призната за спецкурс.
« Последна редакция: 13.01.2012, 17:52:22 от А.Пенев »
Активен
А.Пенев

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page

Да, интересна и полезна тематика е - дано се признае за спецкурс или избираема.
Активен

А.Пенев

  • Неактивен Неактивен
  • Публикации: 157
    • www.alexander-penev.info

Качени са материалите от първото занятие: тук
Активен
А.Пенев