воскресенье, 12 июня 2011 г.

Доброго времени суток, вам, господа!
     Все выходные тут боролся я с одной программулиной и столкнулся с бедой!!!! 
     Сама программка «всего навсего» производила манипуляции над матрицами.. Но не просто считала там себе цифирки, а распараллеливала это дело! Но суть не в том сам MPI работает на ура..

    Моею задачей было сделать так, чтобы матрицы содержали значения типа double.
    Естественно пока подгонял (отлаживал) все нюансы — использовал тип int.
   …кстати в MPI есть свои типы данных, к примеру СИ'шный int будет обзываться MPI_INT, а double — как ни странно MPI_DOUBLE :)

     И вот он момент по плану моего ToDo, когда пора было меня int на double, но что же??? что-то произошло… при запуске (компиляция проходит нормально) выдаЁт кучу служебной информации с заголовком Memory Map.
    Я с самого начала этой проблемы догадывался, что трабл в динамическом выделении памяти под массивы и в соответствующем их освобождении..

    И со всем этим я проковырялся больше суток :'(

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

     Немного о применении этой опции:

    Установка MALLOC_CHECK_ в 0 может оказаться полезной, если вам мешает найти ошибку в памяти другая ошибка, которую в этот момент исправить нет возможности; эта установка позволяет работать с другими средствами отслеживания ошибок памяти.

   Установка MALLOC_CHECK_ в 1 полезна в случае, когда никаких проблем не видно, поэтому определенные уведомления могут помочь.

   Установка MALLOC_CHECK_ в 2 наиболее полезна при работе в отладчике, поскольку при возникновении ошибки он позволяет выполнить обратную трассировку вплоть до функций управления памятью. В результате вы максимально приблизитесь к месту возникновения ошибки.

   Откомпилированную программу запускаем так:

MALLOC_CHECK_=0 /путь/к/программе


    Кто-то конечно может осудить меня, но когда срок сдачи уже через «пол часа» и ты точно уверен, что в рамках поставленной задачи программа отрабатывает на все 100, то почему бы и нет??

    P.S. используемый мною компилятор gcc и ОС Ubuntu 11,04

    P.P.S. кстати классный редактор Geany, там есть заготорвленные команды/клавиши для компиляции и запуска программ под выбранный вами тип файл (в моем случае СИ'шный), но так как я использовал MPI, то немного модифицировал и в итоге остался доволен. Не среда разработки с отладчиком, как я люблю, но всЁ же удобно!

Комментариев нет:

Отправить комментарий