2016-07-25 38 views
1

我想爲簡單的hello世界程序使用MVAPICH2-GDR。儘管它可以成功編譯代碼,但它在運行時會出現分段錯誤錯誤。我的平臺有Redhat 6.5和CUDA 7.5。所以我下載了rpm文件mvapich2-gdr-cuda7.5-intel-2.2-0.3.rc1.el6.x86_64.rpm。MVAPICH2-GDR有分段錯誤錯誤

的MPI代碼是簡單的Hello World程序:

1 #include <mpi.h> 
2 #include <stdio.h> 
3 
4 int main(int argc, char** argv) { 
5  // Initialize the MPI environment 
6  MPI_Init(NULL, NULL); 
7  // Get the number of processes 
8  int world_size; 
9  MPI_Comm_size(MPI_COMM_WORLD, &world_size); 
10 
11  // Get the rank of the process 
12  int world_rank; 
13  MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); 
14 
15  // Print off a hello world message 
16  printf("Hello world from %d out of %d\n", world_rank, world_size); 
17 
18  // Finalize the MPI environment. 
19  MPI_Finalize(); 
20 } 

要編譯的程序,我用下面的命令:

mpicc hello.c -o hello 

要運行的程序:

mpirun -np 2 ./hello 

錯誤消息如下:

[localhost.localdomain:mpi_rank_1][error_sighandler] Caught error: Segmentation fault (signal 11) 
[localhost.localdomain:mpi_rank_0][error_sighandler] Caught error: Segmentation fault (signal 11)     
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES 
= PID 188057 RUNNING AT localhost.localdomain 
= EXIT CODE: 139 
= CLEANING UP REMAINING PROCESSES 
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES 

YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11) 

因爲MVAPICH2-GDR沒有打開它的源代碼,我真的不知道錯誤來自哪裏。有沒有人成功使用過MVAPICH2-GDR?

+0

您可以調用多個MPI函數。他們通常會返回某種狀態,然後檢查,而不是盲目地希望他們工作。插入一些'printf'語句(確保它們以'newline'結束以刷新輸出結果),以告訴哪些回調函數完全是一個小問題。你有沒有嘗試'MPI_Init(&argc,&argv);'? –

回答

1

以提升GPU-GPU通信的性能MVAPICH2-GDR使用新的GDRCOPY模塊。您需要將MVAPICH2-GDR明確指向庫,或者通過設置MV2_USE_GPUDIRECT_GDRCOPY = 0明確禁用此功能。

正如你可以看到通過禁用此功能,我可以運行你的代碼。欲瞭解更多信息,請參閱userguide:http://mvapich.cse.ohio-state.edu/userguide/gdr/2.2rc1/

[hamidouc @ ivy1 MVAPICH2] $出口MV2_USE_GPUDIRECT_GDRCOPY = 0 [hamidouc @ ivy1 MVAPICH2] $ ./install/bin/mpirun -np 2 ./a.out 你好世界0 from 2 Hello world from 1 from 2

+0

我確實按照該用戶指南中的所有步驟,即使我設置了MV2_USE_GPUDIRECT_GDRCOPY = 0,它仍然存在分段錯誤錯誤,我檢查了每個MPI調用的狀態,第一個語句MPI_Init(NULL,NULL); MVAPICH2-GDR OSU提供的是MLNX-OFED 3.2,但我安裝了最新的驅動程序版本MLNX-OFED 3.3。不確定是否導致問題,但3.2不可用Mellanox網站了。 –