diff --git a/Grid/communicator/Communicator_mpi3.cc b/Grid/communicator/Communicator_mpi3.cc index 3b8561d3..f72b5773 100644 --- a/Grid/communicator/Communicator_mpi3.cc +++ b/Grid/communicator/Communicator_mpi3.cc @@ -589,6 +589,7 @@ double CartesianCommunicator::StencilSendToRecvFromPrepare(std::vectorGlobalSum(EC); + if (EC) { + for(int r=0;r Word svm_xor(Word *vec,uint64_t L) +template Word gpu_xor(Word *vec,uint64_t L) { Word identity; identity=0; Word ret = 0; @@ -87,6 +86,18 @@ template Word svm_xor(Word *vec,uint64_t L) theGridAccelerator->wait(); return ret; } +template Word cpu_xor(Word *vec,uint64_t L) +{ + Word csum=0; + for(uint64_t w=0;w Word svm_xor(Word *vec,uint64_t L) +{ + gpu_xor(vec,L); +} template Word checksum_gpu(Word *vec,uint64_t L) { Word identity; identity=0; diff --git a/Grid/util/FlightRecorder.cc b/Grid/util/FlightRecorder.cc index b5baeea9..caa76c10 100644 --- a/Grid/util/FlightRecorder.cc +++ b/Grid/util/FlightRecorder.cc @@ -47,6 +47,7 @@ int32_t FlightRecorder::CsumLoggingCounter; int32_t FlightRecorder::NormLoggingCounter; int32_t FlightRecorder::ReductionLoggingCounter; uint64_t FlightRecorder::ErrorCounter; +uint64_t FlightRecorder::CommsErrorCounter; std::vector FlightRecorder::NormLogVector; std::vector FlightRecorder::ReductionLogVector; @@ -118,6 +119,10 @@ void FlightRecorder::SetLoggingModeVerify(void) ResetCounters(); LoggingMode = LoggingModeVerify; } +uint64_t FlightRecorder::CommsErrorCount(void) +{ + return CommsErrorCounter; +} uint64_t FlightRecorder::ErrorCount(void) { return ErrorCounter; @@ -312,6 +317,7 @@ void FlightRecorder::xmitLog(void *buf,uint64_t bytes) if ( !ContinueOnFail ) GRID_ASSERT(0); ErrorCounter++; + } else { if ( PrintEntireLog ) { std::cerr<<"FlightRecorder::XmitLog : VALID "<< XmitLoggingCounter <<" "<< std::hexfloat << _xor << " "<< XmitLogVector[XmitLoggingCounter] <