Skip to content

Commit f2b6e1f

Browse files
authored
Merge pull request #558 from Qianruipku/planewave
Add serial version
2 parents 8016b53 + f402ff6 commit f2b6e1f

File tree

17 files changed

+263
-151
lines changed

17 files changed

+263
-151
lines changed

source/module_pw/pw_gatherscatter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace ModulePW
1414
//in[] will be changed
1515
//
1616
template<typename T>
17-
void PW_Basis:: gatherp_scatters(complex<T> *in, complex<T> *out)
17+
void PW_Basis:: gatherp_scatters(std::complex<T> *in, std::complex<T> *out)
1818
{
1919
ModuleBase::timer::tick("PW_Basis", "gatherp_scatters");
2020

@@ -74,7 +74,7 @@ void PW_Basis:: gatherp_scatters(complex<T> *in, complex<T> *out)
7474
//in[] will be changed
7575
//
7676
template<typename T>
77-
void PW_Basis:: gathers_scatterp(complex<T> *in, complex<T> *out)
77+
void PW_Basis:: gathers_scatterp(std::complex<T> *in, std::complex<T> *out)
7878
{
7979
ModuleBase::timer::tick("PW_Basis", "gatherp_scatterp");
8080

source/module_pw/pw_transform.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ void PW_Basis:: recip2real(std::complex<float> * in, std::complex<float> * out)
206206

207207
for(int ir = 0 ; ir < this->nrxx ; ++ir)
208208
{
209-
out[ir] = this->ft.auxf1[ir] / double(this->bignxyz);
209+
out[ir] = this->ft.auxf1[ir] / float(this->bignxyz);
210210
}
211211

212212
return;
@@ -232,7 +232,7 @@ void PW_Basis:: recip2real(std::complex<float> * in, float * out)
232232
{
233233
for(int ipy = 0 ; ipy < npy ; ++ipy)
234234
{
235-
out[ix*npy + ipy] = this->ft.rf_rspace[ix*npy*2 + ipy] / double(this->bignxyz);
235+
out[ix*npy + ipy] = this->ft.rf_rspace[ix*npy*2 + ipy] / float(this->bignxyz);
236236
}
237237
}
238238
return;

source/module_pw/unittest/Makefile

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
#==========================
33
# Compiler information
44
#==========================
5-
CPLUSPLUS = icpc
6-
CPLUSPLUS_MPI = mpiicpc
5+
CPLUSPULS = mpiicpc
76
CUDA_COMPILE = nvcc
87
OBJ_DIR = pw_obj
98
BIN_DIR = testbin
@@ -43,14 +42,16 @@ test_t2.exe
4342

4443
FLOATFILE=testf2.exe\
4544
testf3.exe
46-
45+
TESTFILE0 = ${DOUBLEFILE}
4746

4847
#==========================
4948
# Options
5049
#==========================
50+
#No MPI
51+
# HONG = -D__NORMAL
52+
5153
#Only MPI
5254
HONG = -D__MPI -D__NORMAL
53-
TESTFILE0 = ${DOUBLEFILE}
5455

5556
#Mix Precision
5657
# HONG = -D__MPI -D__MIX_PRECISION -D__NORMAL
@@ -61,6 +62,7 @@ TESTFILE0 = ${DOUBLEFILE}
6162

6263
#Cuda & Mix Precision
6364
#HONG = -D__MPI -D__CUDA -D__MIX_PRECISION -D__NORMAL
65+
# TESTFILE0 = ${DOUBLEFILE} ${FLOATFILE}
6466

6567

6668
PW_OBJS=$(patsubst %.o, ${OBJ_DIR}/%.o, ${PW_OBJS_0})
@@ -107,9 +109,9 @@ init :
107109
@ if [ ! -d $(OBJ_DIR)/README ]; then echo "This directory contains all of the .o files" > $(OBJ_DIR)/README; fi
108110

109111
${BIN_DIR}/%.exe: %.cpp
110-
${CPLUSPLUS_MPI} ${OPTS} $< test_tool.cpp ${PW_OBJS} ${LIBS} -o $@
112+
${CPLUSPULS} ${OPTS} $< test_tool.cpp ${PW_OBJS} ${LIBS} -o $@
111113
${OBJ_DIR}/%.o:%.cpp
112-
${CPLUSPLUS_MPI} ${OPTS} -c ${HONG} $< -o $@
114+
${CPLUSPULS} ${OPTS} -c ${HONG} $< -o $@
113115

114116
.PHONY:clean
115117
clean:

source/module_pw/unittest/Makefile.gnu

Lines changed: 47 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,11 @@
22
#==========================
33
# Compiler information
44
#==========================
5-
CPLUSPLUS = g++
6-
CPLUSPLUS_MPI = mpicxx
5+
CPLUSPLUS = mpicxx
76
CUDA_COMPILE = nvcc
87
OBJ_DIR = pw_obj
8+
BIN_DIR = testbin
99
NP = 12
10-
11-
#==========================
12-
# Options
13-
#==========================
14-
#Only MPI
15-
HONG = -D__MPI -D__NORMAL
16-
17-
#Mix Precision
18-
#HONG = -D__MIX_PRECISION -D__NORMAL
19-
20-
#Cuda
21-
#HONG = -D__MPI -D__CUDA -D__NORMAL
22-
23-
#Cuda & Mix Precision
24-
#HONG = -D__MPI -D__CUDA -D__MIX_PRECISION -D__NORMAL
25-
2610
#==========================
2711
# Objects
2812
#==========================
@@ -47,16 +31,52 @@ pw_distributeg_method1.o\
4731
pw_distributeg_method2.o\
4832
fft.o
4933

34+
DOUBLEFILE=test1.exe\
35+
test2.exe\
36+
test3.exe\
37+
test2-1.exe\
38+
test2-2.exe\
39+
test2-3.exe\
40+
test_t1.exe\
41+
test_t2.exe
42+
43+
FLOATFILE=testf2.exe\
44+
testf3.exe
45+
TESTFILE0 = ${DOUBLEFILE}
46+
47+
#==========================
48+
# Options
49+
#==========================
50+
#No MPI
51+
# HONG = -D__NORMAL
52+
53+
#Only MPI
54+
HONG = -D__MPI -D__NORMAL
55+
56+
#Mix Precision
57+
# HONG = -D__MPI -D__MIX_PRECISION -D__NORMAL
58+
# TESTFILE0 = ${DOUBLEFILE} ${FLOATFILE}
59+
60+
#Cuda
61+
#HONG = -D__MPI -D__CUDA -D__NORMAL
62+
63+
#Cuda & Mix Precision
64+
#HONG = -D__MPI -D__CUDA -D__MIX_PRECISION -D__NORMAL
65+
# TESTFILE0 = ${DOUBLEFILE} ${FLOATFILE}
66+
67+
5068
PW_OBJS=$(patsubst %.o, ${OBJ_DIR}/%.o, ${PW_OBJS_0})
69+
TESTFILE=$(patsubst %.exe, ${BIN_DIR}/%.exe, ${TESTFILE0})
5170

5271
##==========================
5372
## FFTW package needed
5473
##==========================
5574
#Use fftw package
56-
FFTW_DIR = /home/qianrui/gnucompile/g_fftw-3.3.8
75+
FFTW_DIR = /home/qianrui/gnucompile/g_fftw-3.3.8-mpi
5776
FFTW_LIB_DIR = ${FFTW_DIR}/lib
5877
FFTW_INCLUDE_DIR = ${FFTW_DIR}/include
59-
FFTW_LIB = -L${FFTW_LIB_DIR} -lfftw3 -Wl,-rpath=${FFTW_LIB_DIR}
78+
FFTW_LIB = -L${FFTW_LIB_DIR} -lfftw3 -lfftw3f -Wl,-rpath=${FFTW_LIB_DIR}
79+
# FFTW_LIB = -L${FFTW_LIB_DIR} -lfftw3 -Wl,-rpath=${FFTW_LIB_DIR}
6080

6181

6282

@@ -76,37 +96,20 @@ OPTS = -I${FFTW_INCLUDE_DIR} ${HONG} -Ofast -std=c++11 -Wall -g
7696
#==========================
7797
pw :
7898
@ make init
79-
@ make -j $(NP) parallel
99+
@ make -j $(NP) ${PW_OBJS}
100+
@ make -j $(NP) ${TESTFILE}
80101

81102
init :
82103
@ if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
104+
@ if [ ! -d $(BIN_DIR) ]; then mkdir $(BIN_DIR); fi
83105
@ if [ ! -d $(OBJ_DIR)/README ]; then echo "This directory contains all of the .o files" > $(OBJ_DIR)/README; fi
84106

85-
parallel : ${PW_OBJS}
86-
${CPLUSPLUS_MPI} ${OPTS} test1.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test1.exe
87-
${CPLUSPLUS_MPI} ${OPTS} test2.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test2.exe
88-
${CPLUSPLUS_MPI} ${OPTS} test3.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test3.exe
89-
${CPLUSPLUS_MPI} ${OPTS} test2-1.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test2-1.exe
90-
${CPLUSPLUS_MPI} ${OPTS} test2-2.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test2-2.exe
91-
${CPLUSPLUS_MPI} ${OPTS} test2-3.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test2-3.exe
92-
${CPLUSPLUS_MPI} ${OPTS} test_t1.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test_t1.exe
93-
${CPLUSPLUS_MPI} ${OPTS} test_t2.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test_t2.exe
94-
${CPLUSPLUS_MPI} ${OPTS} testf2.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o testf2.exe
95-
${CPLUSPLUS_MPI} ${OPTS} testf3.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o testf3.exe
96-
107+
${BIN_DIR}/%.exe: %.cpp
108+
${CPLUSPLUS} ${OPTS} $< test_tool.cpp ${PW_OBJS} ${LIBS} -o $@
97109
${OBJ_DIR}/%.o:%.cpp
98-
${CPLUSPLUS_MPI} ${OPTS} -c ${HONG} $< -o $@
110+
${CPLUSPLUS} ${OPTS} -c ${HONG} $< -o $@
99111

100112
.PHONY:clean
101113
clean:
102114
@ if [ -d $(OBJ_DIR) ]; then rm -rf $(OBJ_DIR); fi
103-
@ if [ -e test1.exe ]; then rm -f test1.exe; fi
104-
@ if [ -e test2.exe ]; then rm -f test2.exe; fi
105-
@ if [ -e test3.exe ]; then rm -f test3.exe; fi
106-
@ if [ -e test2-1.exe ]; then rm -f test2-1.exe; fi
107-
@ if [ -e test2-2.exe ]; then rm -f test2-2.exe; fi
108-
@ if [ -e test2-3.exe ]; then rm -f test2-3.exe; fi
109-
@ if [ -e test_t1.exe ]; then rm -f test_t1.exe; fi
110-
@ if [ -e test_t2.exe ]; then rm -f test_t2.exe; fi
111-
@ if [ -e testf2.exe ]; then rm -f testf2.exe; fi
112-
@ if [ -e testf3.exe ]; then rm -f testf3.exe; fi
115+
@ if [ -d $(BIN_DIR) ]; then rm -rf $(BIN_DIR); fi

source/module_pw/unittest/Makefile.intel

Lines changed: 44 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,11 @@
22
#==========================
33
# Compiler information
44
#==========================
5-
CPLUSPLUS = icpc
6-
CPLUSPLUS_MPI = mpiicpc
5+
CPLUSPULS = mpiicpc
76
CUDA_COMPILE = nvcc
87
OBJ_DIR = pw_obj
8+
BIN_DIR = testbin
99
NP = 12
10-
11-
#==========================
12-
# Options
13-
#==========================
14-
#Only MPI
15-
HONG = -D__MPI -D__NORMAL
16-
17-
#Mix Precision
18-
# HONG = -D__MPI -D__MIX_PRECISION -D__NORMAL
19-
20-
#Cuda
21-
#HONG = -D__MPI -D__CUDA -D__NORMAL
22-
23-
#Cuda & Mix Precision
24-
#HONG = -D__MPI -D__CUDA -D__MIX_PRECISION -D__NORMAL
25-
2610
#==========================
2711
# Objects
2812
#==========================
@@ -47,7 +31,42 @@ pw_distributeg_method1.o\
4731
pw_distributeg_method2.o\
4832
fft.o
4933

34+
DOUBLEFILE=test1.exe\
35+
test2.exe\
36+
test3.exe\
37+
test2-1.exe\
38+
test2-2.exe\
39+
test2-3.exe\
40+
test_t1.exe\
41+
test_t2.exe
42+
43+
FLOATFILE=testf2.exe\
44+
testf3.exe
45+
TESTFILE0 = ${DOUBLEFILE}
46+
47+
#==========================
48+
# Options
49+
#==========================
50+
#No MPI
51+
# HONG = -D__NORMAL
52+
53+
#Only MPI
54+
HONG = -D__MPI -D__NORMAL
55+
56+
#Mix Precision
57+
# HONG = -D__MPI -D__MIX_PRECISION -D__NORMAL
58+
# TESTFILE0 = ${DOUBLEFILE} ${FLOATFILE}
59+
60+
#Cuda
61+
#HONG = -D__MPI -D__CUDA -D__NORMAL
62+
63+
#Cuda & Mix Precision
64+
#HONG = -D__MPI -D__CUDA -D__MIX_PRECISION -D__NORMAL
65+
# TESTFILE0 = ${DOUBLEFILE} ${FLOATFILE}
66+
67+
5068
PW_OBJS=$(patsubst %.o, ${OBJ_DIR}/%.o, ${PW_OBJS_0})
69+
TESTFILE=$(patsubst %.exe, ${BIN_DIR}/%.exe, ${TESTFILE0})
5170

5271
##==========================
5372
## FFTW package needed
@@ -81,37 +100,20 @@ OPTS = -I${FFTW_INCLUDE_DIR} ${HONG} -Ofast -std=c++11 -simd -m64 -qopenmp -Wall
81100
#==========================
82101
pw :
83102
@ make init
84-
@ make -j $(NP) parallel
103+
@ make -j $(NP) ${PW_OBJS}
104+
@ make -j $(NP) ${TESTFILE}
85105

86106
init :
87107
@ if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi
108+
@ if [ ! -d $(BIN_DIR) ]; then mkdir $(BIN_DIR); fi
88109
@ if [ ! -d $(OBJ_DIR)/README ]; then echo "This directory contains all of the .o files" > $(OBJ_DIR)/README; fi
89110

90-
parallel : ${PW_OBJS}
91-
${CPLUSPLUS_MPI} ${OPTS} test1.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test1.exe
92-
${CPLUSPLUS_MPI} ${OPTS} test2.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test2.exe
93-
${CPLUSPLUS_MPI} ${OPTS} test3.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test3.exe
94-
${CPLUSPLUS_MPI} ${OPTS} test2-1.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test2-1.exe
95-
${CPLUSPLUS_MPI} ${OPTS} test2-2.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test2-2.exe
96-
${CPLUSPLUS_MPI} ${OPTS} test2-3.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test2-3.exe
97-
${CPLUSPLUS_MPI} ${OPTS} test_t1.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test_t1.exe
98-
${CPLUSPLUS_MPI} ${OPTS} test_t2.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o test_t2.exe
99-
${CPLUSPLUS_MPI} ${OPTS} testf2.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o testf2.exe
100-
${CPLUSPLUS_MPI} ${OPTS} testf3.cpp test_tool.cpp ${PW_OBJS} ${LIBS} -o testf3.exe
101-
111+
${BIN_DIR}/%.exe: %.cpp
112+
${CPLUSPULS} ${OPTS} $< test_tool.cpp ${PW_OBJS} ${LIBS} -o $@
102113
${OBJ_DIR}/%.o:%.cpp
103-
${CPLUSPLUS_MPI} ${OPTS} -c ${HONG} $< -o $@
114+
${CPLUSPULS} ${OPTS} -c ${HONG} $< -o $@
104115

105116
.PHONY:clean
106117
clean:
107118
@ if [ -d $(OBJ_DIR) ]; then rm -rf $(OBJ_DIR); fi
108-
@ if [ -e test1.exe ]; then rm -f test1.exe; fi
109-
@ if [ -e test2.exe ]; then rm -f test2.exe; fi
110-
@ if [ -e test3.exe ]; then rm -f test3.exe; fi
111-
@ if [ -e test2-1.exe ]; then rm -f test2-1.exe; fi
112-
@ if [ -e test2-2.exe ]; then rm -f test2-2.exe; fi
113-
@ if [ -e test2-3.exe ]; then rm -f test2-3.exe; fi
114-
@ if [ -e test_t1.exe ]; then rm -f test_t1.exe; fi
115-
@ if [ -e test_t2.exe ]; then rm -f test_t2.exe; fi
116-
@ if [ -e testf2.exe ]; then rm -f testf2.exe; fi
117-
@ if [ -e testf3.exe ]; then rm -f testf3.exe; fi
119+
@ if [ -d $(BIN_DIR) ]; then rm -rf $(BIN_DIR); fi

0 commit comments

Comments
 (0)