From 150938191c3f35c5b98d064e7587c5a56a867ef4 Mon Sep 17 00:00:00 2001 From: zhangshuai Date: Tue, 29 Oct 2019 22:31:32 +0800 Subject: [PATCH] 1. MPI_Iallgatherv, version 0.6.3 2. modify non-blocking MPI communication 3. add 32(30-2) hectors case 3. add scripts for single machine MPI Gazebo start and end --- .../gazebo/physics/World.cc | 256 +++++++------ .../mpi_run/MPI_Gazebo_pause.sh | 12 + .../mpi_run/MPI_Gazebo_start.sh | 12 + Gazebo_Distributed_MPI/mpi_run/hostfile | 4 +- Gazebo_Distributed_MPI/mpi_run/rankfile | 4 +- ...32_single_gazebo_mpi_spawn_test_xxx.launch | 360 ++++++++++++++++++ ...32_single_gazebo_mpi_spawn_test_yyy.launch | 360 ++++++++++++++++++ ...rport_distribution_32hector_mpi_test.world | 324 ++++++++++++++++ 8 files changed, 1201 insertions(+), 131 deletions(-) create mode 100755 Gazebo_Distributed_MPI/mpi_run/MPI_Gazebo_pause.sh create mode 100755 Gazebo_Distributed_MPI/mpi_run/MPI_Gazebo_start.sh create mode 100644 Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/launch/hector_32_single_gazebo_mpi_spawn_test_xxx.launch create mode 100644 Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/launch/hector_32_single_gazebo_mpi_spawn_test_yyy.launch create mode 100644 Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/worlds/kunming_airport_distribution_32hector_mpi_test.world diff --git a/Gazebo_Distributed_MPI/gazebo/physics/World.cc b/Gazebo_Distributed_MPI/gazebo/physics/World.cc index 238c2b9..a00d6ba 100644 --- a/Gazebo_Distributed_MPI/gazebo/physics/World.cc +++ b/Gazebo_Distributed_MPI/gazebo/physics/World.cc @@ -106,6 +106,7 @@ double before_updatePhysicsTime = 0; // little double updatePhysicsTime = 0; double before_mpiTime = 0; double barrierTime = 0; +double waitTime = 0; double mpiTime = 0; double after_mpiTime = 0; double wholeUpdataTime = 0; @@ -119,6 +120,7 @@ double before_updatePhysicsTime2 = 0; double updatePhysicsTime2 = 0; double before_mpiTime2 = 0; double barrierTime2 = 0; +double waitTime2 = 0; double mpiTime2 = 0; double after_mpiTime2 = 0; double wholeUpdataTime2 = 0; @@ -851,73 +853,76 @@ void World::Update() DIAG_TIMER_LAP("World::Update", "Events::worldUpdateBegin"); - // // Added by zhangshuai 2019.10.24 for non-block MPI communication----Begin - // if (1 == this->flag && this->mpi_flag == true) - // { + // Added by zhangshuai 2019.10.24 for non-block MPI communication----Begin + if (1 == this->flag && this->mpi_flag == true) + { - // // Added by zhangshuai 2019.04.03 for count time ----Begin - // #ifdef USE_COUNT_TIME - // gettimeofday(&tv, NULL); - // cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; - // #endif + // Added by zhangshuai 2019.04.03 for count time ----Begin +#ifdef USE_COUNT_TIME + gettimeofday(&tv, NULL); + cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; +#endif - // // MPI_Barrier(MPI_COMM_WORLD); + MPI_Barrier(MPI_COMM_WORLD); - // // MPI_Wait(&request, &status); + // Added by zhangshuai 2019.04.03 for count time ----Begin +#ifdef USE_COUNT_TIME + gettimeofday(&tv, NULL); + barrierTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; +#endif - // int test_flag; - // MPI_Test(&request, &test_flag, &status); - // while (test_flag == false) - // { - // std::cout << "MPI_Test flag : false" << std::endl; - // MPI_Test(&request, &test_flag, &status); - // } + // Added by zhangshuai 2019.04.03 for count time ----Begin +#ifdef USE_COUNT_TIME + gettimeofday(&tv, NULL); + cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; +#endif - // // Added by zhangshuai 2019.04.03 for count time ----Begin - // #ifdef USE_COUNT_TIME - // gettimeofday(&tv, NULL); - // barrierTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; - // #endif + MPI_Wait(&request, &status); + // MPI_Wait(&request, MPI_STATUS_IGNORE); - // // MPI_Barrier(MPI_COMM_WORLD); + // Added by zhangshuai 2019.04.03 for count time ----Begin +#ifdef USE_COUNT_TIME + gettimeofday(&tv, NULL); + waitTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; +#endif - // // Added by zhangshuai 2019.04.03 for count time ----Begin - // #ifdef USE_COUNT_TIME - // gettimeofday(&tv, NULL); - // cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; - // #endif - // // Added by zhangshuai 2019.04.03 for count time ----End + // Added by zhangshuai 2019.04.03 for count time ----Begin +#ifdef USE_COUNT_TIME + gettimeofday(&tv, NULL); + cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; +#endif + // Added by zhangshuai 2019.04.03 for count time ----End - // //receive and get information from other processes - // int tmp_gazebo_count = this->distribution->GetGazeboCount(); - // for (int tmp_gazebo_id = 0; tmp_gazebo_id < tmp_gazebo_count; tmp_gazebo_id++) - // { - // if (this->gazeboLocalID != tmp_gazebo_id) - // { - // unsigned int tmp_model_count = this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelCount(); - // CommunicationData *tmpBufferData = new CommunicationData[tmp_model_count]; + //receive and get information from other processes + int tmp_gazebo_count = this->distribution->GetGazeboCount(); + for (int tmp_gazebo_id = 0; tmp_gazebo_id < tmp_gazebo_count; tmp_gazebo_id++) + { + if (this->gazeboLocalID != tmp_gazebo_id) + { + unsigned int tmp_model_count = this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelCount(); + CommunicationData *tmpBufferData = new CommunicationData[tmp_model_count]; - // memcpy(tmpBufferData, (receiveBuffer + this->displs[tmp_gazebo_id]), this->bufferLen[tmp_gazebo_id]); + memcpy(tmpBufferData, (receiveBuffer + this->displs[tmp_gazebo_id]), this->bufferLen[tmp_gazebo_id]); - // for (unsigned int i = 0; i < tmp_model_count; i++) - // { - // // this->GetModel(tmp_model_name)->GetLink("canonical")->SetWorldPose(tmpBufferData[i].model_pose); // reserve + for (unsigned int i = 0; i < tmp_model_count; i++) + { + // this->GetModel(tmp_model_name)->GetLink("canonical")->SetWorldPose(tmpBufferData[i].model_pose); // reserve - // // this->GetModelById(this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelID(i))->SetWorldPose(tmpBufferData[i].model_pose); - // this->GetModelById(this->worldModelIDs_V[tmp_gazebo_id][i])->SetWorldPose(tmpBufferData[i].model_pose); - // } + // this->GetModelById(this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelID(i))->SetWorldPose(tmpBufferData[i].model_pose); + this->GetModelById(this->worldModelIDs_V[tmp_gazebo_id][i])->SetWorldPose(tmpBufferData[i].model_pose); + } - // delete[] tmpBufferData; - // } - // } - // // Added by zhangshuai 2019.04.03 for count time ----Begin - // #ifdef USE_COUNT_TIME - // gettimeofday(&tv, NULL); - // after_mpiTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; - // #endif - // // Added by zhangshuai 2019.04.03 for count time ----End - // } - // // Added by zhangshuai 2019.10.24 for non-block MPI communication ----End + delete[] tmpBufferData; + } + } + // Added by zhangshuai 2019.04.03 for count time ----Begin +#ifdef USE_COUNT_TIME + gettimeofday(&tv, NULL); + after_mpiTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; +#endif + // Added by zhangshuai 2019.04.03 for count time ----End + } + // Added by zhangshuai 2019.10.24 for non-block MPI communication ----End // Added by zhangshuai 2019.04.03 for count time ----Begin #ifdef USE_COUNT_TIME @@ -1099,8 +1104,6 @@ void World::Update() MPI_Iallgatherv(this->sendBuffer, this->sendBufferLen, MPI_CHAR, this->receiveBuffer, this->bufferLen, this->displs, MPI_CHAR, MPI_COMM_WORLD, &request); // MPI_Allgatherv(this->sendBuffer, this->sendBufferLen, MPI_CHAR, this->receiveBuffer, this->bufferLen, this->displs, MPI_CHAR, MPI_COMM_WORLD); - // MPI_Barrier(MPI_COMM_WORLD); - // Added by zhangshuai 2019.04.03 for count time ----Begin #ifdef USE_COUNT_TIME gettimeofday(&tv, NULL); @@ -1108,71 +1111,72 @@ void World::Update() #endif // Added by zhangshuai 2019.04.03 for count time ----End - // this->mpi_flag = true; + this->mpi_flag = true; - gazebo::common::Time::NSleep(200000); + // // Added by zhangshuai 2019.04.03 for count time ----Begin + // #ifdef USE_COUNT_TIME + // gettimeofday(&tv, NULL); + // cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; + // #endif - // Added by zhangshuai 2019.04.03 for count time ----Begin -#ifdef USE_COUNT_TIME - gettimeofday(&tv, NULL); - cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; -#endif + // MPI_Barrier(MPI_COMM_WORLD); - // MPI_Barrier(MPI_COMM_WORLD); + // // Added by zhangshuai 2019.04.03 for count time ----Begin + // #ifdef USE_COUNT_TIME + // gettimeofday(&tv, NULL); + // barrierTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; + // #endif - MPI_Wait(&request, &status); + // // Added by zhangshuai 2019.04.03 for count time ----Begin + // #ifdef USE_COUNT_TIME + // gettimeofday(&tv, NULL); + // cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; + // #endif - // int test_flag; - // MPI_Test(&request, &test_flag, &status); - // while (test_flag == false) - // { - // std::cout << "MPI_Test flag : false" << std::endl; - // MPI_Test(&request, &test_flag, &status); - // } + // MPI_Wait(&request, &status); + // // MPI_Wait(&request, MPI_STATUS_IGNORE); - // Added by zhangshuai 2019.04.03 for count time ----Begin -#ifdef USE_COUNT_TIME - gettimeofday(&tv, NULL); - barrierTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; -#endif + // // Added by zhangshuai 2019.04.03 for count time ----Begin + // #ifdef USE_COUNT_TIME + // gettimeofday(&tv, NULL); + // waitTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; + // #endif - // MPI_Barrier(MPI_COMM_WORLD); + // // Added by zhangshuai 2019.04.03 for count time ----Begin + // #ifdef USE_COUNT_TIME + // gettimeofday(&tv, NULL); + // cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; + // #endif + // // Added by zhangshuai 2019.04.03 for count time ----End - // Added by zhangshuai 2019.04.03 for count time ----Begin -#ifdef USE_COUNT_TIME - gettimeofday(&tv, NULL); - cur_time = (double)tv.tv_sec + (double)tv.tv_usec / 1.e6; -#endif - // Added by zhangshuai 2019.04.03 for count time ----End + // //receive and get information from other processes + // int tmp_gazebo_count = this->distribution->GetGazeboCount(); + // for (int tmp_gazebo_id = 0; tmp_gazebo_id < tmp_gazebo_count; tmp_gazebo_id++) + // { + // if (this->gazeboLocalID != tmp_gazebo_id) + // { + // unsigned int tmp_model_count = this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelCount(); + // CommunicationData *tmpBufferData = new CommunicationData[tmp_model_count]; - //receive and get information from other processes - int tmp_gazebo_count = this->distribution->GetGazeboCount(); - for (int tmp_gazebo_id = 0; tmp_gazebo_id < tmp_gazebo_count; tmp_gazebo_id++) - { - if (this->gazeboLocalID != tmp_gazebo_id) - { - unsigned int tmp_model_count = this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelCount(); - CommunicationData *tmpBufferData = new CommunicationData[tmp_model_count]; + // memcpy(tmpBufferData, (receiveBuffer + this->displs[tmp_gazebo_id]), this->bufferLen[tmp_gazebo_id]); - memcpy(tmpBufferData, (receiveBuffer + this->displs[tmp_gazebo_id]), this->bufferLen[tmp_gazebo_id]); + // for (unsigned int i = 0; i < tmp_model_count; i++) + // { + // // this->GetModel(tmp_model_name)->GetLink("canonical")->SetWorldPose(tmpBufferData[i].model_pose); // reserve - for (unsigned int i = 0; i < tmp_model_count; i++) - { - // this->GetModel(tmp_model_name)->GetLink("canonical")->SetWorldPose(tmpBufferData[i].model_pose); // reserve + // // this->GetModelById(this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelID(i))->SetWorldPose(tmpBufferData[i].model_pose); + // this->GetModelById(this->worldModelIDs_V[tmp_gazebo_id][i])->SetWorldPose(tmpBufferData[i].model_pose); + // } - // this->GetModelById(this->distribution->GetGazeboIDPtr(tmp_gazebo_id)->GetModelID(i))->SetWorldPose(tmpBufferData[i].model_pose); - this->GetModelById(this->worldModelIDs_V[tmp_gazebo_id][i])->SetWorldPose(tmpBufferData[i].model_pose); - } - - delete[] tmpBufferData; - } - } - // Added by zhangshuai 2019.04.03 for count time ----Begin -#ifdef USE_COUNT_TIME - gettimeofday(&tv, NULL); - after_mpiTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; -#endif - // Added by zhangshuai 2019.04.03 for count time ----End + // delete[] tmpBufferData; + // } + // } + // // Added by zhangshuai 2019.04.03 for count time ----Begin + // #ifdef USE_COUNT_TIME + // gettimeofday(&tv, NULL); + // after_mpiTime += (double)tv.tv_sec + (double)tv.tv_usec / 1.e6 - cur_time; + // #endif + // // Added by zhangshuai 2019.04.03 for count time ----End } // Added by zhangshuai 2019.04.23 for MPI communication ----End @@ -1208,6 +1212,7 @@ void World::Update() updatePhysicsTime2 = updatePhysicsTime; before_mpiTime2 = before_mpiTime; barrierTime2 = barrierTime; + waitTime2 = waitTime; mpiTime2 = mpiTime; after_mpiTime2 = after_mpiTime; wholeUpdataTime2 = wholeUpdataTime; @@ -1227,6 +1232,7 @@ void World::Update() double ave_updateCollisionTime = (updateCollisionTime - updateCollisionTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations); double ave_updatePhysicsTime = (updatePhysicsTime - updatePhysicsTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations); double ave_barrierTime = (barrierTime - barrierTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations); + double ave_waitTime = (waitTime - waitTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations); double ave_before_mpiTime = (before_mpiTime - before_mpiTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations); double ave_mpiTime = (mpiTime - mpiTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations); double ave_after_mpiTime = (after_mpiTime - after_mpiTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations); @@ -1237,6 +1243,7 @@ void World::Update() double perce_updateCollisionTime = (ave_updateCollisionTime / ave_wholeStepTime) * 100; double perce_updatePhysicsTime = (ave_updatePhysicsTime / ave_wholeStepTime) * 100; double perce_barrierTime = (ave_barrierTime / ave_wholeStepTime) * 100; + double perce_waitTime = (ave_waitTime / ave_wholeStepTime) * 100; double perce_wholeMpiTime = (ave_wholeMpiTime / ave_wholeStepTime) * 100; double perce_othersTime = (ave_othersTime / ave_wholeStepTime) * 100; @@ -1250,36 +1257,31 @@ void World::Update() std::cout << "***************************************************************************" << std::endl; std::cout << "===== average worldUpdateBeginTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_worldUpdateBeginTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_worldUpdateBeginTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average updateCollisionTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_updateCollisionTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_updateCollisionTime << "%)" + std::cout << "===== average updateCollisionTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_updateCollisionTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_updateCollisionTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average updatePhysicsTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_updatePhysicsTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_updatePhysicsTime << "%)" + std::cout << "===== average updatePhysicsTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_updatePhysicsTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_updatePhysicsTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average barrierTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_barrierTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_barrierTime << "%)" + std::cout << "===== average barrierTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_barrierTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_barrierTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average wholeMpiTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_wholeMpiTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_wholeMpiTime << "%)" + std::cout << "===== average waitTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_waitTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_waitTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average othersTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_othersTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_othersTime << "%)" + std::cout << "===== average wholeMpiTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_wholeMpiTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_wholeMpiTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average wholeStepTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_wholeStepTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << 100.0 << "%)" + std::cout << "===== average othersTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_othersTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_othersTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average RTF:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(3) << ave_RTF << "\t =====\t" << this->gazeboLocalID << std::endl; + std::cout << "===== average wholeStepTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_wholeStepTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << 100.0 << "%)" + << "\tms =====\t" << this->gazeboLocalID << std::endl; + std::cout << "===== average RTF :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(3) << ave_RTF << "\t =====\t" << this->gazeboLocalID << std::endl; std::cout << "---------------------------------------------------------------------------" << std::endl; - std::cout << "===== average before_mpiTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_before_mpiTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_before_mpiTime << "%)" + std::cout << "===== average before_mpiTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_before_mpiTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_before_mpiTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average mpiTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_mpiTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_mpiTime << "%)" + std::cout << "===== average mpiTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_mpiTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_mpiTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; - std::cout << "===== average after_mpiTime:\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_after_mpiTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_after_mpiTime << "%)" + std::cout << "===== average after_mpiTime :\t" << std::setiosflags(std::ios::fixed) << std::setprecision(4) << ave_after_mpiTime << " (" << std::setiosflags(std::ios::fixed) << std::setprecision(2) << perce_after_mpiTime << "%)" << "\tms =====\t" << this->gazeboLocalID << std::endl; std::cout << "***************************************************************************" << std::endl; - // std::cout << "===== average before_worldUpdateBeginTime:\t" << (before_worldUpdateBeginTime - before_worldUpdateBeginTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations) << "\tms =====\t" << this->gazeboLocalID << std::endl; - // std::cout << "===== average modelUpdateFuncTime:\t" << (modelUpdateFuncTime - modelUpdateFuncTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations) << "\tms =====\t" << this->gazeboLocalID << std::endl; - // std::cout << "===== average loggingTime:\t" << (loggingTime - loggingTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations) << "\tms =====\t" << this->gazeboLocalID << std::endl; - // std::cout << "===== average before_updatePhysicsTime:\t" << (before_updatePhysicsTime - before_updatePhysicsTime2) * 1000.0 / (this->dataPtr->iterations - start_iterations) << "\tms =====\t" << this->gazeboLocalID << std::endl; - // double wholeAddTime = before_worldUpdateBeginTime + worldUpdateBeginTime + modelUpdateFuncTime + updateCollisionTime + loggingTime + before_updatePhysicsTime + updatePhysicsTime + before_mpiTime + mpiTime + after_mpiTime - (before_worldUpdateBeginTime2 + worldUpdateBeginTime2 + modelUpdateFuncTime2 + updateCollisionTime2 + loggingTime2 + before_updatePhysicsTime2 + updatePhysicsTime2 + before_mpiTime2 + mpiTime2 + after_mpiTime2); - // std::cout << "===== average wholeAddTime:\t" << wholeAddTime * 1000.0 / (this->dataPtr->iterations - start_iterations) << "\tms =====\t" << this->gazeboLocalID << std::endl; - // } // // test for worldModelIDs_V Begin 2019.10.24 diff --git a/Gazebo_Distributed_MPI/mpi_run/MPI_Gazebo_pause.sh b/Gazebo_Distributed_MPI/mpi_run/MPI_Gazebo_pause.sh new file mode 100755 index 0000000..7233ae4 --- /dev/null +++ b/Gazebo_Distributed_MPI/mpi_run/MPI_Gazebo_pause.sh @@ -0,0 +1,12 @@ +#!/bin/bash +################################################################################################################################################### +# Author: Zhang Shuai # +# Date: 2019-10-29 # +################################################################################################################################################### + +export GAZEBO_MASTER_URI=http://localhost:11345 +gz world -p 1 +export GAZEBO_MASTER_URI=http://localhost:11346 +gz world -p 1 + +exit 0 diff --git a/Gazebo_Distributed_MPI/mpi_run/MPI_Gazebo_start.sh b/Gazebo_Distributed_MPI/mpi_run/MPI_Gazebo_start.sh new file mode 100755 index 0000000..970c1b3 --- /dev/null +++ b/Gazebo_Distributed_MPI/mpi_run/MPI_Gazebo_start.sh @@ -0,0 +1,12 @@ +#!/bin/bash +################################################################################################################################################### +# Author: Zhang Shuai # +# Date: 2019-10-29 # +################################################################################################################################################### + +export GAZEBO_MASTER_URI=http://localhost:11345 +gz world -p 0 +export GAZEBO_MASTER_URI=http://localhost:11346 +gz world -p 0 + +exit 0 diff --git a/Gazebo_Distributed_MPI/mpi_run/hostfile b/Gazebo_Distributed_MPI/mpi_run/hostfile index 2c2a9fe..7ff788c 100644 --- a/Gazebo_Distributed_MPI/mpi_run/hostfile +++ b/Gazebo_Distributed_MPI/mpi_run/hostfile @@ -1,3 +1,3 @@ -airc05-Precision-7920-Tower slots=1 -airc02-PowerEdge-T640 slots=1 +airc05-Precision-7920-Tower slots=2 +#airc02-PowerEdge-T640 slots=1 #airc03-PowerEdge-T640 slots=1 diff --git a/Gazebo_Distributed_MPI/mpi_run/rankfile b/Gazebo_Distributed_MPI/mpi_run/rankfile index d43d3f9..8bc71d6 100755 --- a/Gazebo_Distributed_MPI/mpi_run/rankfile +++ b/Gazebo_Distributed_MPI/mpi_run/rankfile @@ -1,2 +1,2 @@ -rank 0=airc05-Precision-7920-Tower slot=0 -rank 1=airc02-PowerEdge-T640 slot=0 +rank 0=airc05-Precision-7920-Tower slot=0-3 +rank 1=airc05-Precision-7920-Tower slot=20-23 diff --git a/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/launch/hector_32_single_gazebo_mpi_spawn_test_xxx.launch b/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/launch/hector_32_single_gazebo_mpi_spawn_test_xxx.launch new file mode 100644 index 0000000..48361d5 --- /dev/null +++ b/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/launch/hector_32_single_gazebo_mpi_spawn_test_xxx.launch @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/launch/hector_32_single_gazebo_mpi_spawn_test_yyy.launch b/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/launch/hector_32_single_gazebo_mpi_spawn_test_yyy.launch new file mode 100644 index 0000000..ed13a98 --- /dev/null +++ b/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/launch/hector_32_single_gazebo_mpi_spawn_test_yyy.launch @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/worlds/kunming_airport_distribution_32hector_mpi_test.world b/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/worlds/kunming_airport_distribution_32hector_mpi_test.world new file mode 100644 index 0000000..386c4dd --- /dev/null +++ b/Gazebo_Hector_Test/src/hector_quadrotor/hector_quadrotor_gazebo/worlds/kunming_airport_distribution_32hector_mpi_test.world @@ -0,0 +1,324 @@ + + + + + + model://sun + + + + model://kunming_airport + 0 0 0 0 0 0 + + + + 0.68 0.68 0.68 1.0 + + + + 0 + + + + + + + + bebop_0 + bebop_1 + bebop_2 + bebop_3 + bebop_4 + bebop_5 + bebop_6 + bebop_7 + bebop_8 + bebop_9 + bebop_10 + bebop_11 + bebop_12 + bebop_13 + bebop_14 + bebop_15 + bebop_16 + bebop_17 + bebop_18 + bebop_19 + bebop_20 + bebop_21 + bebop_22 + bebop_23 + bebop_24 + bebop_25 + bebop_26 + bebop_27 + bebop_28 + bebop_29 + + + bebop_30 + bebop_31 + + + + + 0 + 0.001 + 0 + + + + + + 0 + + + + + + + +