2014-09-01 74 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時,它究竟會在哪裏崩潰? – 2014-09-01 04:12:03

+1

您將不得不展示更多的代碼並嘗試生成回溯來識別崩潰的源代碼行。 – 2014-09-01 11:40:22

回答

1

完全同意您應該發佈代碼的意見。

一般來說,您可能沒有分配正確的緩衝區。 MPI_Type_vector將描述一個記憶區域。該區域是MPI_Type_size字節,但它將分散在由磅和範圍值MPI_Type_get_extent給定的範圍內。