2014-09-01 3 views
0

동적 인 행렬로 작업하고, MPI_Type_vector를 사용하여 각 열을 프로세스에 전달합니다. 이 유형을 정의하는 중입니다.큰 치수를 가진 MPI_Type_vector

MPI_Type_vector(m,1,n,MPI_INT,&column_mpi_t); 
MPI_Type_commit(&column_mpi_t); 

m은 행 수와 n 열 수입니다. 이것은 n과 m이 각각 4와 8처럼 작을 때 잘 동작합니다. 그러나 m과 n이 너무 크면 프로그램이 세그먼트 오류로 중단되고 m이 40과 n이 80이라고 표시합니다.

누군가 이런 일이 발생하는 이유를 알고 계십니까? 크기가 너무 큰 type_vector를 사용하지 않는 것이 좋습니다.

도움 주셔서 감사합니다.

+0

여기서 m = 40 및 n = 80 일 때 정확히 충돌이 발생합니까? –

+1

더 많은 코드를 보여야하고 충돌의 소스 라인을 식별하기 위해 백 트레이스를 생성해야합니다. –

답변

1

코드를 게시해야한다는 의견에 완전히 동의하십시오.

일반적으로 올바른 종류의 버퍼를 할당하지 않은 것 같습니다. MPI_Type_vector은 메모리 영역을 설명합니다. 이 영역은 MPI_Type_size 바이트이지만, lb 및 범위 값이 MPI_Type_get_extent 인 범위에 분산됩니다.

관련 문제