ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include "source_base/parallel_reduce.h"
#include "source_base/parallel_global.h"
#include "mpi.h"
#include "gtest/gtest.h"
#include <assert.h>
#include <random>
#include <time.h>
Classes | |
class | MPIContext |
class | ParaReduce |
Functions | |
template<typename T > | |
T * | get_rand_array (int num, int my_rank) |
TEST_F (ParaReduce, ReduceIntAll) | |
TEST_F (ParaReduce, ReduceDoubleAll) | |
TEST_F (ParaReduce, ReduceComplexAll) | |
TEST_F (ParaReduce, GatherIntAll) | |
TEST_F (ParaReduce, GatherDoubleAll) | |
TEST_F (ParaReduce, ReduceIntDiag) | |
TEST_F (ParaReduce, ReduceDoubleDiag) | |
TEST_F (ParaReduce, ReduceIntGrid) | |
TEST_F (ParaReduce, ReduceDoubleGrid) | |
TEST_F (ParaReduce, ReduceDoublePool) | |
TEST_F (ParaReduce, ReduceComplexPool) | |
TEST_F (ParaReduce, GatherDoublePool) | |
int | main (int argc, char **argv) |
Variables | |
const int | MIN_FOR_RAND = 1 |
const int | MAX_FOR_RAND = 99999 |
int main | ( | int | argc, |
char ** | argv | ||
) |
TEST_F | ( | ParaReduce | , |
GatherDoubleAll | |||
) |
printf("post rank %d array[%d] = %f, min = %f, max = %f \n", my_rank,i,array[i],min_number,max_number);
TEST_F | ( | ParaReduce | , |
GatherDoublePool | |||
) |
num_per_process = 1;
printf("post rank %d, pool rank %d, array[%d] = %f, min = %f, max = %f \n", my_rank,mpiContext.rank_in_pool,i,array[i],min_number,max_number);
TEST_F | ( | ParaReduce | , |
GatherIntAll | |||
) |
printf("post rank %d array[%d] = %d, min = %d \n", my_rank,i,array[i],min_number);
TEST_F | ( | ParaReduce | , |
ReduceComplexAll | |||
) |
printf("pre rank %d rand_array[%d] = (%f,%f) \n",my_rank,i, rand_array[i].real(), rand_array[i].imag());
printf("pos rank %d rand_array[%d] = (%f,%f) \n",my_rank,i, rand_array[i].real(), rand_array[i].imag());
printf("rank %d sum1 = (%f,%f) sum2 = (%f,%f)\n",my_rank, global_sum_first.real(), global_sum_first.imag(), global_sum_second.real(), global_sum_second.imag());
TEST_F | ( | ParaReduce | , |
ReduceComplexPool | |||
) |
num_per_process = 1;
printf("word_rank/world_size = %d/%d, pool_rank/pool_size = %d/%d \n", my_rank,nproc, mpiContext.rank_in_pool,mpiContext.nproc_in_pool);
printf("pre rank %d rand_array[%d] = (%f,%f) \n",my_rank,i, rand_array[i].real(), rand_array[i].imag());
printf("pos rank %d rand_array[%d] = (%f,%f) \n",my_rank,i, rand_array[i].real(), rand_array[i].imag());
printf("rank %d sum1 = (%f,%f) sum2 = (%f,%f)\n",my_rank, pool_sum_first.real(), pool_sum_first.imag(), pool_sum_second.real(), pool_sum_second.imag());
TEST_F | ( | ParaReduce | , |
ReduceDoubleAll | |||
) |
printf("rank %d sum1 = %f, sum2 = %f\n",my_rank, global_sum_first, global_sum_second);
TEST_F | ( | ParaReduce | , |
ReduceDoubleDiag | |||
) |
num_per_process = 1;
printf(" pre world_rank %d, drank %d rand_array[%d] = %f\n", my_rank,mpiContext.dsize,i, rand_array[i]);
printf(" post world_rank %d, drank %d rand_array[%d] = %f\n", my_rank,mpiContext.dsize,i, rand_array[i]);
printf("world_rank %d, drank %d sum1 = %f, sum2 = %f\n", my_rank,mpiContext.dsize,diag_sum_first, diag_sum_second);
TEST_F | ( | ParaReduce | , |
ReduceDoubleGrid | |||
) |
num_per_process = 1;
printf(" pre world_rank %d, drank %d rand_array[%d] = %f\n", my_rank,mpiContext.dsize,i, rand_array[i]);
printf(" post world_rank %d, drank %d rand_array[%d] = %f\n", my_rank,mpiContext.dsize,i, rand_array[i]);
printf("world_rank %d, drank %d sum1 = %f, sum2 = %f\n", my_rank,mpiContext.dsize,grid_sum_first, grid_sum_second);
TEST_F | ( | ParaReduce | , |
ReduceDoublePool | |||
) |
num_per_process = 1;
printf("word_rank/world_size = %d/%d, pool_rank/pool_size = %d/%d \n", my_rank,nproc, mpiContext.rank_in_pool,mpiContext.nproc_in_pool);
printf("pool rank %d sum1 = %f, sum2 = %f\n",my_rank, pool_sum_first, pool_sum_second);
printf("global rank %d sum1 = %f, sum2 = %f\n",my_rank, global_sum_first, global_sum_second);
TEST_F | ( | ParaReduce | , |
ReduceIntAll | |||
) |
printf("rank %d sum1 = %d, sum2 = %d\n",my_rank, global_sum_first, global_sum_second);
TEST_F | ( | ParaReduce | , |
ReduceIntDiag | |||
) |
num_per_process = 2;
printf(" pre world_rank %d, drank %d rand_array[%d] = %d\n", my_rank,mpiContext.dsize,i, rand_array[i]);
printf(" post world_rank %d, drank %d swap[%d] = %d\n", my_rank,mpiContext.dsize,i, swap[i]);
printf("world_rank %d, drank %d sum1 = %d, sum2 = %d\n", my_rank,mpiContext.dsize,diag_sum_first, diag_sum_second);
TEST_F | ( | ParaReduce | , |
ReduceIntGrid | |||
) |
num_per_process = 2;
printf(" pre world_rank %d, drank %d rand_array[%d] = %d\n", my_rank,mpiContext.dsize,i, rand_array[i]);
printf(" post world_rank %d, drank %d rand_array[%d] = %d\n", my_rank,mpiContext.dsize,i, rand_array[i]);
printf("world_rank %d, drank %d sum1 = %d, sum2 = %d\n", my_rank,mpiContext.dsize,grid_sum_first, grid_sum_second);
const int MAX_FOR_RAND = 99999 |
const int MIN_FOR_RAND = 1 |