Главная страница
Навигация по странице:

  • Отчет к лабараторной работе №2

  • ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ

  • Intel Parallel Inspector (IPI)

  • Назначение программы

  • Структура программы

  • Входные данные Выходные данные

  • Взаимодействие

  • Проверка исправленных ошибок

  • Технический университет


    Скачать 412.02 Kb.
    НазваниеТехнический университет
    Дата30.01.2018
    Размер412.02 Kb.
    Формат файлаdocx
    Имя файлаPP_lb_2.docx
    ТипОтчет
    #35467

    Министерство образования и науки Российской Федерации

    Федеральное государственное бюджетное образовательное учреждение высшего образования
    ИРКУТСКИЙ национальный исследовательский

    ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

    кафедра Технологии и оборудования машиностроительных производств


    Отчет к лабараторной работе №2

    по дисциплине

    параллельное программирование


    Выполнили:

    студентки гр. ИСМб-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

    Входные данные

    Выходные данные

    thr_parms * parms

    NULL



    Функция Отрисовки пикселя

    color_t render_one_pixel

    Входные данные

    Выходные данные

    int x, int y, unsigned int *local_mbox, volatile unsigned int &serial, int startx, int stopx, int starty, int stopy

    video->get_color(R, G, B)



    Функция Потоков

    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. По ходу выполнения анализа ошибок выявлено не было.


    написать администратору сайта