1 | import sys, os, subprocess, pathlib |
---|
2 | |
---|
3 | |
---|
4 | # Where do we run ? |
---|
5 | SysName, NodeName, Release, Version, Machine = os.uname () |
---|
6 | |
---|
7 | def unDefined (char) : |
---|
8 | if char in globals () : |
---|
9 | if globals ()[char] == None : unDefined = True |
---|
10 | else : unDefined = False |
---|
11 | else : unDefined = True |
---|
12 | return unDefined |
---|
13 | |
---|
14 | def Mach () : |
---|
15 | |
---|
16 | Mach = 'unknown' |
---|
17 | |
---|
18 | if SysName == 'Darwin' and 'lsce5138' in NodeName : Mach = 'Spip' |
---|
19 | if 'obelix' in NodeName : Mach = 'Obelix' |
---|
20 | if 'forge' in NodeName : Mach = 'Forge' |
---|
21 | if 'ciclad' in NodeName : Mach = 'Ciclad' |
---|
22 | if 'spiritx' in NodeName : Mach = 'SpiritX' |
---|
23 | if 'spiritj' in NodeName : Mach = 'SpiritJ' |
---|
24 | if 'spirit' in NodeName : Mach = 'SpiritJ' |
---|
25 | if 'irene' in NodeName : Mach = 'Irene' |
---|
26 | if 'jean-zay' in NodeName : Mach = 'Jean-Zay' |
---|
27 | |
---|
28 | return Mach |
---|
29 | |
---|
30 | def MachFull () : |
---|
31 | _Mach = Mach () |
---|
32 | MachFull = _Mach |
---|
33 | |
---|
34 | if _Mach == 'Irene' : |
---|
35 | lscpu = subprocess.getoutput ('lscpu') |
---|
36 | ccc_os = subprocess.getoutput ('ccc_os') |
---|
37 | |
---|
38 | if "Intel(R) Xeon(R) Platinum" in lscpu: |
---|
39 | if "Atos_7__x86_64" in ccc_os : MachFull = 'Irene' |
---|
40 | if "Rhel_8__x86_64" in ccc_os : MachFull = 'Irene-Next' |
---|
41 | |
---|
42 | if "AMD" in lscpu | grep : |
---|
43 | if "Atos_7__x86_64" in ccc_os : MachFull = 'Rome' |
---|
44 | if "Rhel_8__x86_64" in ccc_os : MachFull = 'Rome-Next' |
---|
45 | |
---|
46 | return MachFull |
---|
47 | |
---|
48 | def config ( TagName=None, SpaceName=None, ExperimentName=None, JobName=None, User=None, Project=None, |
---|
49 | ARCHIVE=None, SCRATCHDIR=None, STORAGE=None, R_IN=None, R_OUT=None, R_FIG=None, |
---|
50 | R_SAVE=None, R_FIGR=None, R_BUFR=None, R_BUF_KSH=None, REBUILD_DIR=None, POST_DIR=None, rebuild=None ) : |
---|
51 | |
---|
52 | if User == None : User == os.environ ['USER'] |
---|
53 | _Mach = Mach () |
---|
54 | |
---|
55 | if _Mach == 'Spip' : |
---|
56 | if unDefined ( 'ARCHIVE' ) : ARCHIVE = os.path.join ( pathlib.Path.home (), 'Data' ) |
---|
57 | if unDefined ( 'SCRATCHDIR' ) : SCRATCHDIR = os.path.join ( pathlib.Path.home (), 'Scratch' ) |
---|
58 | if unDefined ( 'STORAGE' ) : STORAGE = ARCHIVE |
---|
59 | |
---|
60 | if _Mach == 'Irene' : |
---|
61 | if Project == None : Project = os.path.basename ( os.environ ['ALL_CCCHOME'] ) |
---|
62 | if unDefined ( 'R_IN' ) : R_IN = os.path.join ( subprocess.getoutput ( f'ccc_home --cccwork -d igcmg -u igcmg' ), 'IGCM') |
---|
63 | if Project == None or User == None : |
---|
64 | ARCHIVE = os.environ ['CCCSTOREDIR'] |
---|
65 | STORAGE = os.environ ['CCCWORKDIR'] |
---|
66 | SCRATCHDIR = os.environ ['CCCSCRATCHDIR'] |
---|
67 | else : |
---|
68 | if unDefined ( 'ARCHIVE' ) : ARCHIVE = subprocess.getoutput ( f'ccc_home --cccstore -u {User} -d {Project}' ) |
---|
69 | if unDefined ( 'STORAGE' ) : STORAGE = subprocess.getoutput ( f'ccc_home --cccwork -u {User} -d {Project}' ) |
---|
70 | if unDefined ( 'SCRATCHDIR' ) : SCRATCHDIR = subprocess.getoutput ( f'ccc_home --cccscratch -u {User} -d {Project}' ) |
---|
71 | |
---|
72 | if unDefined ('rebuild' ) : |
---|
73 | rebuild = os.path.join ( subprocess.getoutput ( f'ccc_home --ccchome -d igcmg -u igcmg' ), 'Tools', Machine, 'rebuild_nemo', 'bin', 'rebuild_nemo' ) |
---|
74 | |
---|
75 | if _Mach == 'Jean-Zay' : |
---|
76 | if unDefined ( 'ARCHIVE' ) : ARCHIVE = os.getenv ( 'CCFRSTORE' ) |
---|
77 | if unDefined ( 'STORAGE' ) : STORAGE = os.getenv ( 'CCFRWORK' ) |
---|
78 | if unDefined ( 'SCRATCHDIR' ) : SCRATCHDIR = os.getenv ( 'CCFRSCRATCH' ) |
---|
79 | if unDefined ( 'R_IN' ) : R_IN = os.path.join ('/', 'gpfswork', 'rech', 'psl', 'commun', 'IGCM' ) |
---|
80 | if unDefined ( 'rebuild' ) : |
---|
81 | rebuild = os.path.join ( '/', 'gpfswork', 'rech', 'psl', 'commun', 'Tools', 'rebuild', 'modipsl_IOIPSL_PLUS_v2_2_4', 'bin', 'rebuild' ) |
---|
82 | ## The construction of the following variables is not machine dependant |
---|
83 | |
---|
84 | if SpaceName == 'TEST' : |
---|
85 | if unDefined ( 'R_OUT' ) : R_OUT = os.path.join ( SCRATCHDIR, 'IGCM_OUT' ) |
---|
86 | if unDefined ( 'R_FIG' ) : R_FIG = os.path.join ( SCRATCHDIR, 'IGCM_OUT' ) |
---|
87 | else : |
---|
88 | if unDefined ( 'R_OUT' ) : R_OUT = os.path.join ( ARCHIVE , 'IGCM_OUT' ) |
---|
89 | if unDefined ( 'R_FIG' ) : R_FIG = os.path.join ( STORAGE , 'IGCM_OUT' ) |
---|
90 | |
---|
91 | if unDefined ( 'R_BUF' ) : R_BUF = os.path.join ( SCRATCHDIR, 'IGCM_OUT' ) |
---|
92 | IGCM_OUT = R_OUT |
---|
93 | |
---|
94 | L_EXP = os.path.join (TagName, SpaceName, ExperimentName, JobName) |
---|
95 | |
---|
96 | if unDefined ( 'R_SAVE' ) : R_SAVE = os.path.join ( R_OUT , L_EXP ) |
---|
97 | if unDefined ( 'R_SAVE' ) : R_FIGR = os.path.join ( STORAGE , 'IGCM_OUT', L_EXP ) |
---|
98 | if unDefined ( 'R_BUFR' ) : R_BUFR = os.path.join ( R_BUF , L_EXP ) |
---|
99 | if unDefined ( 'R_BUF_KSH' ) : R_BUF_KSH = os.path.join ( R_BUFR , 'Out' ) |
---|
100 | if unDefined ( 'REBUILD_DIR' ) : REBUILD_DIR = os.path.join ( R_BUF , L_EXP, 'REBUILD' ) |
---|
101 | if unDefined ( 'POST_DIR' ) : POST_DIR = os.path.join ( R_BUF , L_EXP, 'Out' ) |
---|
102 | |
---|
103 | libIGCM = {'ARCHIVE':ARCHIVE,'STORAGE':STORAGE, 'SCRATCHDIR':SCRATCHDIR, 'R_OUT':R_OUT, 'R_BUF':R_BUFR, 'IGCM_OUT':IGCM_OUT, |
---|
104 | 'R_SAVE':R_SAVE, 'R_FIGR':R_FIGR, 'R_BUFR':R_BUFR, 'REBUILD_DIR':REBUILD_DIR, 'POST_DIR':POST_DIR, 'rebuild':rebuild |
---|
105 | 'User':User } |
---|
106 | |
---|
107 | return libIGCM |
---|
108 | |
---|