Свободна

Съвременни подходи при Автоматичното диференциране (AD)

Анотация

Автоматичното диференциране (AD) е полезна техника в области на научни изследвания като машинно обучение, изчислителна геометрия, физика, оптимизация и др. Този подход се различава от символичното диференциране и численото диференциране. AD позволява автоматично изчисляване на производни на функции (зададени най-често като код написан на ЕП от високо ниво, например C++) с висока точност и ефективност. Една от съвременните системи, реализираща AD е Clad. Тя позволява автоматично диференциране на C++ код, като се основава на инфраструктурата на LLVM и е плъгин за компилатора на Clang. Тя не само опростява процеса на диференциране, но също така подобрява производителността и точността на числените изчисления в научните приложения.

В научните изследвания, където преобладават сложните математически модели, използването на AD чрез инструменти като Clad носи ново ниво на възможна сложност и скорост на изчисленията. Използвайки AD в C++ компилаторите, изследователите могат да се съсредоточат повече върху научните аспекти на своята работа, вместо да затъват в ръчни задачи за диференциране. Тази автоматизация не само ускорява процеса на разработка, но също така гарантира, че изчисленията са без грешки и с възможно най-ниска цифрова нестабилност.

Въпреки многото възможности на Clad тук има и много широко поле за развитие и иновации в сферата на AD и нейните приложения.

Необходимо време

1-2 години.

Домейн специфични оптимизации за Plugin базирани системи

Цели

Да се реализират домейн специфични методи за оптимизация на plugin базирани системи, като се използва съществуващата инфраструктура на SolidOpt framework.

Описание

Plugin модулите са мощен инструмент за създаване на лесно разширяеми системи, но това обикновено влошава работата/бързодействието на цялата система. Един добър компромис може да се постигне, когато системата не може да се разширява по всяко време на работата си, а само като тя се стартира. Това отваря възможности за прилагане на оптимизации на цялата система и plugin-ите и за намаляване на влиянието на слабата свързаност на нейните модули върху бързодействието. Оптимизации като сливане на plugin модули с базовата програма, автоматично маркиране на класовете като sealed, девиртуализация на методи, премахване на някои от шаблоните за дизайн и т.н. са само примери за това как можете да постигнат по-добри резултати, без да губи гъвкавостта и добрия дизайн на системата. Резултатите от оптимизации могат да бъдат кеширани за да се избегне провеждането на тези тежки анализи и трансформации при всяко стартиране на програмата. Този подход позволява оптимизациите да се извършват само когато се добавят или се премахват модули.

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

Дипломантите ще придобият по-широки познания по програмиране на ниско ниво и създаване и автоматизирана трансформация на високомодулни софтуерни системи.

Сложност

Средна/Висока.

Необходимо време

6-12 месеца.

Визуален редактор на схеми на потоците на данни (dataflow)

Цели

Реализация на .NET базиран визуален редактор на схеми на потоците на данни (dataflow).

Описание

Dataflow схемите са класическа нотация за описание на процеси на обработка на данни. Те изразяват потоците на данни (flowchart, dataflow diagram).

Областта на дипломната работа свързана с областта на визуалните езици за програмиране. Дипломантите ще придобият по-широки познания по програмиране, разработване на специализирани визуални дизайнери/редактори за специфични области (домейни). Ще бъдат приложени на практика съвременни подходи за дизайн и реализация на обектно-ориентирани визуални приложения (като MVC и други).

Сложност

Ниска/Средна.

Необходимо време

6-12 месеца.

Необходими предварителни познания

Необходими са познания в следните области:

  • .NET (основно C#)
  • Схеми на потоците на данни (Dataflow diagram)
  • MVC
  • Компютърна графика

Визуален редактор на блок схеми

Цели

Реализация на .NET базиран визуален редактор на блок схеми.

Описание

Блок схемите са класическа нотация за описание на алгоритми или процеси. Те изразяват потоците на контрола (flowchart, control flow diagram).

Областта на дипломната работа свързана с областта на визуалните езици за програмиране. Дипломантите ще придобият по-широки познания по програмиране, разработване на специализирани визуални дизайнери/редактори за специфични области (домейни). Ще бъдат приложени на практика съвременни подходи за дизайн и реализация на обектно-ориентирани визуални приложения (като MVC и други).

Сложност

Ниска/Средна.

Необходимо време

6-12 месеца.

Необходими предварителни познания

Необходими са познания в следните области:

  • .NET (основно C#)
  • Блок схеми (Control flow diagram)
  • MVC
  • Компютърна графика

Визуален редактор на математически формули

Цели

Реализация на .NET базиран визуален редактор на математически формули.

Описание

Математическата нотация е широко разпространен подход за записване и изразяване на формули, изрази и функции.

Областта на дипломната работа свързана с областта на визуалните езици за програмиране. Дипломантите ще придобият по-широки познания по програмиране, разработване на специализирани визуални дизайнери/редактори за специфични области (домейни). Ще бъдат приложени на практика съвременни подходи за дизайн и реализация на обектно-ориентирани визуални приложения (като MVC и други).

Сложност

Ниска/Средна.

Необходимо време

6-12 месеца.

Реализиране на Unit тестове за SolidOpt

Цели

Да се реализират unit тестове върху функционалността на инструментариума SolidOpt. Да се изготви документация на тестваната функционалност.

Описание

Модулното тестване (Unit testing) е метод за валидиране и проверка на софтуера, при който програмистът тества отделните софтуерни модули на сорс кода дали са годни за използване. Модулът е най-малката част от приложението, която може да бъде тествана. В императивното програмиране модула може да бъде процедура, функция или метод.

Областта на дипломната работа е подобласт на осигуряване на качеството на софтуера (Quality Assurance). Дипломантите ще придобият по-широки познания по програмиране, разработване на тестови случаи за приложения, анализ на последователността на изпълнение, както и интеграцията им в система като SolidOpt.

Сложност

Средна/Висока.

Необходимо време

6-12 месеца.

Разпространи съдържание