Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика БЖД / Пример ПЗ.docx
Скачиваний:
42
Добавлен:
11.05.2015
Размер:
82.44 Кб
Скачать
      1. Основные аспекты оптимизации многопоточности

При организации многопоточности в уже имеющемся однопоточном приложении необходимо, прежде всего, выделить наиболее затратные по вычислениям участки кода. Именно их стоит подвергать разбиению на потоки.

Если же программная система еще находится в стадии проектирования, то стоит обратить внимание на трудоемкость выбранных алгоритмов на разных участках. В любом случае, стоит стремиться выделить ограниченное количество потоков, но при этом максимально загруженных работой [5]. Это будет эффективнее, так как нивелирует накладные расходы на обеспечение жизненного цикла потока.

В то же время необходимо соблюсти баланс нагрузки на потоки. В случае чрезмерной загруженности одного из потоков, и недостаточной нагрузки на остальные могут возникнуть дополнительные трудности с синхронизацией – потокам с меньшей нагрузкой придется ожидать более загруженные. При обнаружении неравномерности нагрузки на потоки необходимо выяснить причину этого и по возможности устранить.

Дополнительным средством оптимизации может служить определение числа эффективно выполняемых потоков для конкретного компьютера, которое эквивалентно числу ядер процессора с учетом гиперпоточности. Таким образом, зная информацию о аппаратных границах эффективной многопоточности, можно настраивать работу программы под конкретный компьютер, избегая как излишней нагрузки на потоки, так и создания слишком большого числа потоков.

  1. Постановка задачи

Необходимо исследовать возможные способы оптимизации фильтра масштабирования видео. По результатам исследования осуществить оптимизацию фильтра, а также предложить пути возможного совершенствования и доработки.

Требуется также осуществить перенос фильтра на платформу Windows64bit.

При оптимизации необходимо также учесть возможный переход на операционные системы семейства UnixиMacOS.

  1. Ход выполнения практики

Выполнение задания по практике начато с ознакомления с основами технологии DirectShow. Проведено ознакомление со всеми свойствами, доступными пользователю фильтра масштабирования видео. Получены навыки тестирования и отладки фильтров.

Осуществлено ознакомление с исходным кодом программы. В качестве приоритетных участков программы для оптимизации выделены фрагменты, реализующие непосредственное масштабирование, что подтверждено замерами времени выполнения различных частей программы.

Оптимизация программы с применением многопоточности уже осуществлена. Замену алгоритмов масштабирования в фильтре на более быстродействующие на данном этапе решено не производить в связи с перспективой их успешной оптимизации. На основании проведенных исследований в качестве эффективного средства оптимизации методов масштабирования, являющихся одновременно самыми затратными по времени участками фильтра, выбран перевод критических участков кода на Ассемблер с применением технологии SIMD. В соответствии с требованиями компании Элекард, работоспособность фильтра не должна зависеть от поддержки процессором технологииSIMD. Для сохранения работоспособности фильтра и одновременного осуществления оптимизации критических участков кода было решено создать две версии оптимизации. Первая версия будет реализована на Ассемблере без применения векторных команд и оптимизирована. Во второй версии необходимо обеспечить максимальное быстродействие на процессорах с поддержкой векторных вычислений. Для реализации аппаратной независимости работоспособности фильтра реализован блок проверки модели процессора и поддержки им векторного расширения набора команд. В зависимости от результатов проверки, производится выбор версии оптимизированных участков для использования в работе фильтра.

В рамках данной практики реализованы версии процедур масштабирования на Ассемблере без применения векторных команд, произведена их отладка и тестирование. В качестве используемого компилятора выбран NASM, как позволяющий получить кроссплатформенный код, не нуждающийся в значительных модификациях при переносе на другую операционную систему. По результатам тестирования данная реализация показала свою эффективность и принята к использованию в фильтре. Результаты сравнительного тестирования полученной реализации для различных методов масштабирования приведены в таблице 5.1.

Таблица 5.1 – Результаты оптимизации методов масштабирования с применение Ассемблера без технологии SIMD.

Метод

Ускорение

Sharp

Precise

Lanczos

Прирост производительности, %

54.6

37

38.6

Соседние файлы в папке Практика БЖД