[ofa-general] Re: When is the next planned release of libmlx4?
Roland Dreier
rdreier at cisco.com
Fri Jun 12 21:22:06 PDT 2009
> Valgrind replaces the libc memcpy call with a simple version that
> copies a byte at a time (in order). If libmlx4 is not built with
> --with-valgrind, valgrind considers each write an invalid write and
> spends a very long time after each write updating its error database.
> We experimented with replacing the Valgrind error database update
> with a configurable spin loop and found that if we put a delay of
> around 100,000 cycles between writes in the 'byte memcpy' when
> writing to the blueflame page, that a sent message gets
> lost/misplaced in a simple testcase with two MPI_barriers back to
> back (resulting in a hang because not all processes exit the first
> barrier). Our theory is the card sees 'byte' writes to the blueflame
> page and due to the long delay, uses the information before it is all
> written out (and thus getting wrong info).
That makes sense. The HW documentation says that blueflame writes must
be done in aligned chunks of at least 4 bytes, so it's not surprising
that byte writes confuse the HW in some cases.
- R.
More information about the general
mailing list