2014-09-01 2 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.

Смежные вопросы