Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объясните что значит эта ошибка 
:(
    Опции темы
Flimer
Дата 6.5.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



user posted image

Может кто-нить подробно объяснить что эта ошибка значит и как можно ее исправить? Пожалуйста... smile 
PM MAIL   Вверх
Alca
Дата 6.5.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Код покажи.


--------------------
PM WWW ICQ Skype Jabber   Вверх
Flimer
Дата 6.5.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



Код

#include <mpi.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <dos.h>


//////////////////////////////////////////
//              TYPES OF STRUCT         //
typedef struct BMPHEAD
  {
    short    Type;
    int    Size;
    int    Reserved1;
    int    Offbits;
  }  BMPH;

typedef struct BMPINFOH {
    int    biSize;        //число байт, занимаемых структурой
                //BITMAPINFOHEADER
    int    biWidth;    //ширина битового образа в пикселах
    int    biHeight;    //высота битового образа в пикселах
    short    biPlanes;    //число битовых плоскостей устройства
    short    biBitCount;    //число битов на пиксель
    int    biCompression;    //тип сжатия
    int    biSizeImage;    //размер картинки в байтах
    int    biXPelsPerMeter;//горизонтальное разрешение устройства,
                //пиксел
    int    biYPelPerMeter;    //вертикальное разрешение устройства,
                //пиксел
    int    biClrUsed;    //число используемых цветов
    int    biClrImportant; //число "важных" цветов
    } BMPINFOHEADER;


typedef struct BQUAD {
    unsigned char    rgbRed;        //интенсивность красного
    unsigned char    rgbGreen;    //интенсивность зеленого
    unsigned char    rgbBlue;    //интенсивность голубого
    unsigned char    rgbRserved;    //не используется
    } RGB;

//////////////////////////////////////////
int main(int argc, char* argv[])
{
int n, i, j;
BMPH head;
BMPINFOHEADER ihead;
FILE *F;
FILE *FN, *FN2;
double t[6][12];
double local_t[4];
RGB pallet[256];
byte *rastr;
char st[50];
byte *blok, *nblok;
int  numtasks; //Количество запущеных процессов
int  rank;      //Ранг (идентификатор) процесса
int  bufsize15, bufsize234;
MPI_Status status;

t[0][0]=GetTickCount();    //      время инициализации
MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
t[0][0]=(GetTickCount()-t[0][0])/1000;

   if(rank==0)
   {
       printf("Program with using MPI\n");
       if (argc<2)
       {  printf("Command line: \n\prog.exe filename.bmp\n");
          getch();
          MPI_Abort(MPI_COMM_WORLD, MPI_ERR_OTHER);
          exit(1);
       }
       t[0][1]=MPI_Wtime();    //время открытия файла
       F=fopen(argv[1],"rb");
       if(F==NULL)
       {   printf("Cannot find file\n");
           MPI_Abort(MPI_COMM_WORLD, MPI_ERR_OTHER);
           exit(1);
       }
       rewind(F);
       FN=fopen("first.bmp","wb");
       if( (FN==NULL))
       {   printf("Cannot create output file\n");
           MPI_Abort(MPI_COMM_WORLD, MPI_ERR_OTHER);
           exit(1);
       }
       t[0][1]=(MPI_Wtime()-t[0][1]);
       t[0][2]=MPI_Wtime();          // время считывания данных из файла
       ///////////Считвание заголовков
       fread(&head, sizeof(BMPH),1,F);
       fread(&ihead, sizeof(BMPINFOHEADER),1,F);
       fread(&pallet, sizeof(RGB)*256,1,F);
       fwrite(&head, sizeof(BMPH), 1, FN);
       fwrite(&ihead, sizeof(BMPINFOHEADER), 1, FN);
       fwrite(&pallet,sizeof(RGB)*256, 1, FN);
       rastr=(byte*) malloc(21160000);
       fread(rastr, sizeof(unsigned char), head.Size - head.Offbits, F);
       t[0][2]=MPI_Wtime()-t[0][2];
   }

// Пересылка данных
if (rank == 0)
         for (i = 1; i < numtasks; i++)
          {
           if( (i>0) && (i<6))
            {   t[i][3]=MPI_Wtime();
                MPI_Send(rastr+((i-1)*766-1)*4600, 766*4600, MPI_UNSIGNED_CHAR, i, 0, MPI_COMM_WORLD);
                t[i][4]=MPI_Wtime();
            }
           if (i==6)
            {   t[i][3]=MPI_Wtime();
                MPI_Send(rastr+(5*766-1)*4600, 770*4600, MPI_UNSIGNED_CHAR, i, 0, MPI_COMM_WORLD);
                t[i][4]=MPI_Wtime();
            }
          }

// Приём данных
if (rank)
         {
          if( (rank>0) && (rank<6))
            {
                blok=(byte*) malloc(766*4600);
                nblok=(byte*) malloc(766*4600);
                MPI_Recv(blok, 766*4600, MPI_UNSIGNED_CHAR, 0, 0, MPI_COMM_WORLD, &status);
            }
          if (rank==6)
            {
                blok=(byte*) malloc(770*4600);
                nblok=(byte*) malloc(770*4600);
                MPI_Recv(blok, 770*4600, MPI_UNSIGNED_CHAR, 0, 0, MPI_COMM_WORLD, &status);
            }
         }
// Обработка
if (rank)
     {
         int sizeofblok=766;
          local_t[0]= MPI_Wtime(); //   начало выделения контуров
          for(j=1; j<(sizeofblok); j++ )
            {
               blok[j*4600]=255;
               blok[(j+1)*4600-1]=255;
                for(i=1; i<(4600-1); i++)
                  {
                    double X, Y;
                    double r;
                    long e;
                    X=nblok[(j+1)*4600+i+1];
                    X+=2*nblok[(j)*4600+i+1];
                    X+=nblok[(j-1)*4600+i+1];
                    X-=nblok[(j+1)*4600+i-1];
                    X-=2* nblok[(j)*4600+i-1];
                    X-=nblok[(j-1)*4600+i-1];
                    Y=nblok[(j+1)*4600+i-1];
                    Y+=2*nblok[(j+1)*4600+i];
                    Y+=nblok[(j+1)*4600+i+1];
                    Y-=nblok[(j-1)*4600+i+1];
                    Y-=2*nblok[(j-1)*4600+i];
                    Y-=nblok[(j-1)*4600+i-1];
                    r=X*X+Y*Y;
                    e=sqrt(r);
                    if(e>255) {e=255.0;}
                    blok[j*4600+i]=255-e;

                  }
            }
           local_t[1]= MPI_Wtime();        //   конец  выделения контуров
       if(rank==1)
            {
                MPI_Send(blok, 766*4600, MPI_UNSIGNED_CHAR, 0, 0, MPI_COMM_WORLD);
                local_t[3]= MPI_Wtime();   //   конец  пересылки
            }
          if( (rank>1) && (rank<6))
            {
                MPI_Send(blok+4600, 766*4600, MPI_UNSIGNED_CHAR, 0, 0, MPI_COMM_WORLD);
                local_t[3]= MPI_Wtime();
            }
          if (rank==6)
            {
                MPI_Send(blok+4600, 770*4600, MPI_UNSIGNED_CHAR, 0, 0, MPI_COMM_WORLD);
                local_t[3]= MPI_Wtime();
            }
          MPI_Send(local_t,4 , MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
     }               
// Сборка блоков
if(rank==0)
     {
      for (int i = 1; i < numtasks-1; i++)
      {
         MPI_Recv(rastr+(i-1)*766*4600, 766*4600, MPI_UNSIGNED_CHAR, i, 0, MPI_COMM_WORLD, &status);
         //MPI_Recv(local_t, 4, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &status);

      }
      MPI_Recv(rastr+5*766*4600, 770*4600, MPI_UNSIGNED_CHAR, 6, 0, MPI_COMM_WORLD, &status);
      t[0][9]=MPI_Wtime();          // время сохранения
      fwrite(rastr, sizeof(unsigned char), head. Size - head.Offbits, FN);
      fclose(FN);
      t[0][10]=MPI_Wtime(); // время окончнаия обработки
      t[0][9]=(t[0][10]-t[0][9]);
      for (int i = 1; i < numtasks; i++)
      {
         MPI_Recv(local_t, 4, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &status);
         for(int j=0;j<4;j++)
           t[i][5+j]= local_t[j];
      }
     }
// Завершаем
if(rank==0)
   {
    char str[50];

    sprintf(&str[0],"Время инициализации %f c", t[0][0]);
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);

    sprintf(&str[0],"Время открытия файла %f c", t[0][1]);
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);

    sprintf(&str[0],"Время считывания данных из файла %f c", t[0][2]);
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);

    sprintf(&str[0],"Время пересылки данных i-тому процессу:\n");
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);
    for (i=1;i<numtasks;i++)
       printf("\t\t %d: %.5f  -  %.5f  (%.5f)\n", i, t[i][3], t[i][4], t[i][4]-t[i][3]);

    sprintf(&str[0],"Время фильтрации i-тым процессом:\n");
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);
    for (i=1;i<numtasks;i++)
       printf("\t\t %d: %.5f  -  %.5f  (%.5f)\n", i, t[i][5], t[i][6], t[i][6]-t[i][5]);

    sprintf(&str[0],"Время выделения контуров i-тым процессом:\n");
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);
    for (i=1;i<numtasks;i++)
       printf("\t\t %d: %.5f  -  %.5f  (%.5f)\n", i, t[i][6], t[i][7], t[i][7]-t[i][6]);

    sprintf(&str[0],"Время пересылки данных i-тым процессом:\n");
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);
    for (i=1;i<numtasks;i++)
       printf("\t\t %d: %.5f  -  %.5f  (%.5f)\n", i, t[i][7], t[i][8], t[i][8]-t[i][7]);

    sprintf(&str[0],"Время сохранения  данных в файл %f c", t[0][9]);
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);

    sprintf(&str[0],"Обшее время выполнения обработки данных %f c", t[0][10]);
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);

    free(rastr);
   }
else {free (blok);free(nblok);}

//t[0][11]=MPI_Wtime();
MPI_Finalize();
t[0][11]=(MPI_Wtime());
if(rank==0)
  { char str[50];
    sprintf(&str[0],"Время выполнения программы %f c", t[0][11]+t[0][0]);
    CharToOem(&str[0], &str[0]);
    printf("%s\n", str);

   printf("\nObrabotka zavershena\nPress any key\n");
   getch();
  }
return 0;
}
//---------------------------------------------------------------------------

PM MAIL   Вверх
Flimer
Дата 6.5.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



Alca, Вот, пожалуйста

PM MAIL   Вверх
ama_kid
Дата 6.5.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 10
Всего: 95



Цитата(Flimer @  6.5.2008,  19:15 Найти цитируемый пост)
Вот, пожалуйста
пожалуй, немного дополню Alca, ибо ты его понял буквально и вывалил всю простыню... Покажи код, в котором эта ошибка возникает (т.е. саму строчку, вызывающую ошибку, и вверх\вниз до конца блока)




--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Comm
Дата 6.5.2008, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 31.8.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 1



НАрушения доступа к памяти у одного из проццесов))) 


--------------------
=)))))
user posted image
PM MAIL ICQ   Вверх
Flimer
Дата 6.5.2008, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



ama_kid,  Я пошагово проверяю и оно у меня все время показывает ошибку на 113 строчке, но там все правильно.Короче пошагово нельзя вычислить ошибку так как клинит не в том месте, где она действительно.
Если бы я сам знал где она, то думаю разобрался бы. А так даже не представляю где она может быть и из-за чего.

Добавлено через 31 секунду
Comm, А как вычислить у какого из процессов и почему это наружение происходит ?
PM MAIL   Вверх
ama_kid
Дата 6.5.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 10
Всего: 95



Цитата(Flimer @  6.5.2008,  19:50 Найти цитируемый пост)
клинит не в том месте, где она действительно
Если IDE рабочая, то ничего подобного быть не должно... После того, как ошибка появилась и ты нажал Ok - у тебя программа останавливается на той строке, где произошла ошибка. Вот её окружение и интересует...



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Flimer
Дата 6.5.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



ama_kid, Но в 113 строке нету ошибки, посмотрите пожалуйста.Там отправка сообщения i-ому процессу сообщения, но почему-то если делать пошагово то останавливается в этом месте и дальше F8 не пашет.Вот что показываетuser posted image
Я так понял, что передачу сообщения при пошаговом исполнении нельзя выполнить.Но ошибка ведь не в этом.Здесь я уверен на 100 % что все нормально.Мне предыдущая ошибка непонятна и если кто объяснил как ее можно было бы исправить, то был бы очень благодарен.
P.S. На этой неделе курсач уже надо нести на проверку, а еще ничего не работает.Плиз, помогите кто. smile 
PM MAIL   Вверх
Flimer
  Дата 6.5.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



ПОЧЕМУ НИКТО НЕ ОТВЕЧАЕТ, НЕУЖЕЛЕ НИКОГДА НЕ СТАЛКИВАЛИСЬ С ТАКИМ ?
PM MAIL   Вверх
Flimer
  Дата 7.5.2008, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



Откликнитесь кто ((((((
PM MAIL   Вверх
dumb
Дата 7.5.2008, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



для начала: никто тебе тут ничего не должен. так что изволь писать "мелким почерком". и намек: форум - не чат.

Цитата(Flimer @  6.5.2008,  19:56 Найти цитируемый пост)
rastr+((i-1)*766-1)*4600
подставь вместо i единицу и посчитай, что получится.

ps. нормально оформлять код не научили?
PM MAIL   Вверх
Flimer
  Дата 7.5.2008, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.5.2008

Репутация: нет
Всего: нет



dumb, Спасибо большое!Зевака, просмотрел.Но ничего еще раз задумаюсь о своей невнимательности)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.