PTL logo

From: CarGa (carga_at_[hidden])
Date: 2010-05-01 17:03:53


Hello!

I am passing MPI.NET tutorial. At the moment I have ArgumentException in ParallelPi example.

At first, I set dartsPerProcessor = 100,000,000 for 2 processors. No prob. Then I executed this example in 32 threads. The output of the example indicates integer overflow: totalDartsInCircle appeared to be far, far below zero.

I think it is the bug No 1: every overflow in Reduce<> method must throw exception. Otherwise there is no reason to trust the results.

At this point I thought: "No problem! Let's replace <int>.Add with <UInt64>.Add". Here I found bug No 2: ArgumentException from Reduce() call. Here is the console output for this exception:

=========================================
Unhandled Exception: System.ArgumentException: Invalid MPI_Op, error stack:
MPI_Reduce(804)..........: MPI_Reduce(sbuf=0x0028EC9C, rbuf=0x00000000, count=1,
 MPI_UNSIGNED_LONG_LONG, MPI_SUM, root=0, MPI_COMM_WORLD) failed
MPIR_SUM_check_dtype(324): MPI_Op MPI_SUM operation not defined for this datatype
Parameter name: op
   at MPI.Communicator.Reduce_impl[T](Boolean isRoot, Int32 size, T value, ReductionOperation`1 op, Int32 root)
   at MPI.Intracommunicator.Reduce[T](T value, ReductionOperation`1 op, Int32 root)
   at ParallelPi.Program.Main(String[] args) in ...\MPIHello\ParallelPi\Program.cs:line 27
=========================================

Do you continue to develop MPI.NET? Or did it died already (there is no e-mails in subscription archive)?

How should I register these bugs? Is it possible for me to commit bugfixes in trunk? Are there some custom MPI data types, that have no upper limit to their values?

Best regards,
Anton.