#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mpi.h>
#include <yaxt.h>
#include "tests.h"
#include "test_redist_common.h"
int main(void) {
{
static const Xt_int src_index_list[] = {5,67,4,5,13,9,2,1,0,96,13,12,1,3};
enum { src_num = sizeof(src_index_list) / sizeof(src_index_list[0]) };
static const Xt_int dst_index_list[] = {5,4,3,96,1,5,4,5,4,3,13,2,1};
enum { dst_num = sizeof(dst_index_list) / sizeof(dst_index_list[0]) };
PUT_ERR("error in xt_redist_get_MPI_Comm\n");
static const double src_data[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13};
static const double ref_dst_data[] = {0,2,13,9,7,0,2,0,2,13,4,6,7};
enum { num_ref_values = sizeof(ref_dst_data) / sizeof(ref_dst_data[0]) };
double dst_data[dst_num];
for (size_t i = 0; i < dst_num; ++i)
dst_data[i] = -1.0;
check_redist(redist, src_data, sizeof (src_data[0]) * num_ref_values,
dst_data, ref_dst_data);
for (size_t i = 0; i < dst_num; ++i)
dst_data[i] = -1.0;
check_redist(redist_copy, src_data, sizeof (src_data[0]) * num_ref_values,
dst_data, ref_dst_data);
}
{
static const Xt_int src_index_list[] = {5,67,4,5,13,9,2,1,0,96,13,12,1,3};
enum { src_num = sizeof(src_index_list) / sizeof(src_index_list[0]) };
static const Xt_int dst_index_list[] = {5,4,3,96,1,5,4,5,4,3,13,2,1};
enum { dst_num = sizeof(dst_index_list) / sizeof(dst_index_list[0]) };
int src_pos[src_num];
int dst_pos[dst_num];
for (int i = 0; i < src_num; i++)
src_pos[i] = i;
for (int i = 0; i < dst_num; i++)
dst_pos[i] = dst_num-1-i;
PUT_ERR("error in xt_redist_get_MPI_Comm\n");
static const double src_data[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13};
assert(sizeof(src_data)/sizeof(src_data[0]) == src_num);
static const double ref_dst_data[] = {7,6,4,13,2,0,2,0,7,9,13,2,0};
double dst_data[dst_num];
for (size_t i = 0; i < dst_num; ++i)
dst_data[i] = -1.0;
check_redist(redist, src_data, sizeof (src_data[0]) * dst_num,
dst_data, ref_dst_data);
for (size_t i = 0; i < dst_num; ++i)
dst_data[i] = -1.0;
check_redist(redist_copy, src_data, sizeof (src_data[0]) * dst_num,
dst_data, ref_dst_data);
}
{
static const Xt_int src_index_list[] = {5,67,4,5,13,9,2,1,0,96,13,12,1,3};
enum { src_num = sizeof(src_index_list) / sizeof(src_index_list[0]) };
static const Xt_int dst_index_list[] = {5,4,3,96,1,5,4,5,4,3,13,2,1};
enum { dst_num = sizeof(dst_index_list) / sizeof(dst_index_list[0]) };
src_pos[1] = { { .
start = 0, .size = src_num, .stride = 1 } },
dst_pos[1] = { { .start = dst_num - 1, .size = dst_num, .stride = -1 } };
sizeof (src_pos)/sizeof (src_pos[0]), src_pos,
sizeof (dst_pos)/sizeof (dst_pos[0]), dst_pos,
MPI_LONG);
PUT_ERR("error in xt_redist_get_MPI_Comm\n");
static const long src_data[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13};
assert(sizeof(src_data)/sizeof(src_data[0]) == src_num);
static const long ref_dst_data[] = {7,6,4,13,2,0,2,0,7,9,13,2,0};
long dst_data[dst_num];
for (size_t i = 0; i < dst_num; ++i)
dst_data[i] = -1L;
check_redist(redist, src_data, sizeof (src_data[0]) * dst_num,
dst_data, ref_dst_data);
for (size_t i = 0; i < dst_num; ++i)
dst_data[i] = -1L;
check_redist(redist_copy, src_data, sizeof (src_data[0]) * dst_num,
dst_data, ref_dst_data);
}
MPI_Finalize();
return TEST_EXIT_CODE;
}