From: CarGa (carga_at_[hidden])
Date: 2010-05-01 17:03:53
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?