пробую пускать свой GUI-MPI-проект на машине с архитектурой x64,
сначала думал, что проблема не связана с MPI, поэтому решил на x64 отладить свой проект:
1. поставил на x64 HPC Pack 2008 SDK
2. поставил туда же заплатку HPC Pack 2008 SDK Fix for "Procedure entry point could not be located" issue
3. начал отладку проекта
ставлю брейкпойнт на MPI_Init_thread:
if( ( Err = ::MPI_Init_thread( &__argc, &__argv, MPI_THREAD_FUNNELED, &mpi_provided ) ) != MPI_SUCCESS ){
PRINT_MPI_ERROR( Err );
PRINT_TRACE;
//
::SetLastError( ERROR_MPI );
return FALSE;
}
после того, как срабатывает брейкпойнт, жму F10 или F11 и отладка обрывается,
т.е. просто процесс завершается без всяких сообщений и событий в журнале
напоминаю: проект GUI'шный, т.е. консоли там по-умолчанию нет (я ее сам создаю в определенный момент, для служебной печати)
с помощью флага -debug к mpiexec определил, что MPI_Init_thread в этот момент выдает следующий лог:
...
[01:1680] reading failed, assuming stdout is closed. error 0xc000014b
[01:1680] process refcount == 1, stdout closed.
[01:1680] reading failed, assuming stderr is closed. error 0xc000014b
[01:1680] process refcount == 0, stderr closed.
[01:1680] process refcount == 0, waiting for the process to finish exiting.
...
более полный лог:
...
[00:1660] handling command:
[00:1660] src = 1
[00:1660] dest = 0
[00:1660] cmd = result
[00:1660] tag = 1
[00:1660] ctx = left child
[00:1660] str = cmd=result src=1 dest=0 tag=1 result=SUCCESS cmd_tag=1 pg_id=D6323720-CE9F-4986-A6B2-A1CF8ECB4A47 pg_rank=0 pg_ctx=0
[00:1660] 0 -> 0 : returning NULL context
[00:1660] successfully launched: 'cmd=launch src=0 dest=1 tag=1 c="Z:\\My Documents\\Visual Studio 2008\\Projects\\x64\\Debug\\GUI-test.exe" args="\"Z:\\My Documents\\Visual Studio 2008\\Projects\\x64\\Debug\\GUI-test.exe\"" s=0 a=0 d=C:\Users\mega q=0 i=0
n=1 k=D6323720-CE9F-4986-A6B2-A1CF8ECB4A47 kd=2B9F9C87-A996-4a48-994E-D369279EFBEB '
[00:1660] root process launched, starting stdin redirection.
[00:1660] posting a read for a command header on the left child context, sock 280
[01:1680] reading failed, assuming stdout is closed. error 0xc000014b
[01:1680] process refcount == 1, stdout closed.
[01:1680] reading failed, assuming stderr is closed. error 0xc000014b
[01:1680] process refcount == 0, stderr closed.
[01:1680] process refcount == 0, waiting for the process to finish exiting.
[01:1680] creating an exit command for rank 0, pid 1412, exit code 0.
[00:1660] read command header
[01:1680] wrote command
[00:1660] command header read, posting read for data: 84 bytes
[01:1680] command written to parent: "cmd=exit src=1 dest=0 tag=2 rank=0 code=0 kvs=D6323720-CE9F-4986-A6B2-A1CF8ECB4A47 "
[00:1660] read command
[00:1660] read command: "cmd=exit src=1 dest=0 tag=2 rank=0 code=0 kvs=D6323720-CE9F-4986-A6B2-A1CF8ECB4A47 "
...
пробовал уже просто в WinMain'е первым делом вызывать MPI_Init_thread, результат тот же,
а вот на x86 машине и отладка и локальный запуск работает правильно,
в чем тут может быть дело, кто-нибудь объяснит?