Технический университет
Скачать 412.02 Kb.
|
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования ИРКУТСКИЙ национальный исследовательский ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ кафедра Технологии и оборудования машиностроительных производств
Выполнили: студентки гр. ИСМб-13 Мишечкина Ю.А. Мишанова Д.И. Иркутск 2015 ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ Выбрать одно из средств (Advisor, Composer, Inspector – старое название Intel Thread Checker - ITC, VTune - VTune Amplifier, ранее профилировщик), выбрать одну из готовых программ, представленных в виде архива. Запустить программу, описать ее назначение, ее структуру. Провести эксперименты с программой, получив соответствующую информацию и по возможности улучшив программу. Было выбрано проанализировать программу tachyon_insp_xe при помощи Intel Parallel Inspector. Intel Parallel Inspector (IPI) Инструмент поиска ошибок для приложений, разрабатываемых на C/C++, функционирующих на базе операционной системы Microsoft Windows, использующих преимущества многопоточности. Назначение программы Данная программа предназначена для отрисовки объемных фигур и подсчета затраченного на это время. Рисунок 1 – Результат работы программы Структура программы
Функция Потоков thread_trace Взаимодействие Класс рисования draw_task Функция Отрисовки пикселя color_t render_one_pixel Выполнения анализа на возможные ошибки Intel Parallel Inspector подразделяется на два анализа поиска огибок: Memory Errors: –поиск ошибок работы с памятью. Threading Errors: –поиск ошибок многопоточности По завершению анализа Threading Errors, ошибок не выявлено. Рисунок 2 – Результат анализа Threading Errors По завершению анализа Memory Errors было выявлено две ошибки памяти find and fix memory: Рисунок 3 – Результат анализа Memory Errors Ошибка №1 Рисунок 4 –Ошибка 1 (анализ Memory Errors) Проанализировав ошибку, был сделан вывод что необходимо изменить в строке 270 free на delete. Так как Оператор delete содержит результат типа void и не возвращает значение. При использовании оператора delete на объекте отменяется выделение памяти. Free же в сою очередь освобождает память, но при этом не изменяет значение указателя. Рисунок 5 – Исходный код с ошибкой Рисунок 6 - Исправленный код Ошибка №2 Рисунок 7 –Ошибка 2 (анализ Memory Errors) Проанализировав ошибку в строке 163, было принято решение, о выделении памяти malloc ниже 180 строки. Содержание выделенного блока памяти не инициализируется, оно остается с неопределенными значениями. Указатель на выделенный блок памяти. Тип данных, на который ссылается указатель всегда void, поэтому это тип данных может быть приведен к желаемому типу данных. Рисунок 8 – Исходный код с ошибкой Рисунок 9- Исправленный код Проверка исправленных ошибок По завершению анализа и исправления ошибок. Был повторно запущен анализ Memory Errors. По ходу выполнения анализа ошибок выявлено не было. |