|
From: Ashley P. <as...@qu...> - 2006-02-20 10:42:40
|
On Sat, 2006-02-18 at 23:13 +0000, sv...@va... wrote: > Log: > First try at an MPI wrappers library. Currently the build system > ignores it - it must be built by hand. Looks interesting, Having read through it I've got a couple of questions for you though (I'll try and keep this short). Why did you use the PMPI functions? I'd have expected the MPI ones to be ok although I guess wrapping weak symbols is different to wrapping normal ones? How is this intended to be used on a practical level?, my understanding is that that function wrappers are executed in the client address space, are you assuming a LD_PRELOAD trick to load this file with the application or is there another way these get loaded? What does the stack trace look like when one of the client checks reports an error, does it include the MPI function name the check is targeted at? The before function could be called from a (P)MPI_Init wrapper, the standard says this is the only function that's safe to call at startup, likewise MPI_Finalize could (should?) do assertion checks that all shadowrequests are free. The standard itself mandates this and some implementations check it but I'm not sure you have wrapped all places these are allocated/destroyed so it's possible you've got a leak here. It's hard to see what the wrappers for Wait/Waitall are going to catch that valgrind wouldn't pick up anyway, they only handle metadata describing comms so should be tracked already by valgrind like any other data in a program. Likewise for Iprobe and OP_create. I'd say MPI_Waitsome, MPI_Alltoall and MPI_Allgather would warrant wrappers as they tend to get used fairly often. The converse is true for MPI_Op_create. I should get a chance to give this code a spin later so I'll be able to give you more feedback then. Ashley, |