ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
utils.h
Go to the documentation of this file.
1#pragma once
2#include <complex>
3#include <mpi.h>
4
5static inline int globalIndex(int localIndex, int nblk, int nprocs, int myproc)
6{
7 int iblock, gIndex;
8 iblock = localIndex / nblk;
9 gIndex = (iblock * nprocs + myproc) * nblk + localIndex % nblk;
10 return gIndex;
11}
12
13static inline int localIndex(int globalIndex, int nblk, int nprocs, int& lcoalProc)
14{
15 lcoalProc = int((globalIndex % (nblk * nprocs)) / nblk);
16 return int(globalIndex / (nblk * nprocs)) * nblk + globalIndex % nblk;
17}
18
19#ifdef __MPI
20void initBlacsGrid(int loglevel,
21 MPI_Comm comm,
22 int nFull,
23 int nblk,
24 int& blacs_ctxt,
25 int& narows,
26 int& nacols,
27 int desc[]);
28#endif
29
30// load matrix from the file
31void loadMatrix(const char FileName[], int nFull, double* a, int* desca, int blacs_ctxt);
32
33void saveLocalMatrix(const char filePrefix[], int narows, int nacols, double* a);
34
35// use pdgemr2d to collect matrix from all processes to root process
36// and save to one completed matrix file
37void saveMatrix(const char FileName[], int nFull, double* a, int* desca, int blacs_ctxt);
38
39void loadMatrix(const char FileName[], int nFull, std::complex<double>* a, int* desca, int blacs_ctxt);
40
41void saveLocalMatrix(const char filePrefix[], int narows, int nacols, std::complex<double>* a);
42
43// use pzgemr2d to collect matrix from all processes to root process
44// and save to one completed matrix file
45void saveMatrix(const char FileName[], int nFull, std::complex<double>* a, int* desca, int blacs_ctxt);
void initBlacsGrid(int loglevel, MPI_Comm comm, int nFull, int nblk, int &blacs_ctxt, int &narows, int &nacols, int desc[])
Definition utils.cpp:13
void saveMatrix(const char FileName[], int nFull, double *a, int *desca, int blacs_ctxt)
Definition utils.cpp:166
void loadMatrix(const char FileName[], int nFull, double *a, int *desca, int blacs_ctxt)
Definition utils.cpp:86
void saveLocalMatrix(const char filePrefix[], int narows, int nacols, double *a)
Definition utils.cpp:137