1 |
|
2 |
Different configurations of the full setup, |
3 |
using cost = \sum_{i,j} theta(i,j)**2 |
4 |
They include: |
5 |
|
6 |
1. Single-processor: |
7 |
a. with hand-written AD routines |
8 |
* output_nompi_handad_adm.txt (FAIL) |
9 |
* output_nompi_handad_tlm.txt (OK) |
10 |
b. without hand-written AD routines for exch2_rx2_cube |
11 |
* output_nompi_nohandad_adm.txt (OK) |
12 |
* output_nompi_nohandad_tlm.txt (OK) |
13 |
|
14 |
2. MPI setup for 4 processors: |
15 |
a. with hand-written AD routines |
16 |
|
17 |
All header files (stuff in code_ad*) |
18 |
and input files (stuff in input_ad*) |
19 |
are kept in one directory. |
20 |
Depending on experiment, the relevant |
21 |
files are copied over from appropriate templates |
22 |
(see below). |
23 |
This helps ensuring that as little as possible |
24 |
changes between setups, and it it transparent |
25 |
exactly what has changed. |
26 |
|
27 |
|
28 |
|
29 |
Compile and run: |
30 |
---------------- |
31 |
|
32 |
# Prepare experiments in exe_ad_t2 |
33 |
cd exe_ad_t2/ |
34 |
ln -s ../build_ad_t2/mitgcmuv_ad . |
35 |
ln -s ../build_ad_t2/mitgcmuv_ftl . |
36 |
ln -s ../input_ad_t2/* . |
37 |
ln -s ../input_fields/* . |
38 |
|
39 |
Exp. 1.a.: |
40 |
---------- |
41 |
|
42 |
# prepare setup headers |
43 |
cd ../code_ad_t2/ |
44 |
# |
45 |
# ensure that you're using single-proc. topology |
46 |
# by re-copying relevant files (mostly redundant) |
47 |
cp topol_32x32/* . |
48 |
# |
49 |
# copy .flow, .list for case "hand-written" adjoint |
50 |
cp exch2_ad_diff.list_rl2_cube_hand_ad exch2_ad_diff.list |
51 |
cp exch2.flow_rl2_cube_hand_ad exch2.flow |
52 |
# |
53 |
# generate ADM and TLM and compile |
54 |
cd ../build_ad_t2 |
55 |
../../../tools/genmake2 -mods ../code_ad_t2 |
56 |
make CLEAN |
57 |
make depend |
58 |
make adall |
59 |
make ftlall |
60 |
# |
61 |
# run ADM and TLM |
62 |
cd ../exe_ad_t2/ |
63 |
rm *.??ta |
64 |
./mitgcmuv_ad >! output_nompi_handad_adm.txt |
65 |
./mitgcmuv_ftl >! output_nompi_handad_tlm.txt |
66 |
|
67 |
Exp. 1.b.: |
68 |
---------- |
69 |
|
70 |
# prepare setup headers |
71 |
cd ../code_ad_t2/ |
72 |
# |
73 |
# ensure that you're using single-proc. topology |
74 |
# by re-copying relevant files (mostly redundant) |
75 |
cp topol_32x32/* . |
76 |
# |
77 |
# copy .flow, .list for case "NON-hand-written" adjoint |
78 |
cp exch2_ad_diff.list_rl2_cube_nohand_ad exch2_ad_diff.list |
79 |
cp exch2.flow_rl2_cube_nohand_ad exch2.flow |
80 |
# |
81 |
# generate ADM and TLM and compile |
82 |
cd ../build_ad_t2 |
83 |
../../../tools/genmake2 -mods ../code_ad_t2 |
84 |
make CLEAN |
85 |
make depend |
86 |
make adall |
87 |
make ftlall |
88 |
# |
89 |
# run ADM and TLM |
90 |
cd ../exe_ad_t2/ |
91 |
rm *.??ta |
92 |
./mitgcmuv_ad >! output_nompi_nohandad_adm.txt |
93 |
./mitgcmuv_ftl >! output_nompi_nohandad_tlm.txt |
94 |
|
95 |
|
96 |
|
97 |
Exp. 2.a.: |
98 |
---------- |
99 |
|
100 |
# prepare setup headers |
101 |
cd ../code_ad_t2/ |
102 |
# |
103 |
# ensure that you're using multi-proc. topology with MPI(!!!) |
104 |
# by copying relevant files |
105 |
\cp -f topol_16x16/* . |
106 |
\cp -f SIZE.h_mpi SIZE.h |
107 |
# |
108 |
# copy .flow, .list for case "hand-written" adjoint |
109 |
cp exch2_ad_diff.list_rl2_cube_hand_ad exch2_ad_diff.list |
110 |
cp exch2.flow_rl2_cube_hand_ad exch2.flow |
111 |
# |
112 |
# generate ADM and TLM and compile |
113 |
cd ../build_ad_t2 |
114 |
../../../tools/genmake2 -mpi -mods ../code_ad_t2 |
115 |
###../../../tools/genmake2 -mpi -fc ifort -of ../../../tools/build_options/linux_amd64_ifort_generic_mpi -mods ../code_ad_t2 |
116 |
make CLEAN |
117 |
make depend |
118 |
make adall |
119 |
make ftlall |
120 |
# |
121 |
# run ADM and TLM |
122 |
cd ../exe_ad_t2/ |
123 |
rm *.??ta |
124 |
mpiexec -np 4 mitgcmuv_ad >! output_mpi_handad_adm.txt |
125 |
mpiexec -np 4 mitgcmuv_ftl >! output_mpi_handad_tlm.txt |
126 |
|