Problem with Pelegant in cygwin

Moderators: cyao, michael_borland

Post Reply
wmliu
Posts: 20
Joined: 30 Sep 2008, 10:52

Problem with Pelegant in cygwin

Post by wmliu » 14 Dec 2010, 12:34

Hi,

I'm trying to get the latest Pelegant work under cygwin with quad core desktop. The problem I have now is that I always run into problem with
MPI_File_sync failed: Other I/O error , error stack:
ADIOI_GEN_FLUSH(23): Other I/O error Permission denied

I tried to build Pelegant with DSDDS_MPI_IO=0, but could not manage to get latest Pelegant (23.1.2) built.
Just wonder if some one could help me out off this problem.

Regards,

Wanming Liu

ywang25
Posts: 52
Joined: 10 Jun 2008, 19:48

Re: Problem with Pelegant in cygwin

Post by ywang25 » 14 Dec 2010, 14:18

Wanming,

DSDDS_MPI_IO=0 will not work for Pelegant. I remember you reported a working version of Pelegant was built on your Windows systems. I wonder what has been changed since then.

Yusong

ywang25
Posts: 52
Joined: 10 Jun 2008, 19:48

Re: Problem with Pelegant in cygwin

Post by ywang25 » 14 Dec 2010, 14:25

We also have pre-compiled binary version of Pelegant built with MPICH2 for Windows . It is distributed with elegant binary file together. You can download it to see if it works for you.

Yusong

wmliu
Posts: 20
Joined: 30 Sep 2008, 10:52

Re: Problem with Pelegant in cygwin

Post by wmliu » 14 Dec 2010, 14:43

Yusong,

Thanks for your replies.
For the one I made it working, it is version 21.0 and I built it with DSDDS_MPI_IO=0.
I'll try the Windows version later.

Thanks,

Wanming

ywang25
Posts: 52
Joined: 10 Jun 2008, 19:48

Re: Problem with Pelegant in cygwin

Post by ywang25 » 14 Dec 2010, 15:27

21.0 is pretty old. Just make sure you built with SDDS.2.8 for Pelegant 23.1.2. In the SDDSlib directory, you need
make clean
make MPI=1

Yusong

wmliu
Posts: 20
Joined: 30 Sep 2008, 10:52

Re: Problem with Pelegant in cygwin

Post by wmliu » 20 Dec 2010, 10:53

Yusong,
I made a change to SDDSmpi_output.c to make the latest Pelegant working under cygwin.
I changed the following line in function SDDS_MPI_File_Open from
if( MPI_SUCCESS != (mpi_code=MPI_File_sync(MPI_dataset->MPI_file)))
SDDS_MPI_GOTO_ERROR(stderr,"MPI_File_sync failed", mpi_code, 1);
into
if( MPI_SUCCESS != (mpi_code=MPI_File_sync(MPI_dataset->MPI_file)))
SDDS_MPI_GOTO_ERROR(stderr,"MPI_File_sync failed", mpi_code, 0);
Now Pelegant only report MPI_File_sync failed but continues to finish the simulation. The results and performance are almost identical to the old version for both serial and parallel versions. But I don't know if this is going to cause any corruption in the output file under some special situations.

Thanks,

Wanming

ywang25
Posts: 52
Joined: 10 Jun 2008, 19:48

Re: Problem with Pelegant in cygwin

Post by ywang25 » 22 Dec 2010, 16:12

Wanming,

Thanks for your reporting your experience with Pelegant. As most of our tests were done on Linux, some issues for a particular environment might not be discovered.

I tested several examples under elegantExamples/parallel with the binary Pelegant downloaded from APS and ran it under cygwin on a Windows XP computer. I didn't experience the same problem you had even I added .out as output.

You can comment out the MPI_File_sync part of the code
if( MPI_SUCCESS != (mpi_code=MPI_File_sync(MPI_dataset->MPI_file)))
SDDS_MPI_GOTO_ERROR(stderr,"MPI_File_sync failed", mpi_code, 1);

as MPI_File_close will flush the buffer to the disk eventually. The only side affect I can think is you might not get immediate update from your output file until the file is closed at the end.

Yusong

Post Reply