54 #include <Teuchos_GlobalMPISession.hpp> 55 #include <Teuchos_RCP.hpp> 59 #define MAX(a,b) ((a) > (b) ? (a) : (b)) 61 #ifdef HAVE_ZOLTAN2_SCOTCH 65 #ifndef HAVE_ZOLTAN2_MPI 71 #endif // HAVE_ZOLTAN2_SCOTCH 73 #ifdef HAVE_ZOLTAN2_PARMETIS 79 #define PARMETIS_IS_OK 1 81 #endif // HAVE_ZOLTAN2_MPI 85 std::cout << (s) << " " << __FILE__ << ":" << __LINE__ << std::endl 87 int main(
int argc,
char *argv[])
89 Teuchos::GlobalMPISession session(&argc, &argv);
103 catch (std::exception &e) {
109 unsigned int zgno = 123;
112 catch (std::exception &e) {
113 PRINTMSG(
"FAIL: unsigned int to int");
121 catch (std::exception &e) {
130 catch (std::exception &e) {
137 long long zgno = (
long long)1 << 40;
140 catch (std::exception &e) {
141 PRINTMSG(
"GOOD: big long long to int throws exception");
145 size_t zgno = (size_t)1 << 40;
148 catch (std::exception &e) {
149 PRINTMSG(
"GOOD: big size_t to int throws exception");
153 unsigned zgno = (1 << 31) + 1;
156 catch (std::exception &e) {
157 PRINTMSG(
"GOOD: huge unsigned to int throws exception");
167 long long zgno = (
long long)1 << 40;
170 catch (std::exception &e) {
171 PRINTMSG(
"FAIL: big long long to size_t");
176 size_t zgno = (size_t)1 << 40;
179 catch (std::exception &e) {
180 PRINTMSG(
"FAIL: big size_t to size_t");
191 long long zgno = (
long long)1 << 40;
194 catch (std::exception &e) {
195 PRINTMSG(
"FAIL: big long long to int64_t");
200 size_t zgno = (size_t)1 << 40;
203 catch (std::exception &e) {
204 PRINTMSG(
"FAIL: big size_t to int64_t");
210 size_t zgno = ((size_t)1 << 63) + 1 ;
213 catch (std::exception &e) {
214 PRINTMSG(
"GOOD: huge size_t to int64_t threw exception");
217 #ifdef HAVE_ZOLTAN2_SCOTCH 221 SCOTCH_Num scotchIdx;
229 catch (std::exception &e) {
230 PRINTMSG(
"FAIL: int to SCOTCH_Num");
235 unsigned int zgno = 123;
238 catch (std::exception &e) {
239 PRINTMSG(
"FAIL: unsigned int to SCOTCH_Num");
247 catch (std::exception &e) {
248 PRINTMSG(
"FAIL: long to SCOTCH_Num");
256 catch (std::exception &e) {
257 PRINTMSG(
"FAIL: size_t to SCOTCH_Num");
261 if (
sizeof(SCOTCH_Num) == 8) {
264 long long zgno = (
long long)1 << 40;
267 catch (std::exception &e) {
268 PRINTMSG(
"FAIL: big unsigned int to SCOTCH_Num");
273 size_t zgno = (size_t)1 << 40;
276 catch (std::exception &e) {
277 PRINTMSG(
"FAIL: big size_t to SCOTCH_Num");
283 if (
sizeof(SCOTCH_Num) == 4) {
285 long long zgno = (
long long)1 << 40;
288 catch (std::exception &e) {
289 PRINTMSG(
"GOOD: big long long to 4-byte SCOTCH_Num throws exception");
293 size_t zgno = (size_t)1 << 40;
296 catch (std::exception &e) {
297 PRINTMSG(
"GOOD: big size_t to 4-byte SCOTCH_Num throws exception");
301 #endif // HAVE_ZOLTAN2_SCOTCH 303 #ifdef PARMETIS_IS_OK 315 catch (std::exception &e) {
316 PRINTMSG(
"FAIL: int to ParMETIS' idx_t");
321 unsigned int zgno = 123;
324 catch (std::exception &e) {
325 PRINTMSG(
"FAIL: unsigned int to ParMETIS' idx_t");
333 catch (std::exception &e) {
334 PRINTMSG(
"FAIL: long to ParMETIS' idx_t");
342 catch (std::exception &e) {
343 PRINTMSG(
"FAIL: size_t to ParMETIS' idx_t");
347 if (
sizeof(idx_t) == 8) {
350 long long zgno = (
long long)1 << 40;
353 catch (std::exception &e) {
354 PRINTMSG(
"FAIL: big unsigned int to ParMETIS' idx_t");
359 size_t zgno = (size_t)1 << 40;
362 catch (std::exception &e) {
363 PRINTMSG(
"FAIL: big size_t to ParMETIS' idx_t");
369 if (
sizeof(idx_t) == 4) {
371 long long zgno = (
long long)1 << 40;
374 catch (std::exception &e) {
375 PRINTMSG(
"GOOD: big long long to 4-byte ParMETIS' idx_t throws exception");
379 size_t zgno = (size_t)1 << 40;
382 catch (std::exception &e) {
383 PRINTMSG(
"GOOD: big size_t to 4-byte ParMETIS' idx_t throws exception");
391 ZOLTAN_ID_PTR zoltanGID =
new ZOLTAN_ID_TYPE[4];
396 zoltanGID[0] = 0; zoltanGID[1] = 0; zoltanGID[2] = 0; zoltanGID[3] = 0;
398 int num_gid =
MAX(1,
sizeof(test_t) /
sizeof(ZOLTAN_ID_TYPE));
400 PRINTMSG(
"FAIL: NUM_ID wrong for char");
405 if (zoltanGID[0] != ZOLTAN_ID_TYPE(zgno) || zoltanGID[1] != 0 ||
406 zoltanGID[2] != 0 || zoltanGID[3] != 0) {
407 PRINTMSG(
"FAIL: char to ZOLTAN_ID_PTR");
414 PRINTMSG(
"FAIL: ZOLTAN_ID_PTR to char");
420 typedef short test_t;
422 zoltanGID[0] = 0; zoltanGID[1] = 0; zoltanGID[2] = 0; zoltanGID[3] = 0;
424 int num_gid =
MAX(1,
sizeof(test_t) /
sizeof(ZOLTAN_ID_TYPE));
426 PRINTMSG(
"FAIL: NUM_ID wrong for short");
431 if (zoltanGID[0] != ZOLTAN_ID_TYPE(zgno) || zoltanGID[1] != 0 ||
432 zoltanGID[2] != 0 || zoltanGID[3] != 0) {
433 PRINTMSG(
"FAIL: short to ZOLTAN_ID_PTR");
440 PRINTMSG(
"FAIL: ZOLTAN_ID_PTR to short");
448 zoltanGID[0] = 0; zoltanGID[1] = 0; zoltanGID[2] = 0; zoltanGID[3] = 0;
450 int num_gid =
MAX(1,
sizeof(test_t) /
sizeof(ZOLTAN_ID_TYPE));
452 PRINTMSG(
"FAIL: NUM_ID wrong for int");
457 if (zoltanGID[0] != ZOLTAN_ID_TYPE(zgno) || zoltanGID[1] != 0 ||
458 zoltanGID[2] != 0 || zoltanGID[3] != 0) {
459 PRINTMSG(
"FAIL: int to ZOLTAN_ID_PTR");
466 PRINTMSG(
"FAIL: ZOLTAN_ID_PTR to int");
472 typedef unsigned int test_t;
474 zoltanGID[0] = 0; zoltanGID[1] = 0; zoltanGID[2] = 0; zoltanGID[3] = 0;
476 int num_gid =
MAX(1,
sizeof(test_t) /
sizeof(ZOLTAN_ID_TYPE));
478 PRINTMSG(
"FAIL: NUM_ID wrong for unsigned int");
483 if (zoltanGID[0] != zgno || zoltanGID[1] != 0 ||
484 zoltanGID[2] != 0 || zoltanGID[3] != 0) {
485 PRINTMSG(
"FAIL: unsigned int to ZOLTAN_ID_PTR");
492 PRINTMSG(
"FAIL: ZOLTAN_ID_PTR to unsigned int");
498 typedef long long test_t;
499 test_t zgno = ((test_t)1 << 34) + (test_t)17;
500 zoltanGID[0] = 0; zoltanGID[1] = 0; zoltanGID[2] = 0; zoltanGID[3] = 0;
502 int num_gid =
MAX(1,
sizeof(test_t) /
sizeof(ZOLTAN_ID_TYPE));
504 PRINTMSG(
"FAIL: NUM_ID wrong for long long");
509 if (
sizeof(ZOLTAN_ID_TYPE) ==
sizeof(
unsigned int)) {
510 if (zoltanGID[0] != 17 || zoltanGID[1] != 4 ||
511 zoltanGID[2] != 0 || zoltanGID[3] != 0) {
512 PRINTMSG(
"FAIL: long long to ZOLTAN_ID_PTR");
516 else if (
sizeof(ZOLTAN_ID_TYPE) ==
sizeof(
unsigned long long)) {
517 if (test_t(zoltanGID[0]) != zgno || zoltanGID[1] != 0 ||
518 zoltanGID[2] != 0 || zoltanGID[3] != 0) {
519 PRINTMSG(
"FAIL: long long to ZOLTAN_ID_PTR");
525 PRINTMSG(
"FAIL: unknown sizeof(ZOLTAN_ID_TYPE)");
533 std::cout <<
"back " << back <<
" != zgno " << zgno << std::endl;
534 PRINTMSG(
"FAIL: ZOLTAN_ID_PTR to long long");
540 typedef unsigned long long test_t;
541 test_t zgno = ((test_t)1 << 36) + (test_t)25;
542 zoltanGID[0] = 0; zoltanGID[1] = 0; zoltanGID[2] = 0; zoltanGID[3] = 0;
544 int num_gid =
MAX(1,
sizeof(test_t) /
sizeof(ZOLTAN_ID_TYPE));
546 PRINTMSG(
"FAIL: NUM_ID wrong for unsigned long long");
551 if (
sizeof(ZOLTAN_ID_TYPE) ==
sizeof(
unsigned int)) {
552 if (zoltanGID[0] != 25 || zoltanGID[1] != 16 ||
553 zoltanGID[2] != 0 || zoltanGID[3] != 0) {
554 PRINTMSG(
"FAIL: unsigned long long to ZOLTAN_ID_PTR");
558 else if (
sizeof(ZOLTAN_ID_TYPE) ==
sizeof(
unsigned long long)) {
559 if (zoltanGID[0] != zgno || zoltanGID[1] != 0 ||
560 zoltanGID[2] != 0 || zoltanGID[3] != 0) {
561 PRINTMSG(
"FAIL: long long to ZOLTAN_ID_PTR");
567 PRINTMSG(
"FAIL: unknown sizeof(ZOLTAN_ID_TYPE)");
576 std::cout <<
"back " << back <<
" != zgno " << zgno << std::endl;
577 PRINTMSG(
"FAIL: ZOLTAN_ID_PTR to unsigned long long");
583 typedef size_t test_t;
585 for (
size_t i = 0; i < 8*
sizeof(test_t); i++) zgno += (test_t)1<<i;
586 zoltanGID[0] = 0; zoltanGID[1] = 0; zoltanGID[2] = 0; zoltanGID[3] = 0;
588 int num_gid =
MAX(1,
sizeof(test_t) /
sizeof(ZOLTAN_ID_TYPE));
590 PRINTMSG(
"FAIL: NUM_ID wrong for size_t");
595 for (
int i = 0; i < num_gid; i++)
596 if (zoltanGID[i] != std::numeric_limits<ZOLTAN_ID_TYPE>::max()) {
597 PRINTMSG(
"FAIL: size_t to ZOLTAN_ID_PTR");
600 for (
int i = num_gid; i < 4; i++)
601 if (zoltanGID[i] != 0) {
602 PRINTMSG(
"FAIL: size_t to ZOLTAN_ID_PTR");
609 std::cout <<
"back " << back <<
" != zgno " << zgno << std::endl;
610 PRINTMSG(
"FAIL: ZOLTAN_ID_PTR to size_t");
619 std::cout <<
"PASS" << std::endl;
621 std::cout <<
"FAIL" << std::endl;
int main(int argc, char *argv[])
static void ASSIGN(first_t &a, second_t b)
Traits class to handle conversions between gno_t/lno_t and TPL data types (e.g., ParMETIS's idx_t...
Defines the Environment class.