1 #include <libmesh/parallel.h> 28 CPPUNIT_TEST( testMinlocReal );
29 CPPUNIT_TEST( testMaxlocReal );
37 CPPUNIT_TEST( testSemiVerify );
40 CPPUNIT_TEST_SUITE_END();
70 std::vector<processor_id_type> vals;
75 CPPUNIT_ASSERT_EQUAL( i , vals[i] );
84 std::vector<std::string> vals;
89 CPPUNIT_ASSERT_EQUAL(
"Processor" + _number[i % 10] , vals[i] );
98 std::vector<processor_id_type> vals;
102 CPPUNIT_ASSERT_EQUAL( i , vals[i] );
111 std::vector<std::string> vals;
115 CPPUNIT_ASSERT_EQUAL(
"Processor" + _number[i % 10] , vals[i] );
124 std::vector<std::string> vals;
131 CPPUNIT_ASSERT_EQUAL(
"Processor" + _number[i % 10] +
"A" , vals[2*i] );
132 CPPUNIT_ASSERT_EQUAL(
"Processor" + _number[i % 10] +
"B" , vals[2*i+1] );
142 std::vector<std::string> vals;
145 CPPUNIT_ASSERT( vals.empty() );
154 std::vector<std::string> vals;
157 vals.push_back(
"Proc 0 only");
161 CPPUNIT_ASSERT_EQUAL( vals[0], std::string(
"Proc 0 only") );
172 std::vector<unsigned int> src{0,1,2}, dest(3,0);
179 for (std::size_t i=0; i<3; i++)
180 CPPUNIT_ASSERT_EQUAL( src[i] , dest[i] );
190 typedef pair<pair<pair<pair<int, int>,
int>,
int>,
int> pppp;
191 std::vector<pppp> src(3), dest(3);
193 src[0].first.first.first.first=0;
194 src[0].first.first.first.second=-1;
195 src[0].first.second = -2;
197 src[1].first.first.first.first=10;
198 src[1].first.first.first.second=9;
199 src[1].first.second = 8;
201 src[2].first.first.first.first=20;
202 src[2].first.first.first.second=19;
203 src[2].first.second = 18;
211 for (std::size_t i=0; i<src.size(); i++)
213 CPPUNIT_ASSERT_EQUAL(src[i].first.first.first.first,
214 dest[i].first.first.first.first);
215 CPPUNIT_ASSERT_EQUAL(src[i].first.first.first.second,
216 dest[i].first.first.first.second);
217 CPPUNIT_ASSERT_EQUAL(src[i].first.first.second,
218 dest[i].first.first.second);
219 CPPUNIT_ASSERT_EQUAL(src[i].first.second,
220 dest[i].first.second);
221 CPPUNIT_ASSERT_EQUAL(src[i].second,
234 std::vector<processor_id_type> src;
251 std::vector<unsigned int> src;
252 std::vector<unsigned int> dest;
253 static const unsigned int CHUNK_SIZE = 3;
258 for (std::size_t i=0; i<src.size(); i++)
264 for (
unsigned int i=0; i<CHUNK_SIZE; i++)
270 std::vector<unsigned int> src;
271 std::vector<unsigned int> dest;
272 std::vector<int> counts;
280 for (std::size_t i=0; i<src.size(); i++)
283 counts[i] = static_cast<int>(i+1);
290 CPPUNIT_ASSERT_EQUAL( start_value + i, dest[i] );
295 std::vector<std::vector<unsigned int>> src;
296 std::vector<unsigned int> dest;
302 for (std::size_t i=0; i<src.size(); ++i)
305 unsigned int global_counter = 0;
306 for (std::size_t i=0; i<src.size(); i++)
307 for (std::size_t j=0; j<src[i].size(); j++)
308 src[i][j] = global_counter++;
315 CPPUNIT_ASSERT_EQUAL( start_value + i, dest[i] );
338 CPPUNIT_ASSERT_EQUAL (min, static_cast<unsigned int>(0));
351 CPPUNIT_ASSERT_EQUAL (cast_int<processor_id_type>(max+1),
362 unsigned int minid = 0;
366 CPPUNIT_ASSERT_EQUAL (min, static_cast<int>(0));
367 CPPUNIT_ASSERT_EQUAL (minid, static_cast<unsigned int>(
TestCommWorld->
size()-1));
377 unsigned int maxid = 0;
381 CPPUNIT_ASSERT_EQUAL (max+1,
383 CPPUNIT_ASSERT_EQUAL (maxid, static_cast<unsigned int>(
TestCommWorld->
size()-1));
393 unsigned int minid = 0;
397 CPPUNIT_ASSERT_EQUAL (min,
Real(0));
398 CPPUNIT_ASSERT_EQUAL (minid, static_cast<unsigned int>(
TestCommWorld->
size()-1));
408 unsigned int maxid = 0;
414 CPPUNIT_ASSERT_EQUAL (maxid, static_cast<unsigned int>(
TestCommWorld->
size()-1));
423 double min = std::numeric_limits<double>::infinity();
427 CPPUNIT_ASSERT_EQUAL (min, std::numeric_limits<double>::infinity());
429 min = -std::numeric_limits<double>::infinity();
433 CPPUNIT_ASSERT_EQUAL (min, -std::numeric_limits<double>::infinity());
442 double max = std::numeric_limits<double>::infinity();
446 CPPUNIT_ASSERT_EQUAL (max, std::numeric_limits<double>::infinity());
448 max = -std::numeric_limits<double>::infinity();
452 CPPUNIT_ASSERT_EQUAL (max, -std::numeric_limits<double>::infinity());
467 std::vector<unsigned int> src_val(3), recv_val(3);
489 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
491 for (std::size_t i=0; i<src_val.size(); i++)
492 CPPUNIT_ASSERT_EQUAL( src_val[i] , recv_val[i] );
497 std::fill (recv_val.begin(), recv_val.end(), 0);
508 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
510 for (std::size_t i=0; i<src_val.size(); i++)
511 CPPUNIT_ASSERT_EQUAL( src_val[i] , recv_val[i] );
530 std::vector<unsigned int> src_val(3), recv_val(3);
552 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
554 for (std::size_t i=0; i<src_val.size(); i++)
555 CPPUNIT_ASSERT_EQUAL( src_val[i] , recv_val[i] );
559 std::fill (recv_val.begin(), recv_val.end(), 0);
571 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
573 for (std::size_t i=0; i<src_val.size(); i++)
574 CPPUNIT_ASSERT_EQUAL( src_val[i] , recv_val[i] );
592 std::set<unsigned int> src_val, recv_val;
596 src_val.insert(1337);
607 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
609 for (std::set<unsigned int>::const_iterator
610 it = src_val.begin(), end = src_val.end(); it != end;
612 CPPUNIT_ASSERT ( recv_val.count(*it) );
632 std::vector<std::vector<unsigned int> > src_val(3), recv_val;
634 src_val[0].push_back(4);
635 src_val[2].push_back(procup);
647 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
649 for (std::size_t i = 0; i != 3; ++i)
650 CPPUNIT_ASSERT_EQUAL ( src_val[i].size(), recv_val[i].size() );
652 CPPUNIT_ASSERT_EQUAL ( recv_val[0][0], static_cast<unsigned int> (4) );
653 CPPUNIT_ASSERT_EQUAL ( recv_val[2][0], static_cast<unsigned int> (
TestCommWorld->
rank()) );
654 CPPUNIT_ASSERT_EQUAL ( recv_val[2][1], procdown );
677 std::vector<std::vector<unsigned int> > src_val(3), recv_val;
679 src_val[0].push_back(4);
680 src_val[2].push_back(procup);
692 CPPUNIT_ASSERT_EQUAL ( src_val.size() , recv_val.size() );
694 for (std::size_t i = 0; i != 3; ++i)
695 CPPUNIT_ASSERT_EQUAL ( src_val[i].size(), recv_val[i].size() );
697 CPPUNIT_ASSERT_EQUAL ( recv_val[0][0], static_cast<unsigned int> (4) );
698 CPPUNIT_ASSERT_EQUAL ( recv_val[2][0], static_cast<unsigned int> (
TestCommWorld->
rank()) );
699 CPPUNIT_ASSERT_EQUAL ( recv_val[2][1], procdown );
711 double inf = std::numeric_limits<double>::infinity();
717 inf = -std::numeric_limits<double>::infinity();
729 unsigned int color = rank % 2;
732 CPPUNIT_ASSERT(subcomm.
size() >= 1);
744 Parallel::info i = 0;
746 #ifdef LIBMESH_HAVE_MPI 747 type = MPI_COMM_TYPE_SHARED;
752 CPPUNIT_ASSERT(subcomm.
size() >= 1);
void testBroadcast(Container &&src)
void send_mode(const SendMode sm)
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
void testAllGatherHalfEmptyVectorString()
void testAllGatherEmptyVectorString()
void scatter(const std::vector< T, A > &data, T &recv, const unsigned int root_id=0) const
void testBroadcastNestedType()
void minloc(T &r, unsigned int &min_id) const
libMesh::Parallel::Communicator * TestCommWorld
void testAllGatherEmptyVectorString()
void gather(const unsigned int root_id, const T &send_data, std::vector< T, A > &recv) const
void testAllGatherString()
processor_id_type rank() const
void testBroadcastNestedType()
The libMesh namespace provides an interface to certain functionality in the library.
void testAllGatherHalfEmptyVectorString()
void testRecvIsendVecVecs()
void testAllGatherString()
void testSendRecvVecVecs()
processor_id_type size() const
uint8_t processor_id_type
Status receive(const unsigned int dest_processor_id, T &buf, const MessageTag &tag=any_tag) const
void min(const T &r, T &o, Request &req) const
void testAllGatherVectorString()
bool semiverify(const T *r) const
void testAllGatherVectorString()
void split(int color, int key, Communicator &target) const
void maxloc(T &r, unsigned int &max_id) const
void broadcast(T &data, const unsigned int root_id=0, const bool identical_sizes=false) const
void split_by_type(int split_type, int key, info i, Communicator &target) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void max(const T &r, T &o, Request &req) const
void send(const unsigned int dest_processor_id, const T &buf, const MessageTag &tag=no_tag) const
CPPUNIT_TEST_SUITE_REGISTRATION(ParallelTest)
void testRecvIsendVecVecs()
void testSendRecvVecVecs()
std::vector< std::string > _number