From a037a613f947b73006aed0edac6b4e2a9b190511 Mon Sep 17 00:00:00 2001 From: Matteo Giantomassi Date: Fri, 22 Jan 2016 18:36:40 +0100 Subject: [PATCH] Add manager for jureca --- abipy/benchmarks/AU107/flowgen.py | 2 +- abipy/benchmarks/__init__.py | 1 + abipy/benchmarks/gs_kpara.py | 8 +++++-- abipy/benchmarks/gs_paralkgb.py | 9 ++++++-- abipy/benchmarks/scr.py | 2 ++ abipy/data/managers/jureca.yml | 38 +++++++++++++++++++++++++++++++ circle.yml | 4 ++++ setup.py | 12 +++++----- 8 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 abipy/data/managers/jureca.yml diff --git a/abipy/benchmarks/AU107/flowgen.py b/abipy/benchmarks/AU107/flowgen.py index b47ba04f..f1f44602 100755 --- a/abipy/benchmarks/AU107/flowgen.py +++ b/abipy/benchmarks/AU107/flowgen.py @@ -168,7 +168,7 @@ def make_input(): tsmear=0.002, nbdbuf=20, - # Activation/desactvation des I/O + # IO optforces=2, optstress=1, prtwf=0, diff --git a/abipy/benchmarks/__init__.py b/abipy/benchmarks/__init__.py index 41d331a4..2e52f26a 100644 --- a/abipy/benchmarks/__init__.py +++ b/abipy/benchmarks/__init__.py @@ -41,6 +41,7 @@ def bench_main(main): parser.add_argument("--omp-range", default=None, help="Range of OMP threads to be tested." "'--omp-range='(1,4,2)' performs benchmarks for omp_threads in [1, 3]") + parser.add_argument("--max-ncpus", default=None, type=int, help="Maximum number of CPUs to be tested.") parser.add_argument('--paw', default=False, action="store_true", help="Run PAW calculation if present") #parser.add_argument('--paral_kgb', default=1, type=int, help="paral_kgb input variable") diff --git a/abipy/benchmarks/gs_kpara.py b/abipy/benchmarks/gs_kpara.py index 608fc139..8ad2b59d 100755 --- a/abipy/benchmarks/gs_kpara.py +++ b/abipy/benchmarks/gs_kpara.py @@ -44,8 +44,12 @@ def build_flow(options): flow = BenchmarkFlow(workdir="bench_gs_kpara") work = abilab.Work() - mpi_range = range(1, nkpt*inp.nsppol + 1) if options.mpi_range is None else options.mpi_range - print("Using mpi_range:", mpi_range) + + if options.mpi_range is None: + mpi_range = range(1, nkpt*inp.nsppol + 1) + print("Using mpi_range:", mpi_range, " = nkpt * nsppol") + else options.mpi_range: + print("Using mpi_range from cmd line:", mpi_range) for mpi_procs in mpi_range: manager = options.manager.deepcopy() diff --git a/abipy/benchmarks/gs_paralkgb.py b/abipy/benchmarks/gs_paralkgb.py index 15f46516..00ab207a 100755 --- a/abipy/benchmarks/gs_paralkgb.py +++ b/abipy/benchmarks/gs_paralkgb.py @@ -47,7 +47,12 @@ def build_flow(options): template = make_input() # Get the list of possible parallel configurations from abinit autoparal. - max_ncpus = 10 + max_ncpus, min_eff = options.max_ncpus, 0.7 + if max_ncpus is None: + raise RuntimeError("This benchmark requires --max-ncpus") + else: + print("Getting all autoparal confs up to max_ncpus: ",max_ncpus," with efficiency >= ",min_eff) + pconfs = template.abiget_autoparal_pconfs(max_ncpus, autoparal=1) print(pconfs) @@ -55,7 +60,7 @@ def build_flow(options): work = abilab.Work() for conf in pconfs: - if conf.efficiency < 0.7: continue + if conf.efficiency < min_eff: continue inp = template.deepcopy() inp.set_vars(conf.vars) diff --git a/abipy/benchmarks/scr.py b/abipy/benchmarks/scr.py index 2bcd8391..7f9ae640 100755 --- a/abipy/benchmarks/scr.py +++ b/abipy/benchmarks/scr.py @@ -105,6 +105,8 @@ def scr_benchmark(options): scr_work = abilab.Work() print("Using mpi_range:", options.mpi_range) + if options.mpi_range is None: + raise RuntimeError("This benchmark requires --mpi-range") # Get the list of possible parallel configurations from abinit autoparal. #max_ncpus = 10 diff --git a/abipy/data/managers/jureca.yml b/abipy/data/managers/jureca.yml new file mode 100644 index 00000000..c3e97fa8 --- /dev/null +++ b/abipy/data/managers/jureca.yml @@ -0,0 +1,38 @@ +# See http://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JURECA/Configuration/Configuration_node.html +# and +# http://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JURECA/UserInfo/QuickIntroduction.html?nn=1803700#JURECABatchPart +devel: &devel + num_nodes: 8 + sockets_per_node: 2 + cores_per_socket: 12 + mem_per_node: 128Gb + +batch: &batch + num_nodes: 128 + sockets_per_node: 2 + cores_per_socket: 12 + mem_per_node: 128Gb + +job: &job + mpi_runner: mpirun + shell_env: + PATH: $HOME/local/bin:$PATH + modules: + - python/2.7 + # pre_run is a string in verbatim mode (note |) + pre_run: | + ulimit unlimited + +# queues +qadapters: + - priority: 1 + max_num_launches: 20 + queue: + qname: devel + qtype: slurm + limits: + timelimit: 2:0:0 + min_cores: 1 + max_cores: 192 + hardware: *devel + job: *job diff --git a/circle.yml b/circle.yml index 1db765ae..8f23823d 100644 --- a/circle.yml +++ b/circle.yml @@ -16,3 +16,7 @@ dependenciees: # - nosetests: # environment: # PYTHONPATH: $PYTHONPATH:/usr/lib/python2.7/dist-packages/ +general: + branches: + ignore: # list of branches to ignore + - master diff --git a/setup.py b/setup.py index 76068747..d83060ee 100755 --- a/setup.py +++ b/setup.py @@ -170,16 +170,16 @@ install_requires = [ "six", "prettytable", "apscheduler==2.1.0", - "numpy>=1.8", "pydispatcher>=2.0.3", - "pyyaml>=3.11", - "scipy>=0.10", - "pandas", - "netCDF4", - "pymatgen>=3.0.8", "wxmplot", "html2text", "pigments", + "pyyaml>=3.11", + "pandas", + "numpy>=1.8", + "scipy>=0.10", + "pymatgen>=3.0.8", + "netCDF4", #"matplotlib>=1.1", #"seaborn", #"psutil",