{"id":18412375,"url":"https://github.com/abinit/abiconfig","last_synced_at":"2025-04-07T11:31:55.532Z","repository":{"id":47338974,"uuid":"72215147","full_name":"abinit/abiconfig","owner":"abinit","description":"Configuration files to configure/compile Abinit","archived":false,"fork":false,"pushed_at":"2025-03-05T17:23:24.000Z","size":172,"stargazers_count":7,"open_issues_count":0,"forks_count":15,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-22T17:11:20.112Z","etag":null,"topics":["abinit","clusters","compilation","configuration"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abinit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-28T14:37:25.000Z","updated_at":"2025-03-05T17:23:29.000Z","dependencies_parsed_at":"2022-08-29T23:00:45.975Z","dependency_job_id":"cc23adec-5475-40c5-a0fd-a5a022d07a2f","html_url":"https://github.com/abinit/abiconfig","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abinit%2Fabiconfig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abinit%2Fabiconfig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abinit%2Fabiconfig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abinit%2Fabiconfig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abinit","download_url":"https://codeload.github.com/abinit/abiconfig/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247644338,"owners_count":20972267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abinit","clusters","compilation","configuration"],"created_at":"2024-11-06T03:41:19.829Z","updated_at":"2025-04-07T11:31:55.139Z","avatar_url":"https://github.com/abinit.png","language":"Python","readme":"\n\u003c!--- Initiated by Matteo Giantomassi --\u003e\n\n[![Build Status](https://travis-ci.org/abinit/abiconfig.svg?branch=master)](https://travis-ci.org/abinit/abiconfig)\n\n## About\n\nThis repo is a holding area for configuration files used to configure/compile Abinit on HPC clusters.\nEach configuration file contains a header with metadata in json format followed by\nthe configure options supported by the Abinit build system.\nSee files in the [abiconfig/clusters](https://github.com/abinit/abiconfig/tree/master/abiconfig/clusters) directory.\n\nThe metadata section contains information such as the list of modules that must be loaded\nin order to configure/execute Abinit on the cluster, a brief description of the options activated\nand a list of keywords associated to the configuration file.\nFor further information on the metadata section, see [Contributing](#Contributing) section.\n\nThe configuration file can be copied directly from this repository or, alternatively,\none can install the package and use the ``abiconf.py`` script to search for ac files \nby hostname, by keywords. ``abiconf.py`` also provides commands to automate the configuration/make procedure\nand generate templates for job scripts (see [Using abiconf.py](#Using_abiconf)).\nContributions from users and sysadmins are welcome.\n\nNote that ``abiconf.py`` is just a collection of configuration files and \ndoes not aim at becoming a package management tool for Abinit.\nIf you need a **real package manager** able to support multiple versions \nand configurations of software, consider the following projects:\n\n  * [spack](https://github.com/LLNL/spack)\n  * [easybuild](https://github.com/hpcugent/easybuild)\n\nBoth projects are designed for large supercomputing centers and \nthey already provide configuration files to build Abinit.\n\nPre-compiled versions of Abinit for Linux and MacOSx are also available on the Abinit conda channel:\n\n    $ conda install abinit --channel abinit\n\nThese builds are useful especially if you want to try Abinit on your machine but they are not\nsupposed to be used for high-performance calculations.\nFor further information, please consult the [abinit channel](https://anaconda.org/abinit).\n\n## Getting abiconfig\n\n### From pip\n\nThe easiest way to install abiconf is to use `pip`, as follows:\n\n    pip install git+https://github.com/abinit/abiconfig.git@develop --user\n\nThe `--user` option makes pip install packages in your home directory instead which doesn't require any special privileges.\n\n### From github\n\nThe developmental version is available at the [github repo](https://github.com/abinit/abiconfig).\nClone the repo with:\n\n    $ git clone https://github.com/abinit/abiconfig.git\n\nAfter cloning the source, cd to the abiconfig directory and type:\n\n    $ python setup.py install --user\n\nor\n\n    $ sudo python setup.py install\n\nif you have root privileges on the machine.\n\nPlease fork the project on github, if you plan to contribute to `abiconfig`.\n\n## Using abiconf.py \u003ca name=\"Using_abiconf\"\u003e\u003c/a\u003e\n\nUse:\n\n    $ abiconf.py hostname nic5\n\nto list the configuration files available for the ``nic5`` machine.\nIf the machine name is not provided, the full list of configuration files is printed.\n\nUse:\n\n    $ abiconf.py keys intel mkl\n\nto find the configuration files containing the keywords: ``intel`` and ``mkl`` and\n\n    $ abiconf.py keys\n\nto get the full list of keywords.\n\nOnce you have found a configuration file for your machine in the \nabiconfig database (e.g. ``manneback-gcc-openmpi.ac``), use:\n\n    $ abiconf.py workon manneback-gcc-openmpi.ac\n\nto create the build directory, then follow the instructions reported on the terminal to configure and\ncompile the code.\n\nNote that ``workon`` must be executed within an Abinit directory tree containing the ``configure`` script.\n\nIt's also possible to generate a submission script template with the syntax:\n\n    $ abiconf.py script manneback-gcc-openmpi.ac\n\nand print the ac file to terminal with:\n\n    $ abiconf.py show manneback-gcc-openmpi.ac\n\nUse \n\n    $ abiconf.py doc\n\nto get the documentation of the different options.\n\nUse\n\n    $ abiconf.py --help\n\nto get the list of available commands and\n\n    $ abiconf.py command --help\n\nto list the options supported by ``command``.\n\n## Contributing \u003ca name=\"Contributing\"\u003e\u003c/a\u003e\n\nFork the repo and add your ac file to the ``clusters`` directory.\nEach configuration file must start with a metadata section enclosed between two ``---`` markers.\nThe text between the markers represents a dictionary in json format followed by the\nAbinit configure options in normalized form (remove the initial ``--`` from the option name,\nreplace ``-`` with ``_``).\nExample:\n\n```\n#---\n#{\n#\"hostname\": \"nic4\",\n#\"author\": \"J. Doe\",\n#\"date\": \"2016-09-30\",\n#\"description\": \"Configuration file for nic4. Uses intel compilers, openmpi, mkl (sequential) and external netcdf4/hdf5\",\n#\"keywords\": [\"linux\", \"intel\", \"openmpi\", \"mkl\", \"hdf5\"],\n#\"qtype\": \"slurm\",\n#\"pre_configure\": [\n#   \"module purge\",\n#   \"module load openmpi/1.7.5/intel2013_sp1.1.106\",\n#   \"module load intel/mkl/64/11.1/2013_sp1.1.106\",\n#   \"module load hdf5/1.8.13/openmpi-1.7.5-intel2013_sp1.1.106\",\n#   \"module load netcdf/4.3.2/openmpi-1.7.5-intel2013_sp1.1.106\"\n# ]\n#}\n#---\n\n# Abinit configure options in normalized form follows.\n\n#install architecture-independent files in PREFIX\n#prefix=\"~/local/\"\n\n# MPI/OpenMP\nwith_mpi_prefix=\"${MPI_HOME}\"\nenable_mpi=\"yes\"\nenable_mpi_io=\"yes\"\nenable_openmp=\"no\"\n\n# BLAS/LAPACK provided by MKL (dynamic linking)\n# See https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor\nwith_linalg_flavor=\"mkl\"\nwith_linalg_libs=\"-L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -ldl\"\n```\n\nIf possible, try to avoid hard-coded values e.g. use ``${MKLROOT}`` instead of the full path to the MKL library.\nThe user is supposed to load the modules defined in the ``pre_configure`` section before running ``configure``\nand the modules with automatically set these environment variables.\nThe big advantage is that one link against a different MKL version by just changing the MKL module\ndeclared in the json dictionary.\n\nThe following keywords must be defined in the json dictionary:\n\n  * hostname\n\n    The name of machine (mandatory). Prefer the short version over the long version\n    e.g. use `hmem` instead of `hmem.ucl.ac.be`\n\n  * date\n\n    Creation date in the format `yyyy-mm-dd` e.g. `2011-12-24` (mandatory)\n\n  * author\n\n    The author of the configuration file (mandatory).\n\n  * description\n\n    String or list of strings with info about the configuration file (mandatory)\n\n  * keywords\n\n    List of strings with tags associated to the configuration file (mandatory).\n    Use `abiconf.py keys` to get the list of keywords already used\n    and try to re-use them for new files.\n\n  * pre\\_configure\n\n    List of shell commands to be executed before `configure`.\n    e.g. commands to load modules required to build/run the executables.\n    Optional but highly recommended.\n\n  * post\\_configure\n\n    List of shell commands to be executed after `configure`.\n    Optional\n\n  * post\\_make\n\n    List of shell commands to be executed after `make`.\n    Optional\n\n  * qtype:\n\n    String specifying the resource manager used by the cluster e.g. `qtype: \"slurm\"`.\n    Used by `abiconf script` command to generate a submission script template.\n    Supported values: `[\"shell\", \"slurm\", \"pbspro\", \"sge\", \"moab\", \"bluegene\"]`\n    Optional but highly recommended.\n\n  * qkwargs:\n\n    Dictionary with the options that will be used to generate the template for the given `qtype`.\n    Optional. `qkwargs` can be used to generate a template script that will work with the\n    build specified by the ac file. For example manneback has different Slurm partions\n    with nodes belonging to different intel families.\n    The build defined in `manneback-gcc-openmpi.ac` is not compatible with the Harpertown/Nehalem nodes\n    that must be excluded in the slurm script. To do so, we add:\n    ```\n        qkwargs\": {\"exclude\": \"mb-neh[070,201-212],mb-har[001-014],mb-har[101-116],mb-opt[111-116]\"}\n    ```\n    to the json dictionary. The template generated by `abiconf script manneback-gcc-openmpi-ac` will contain:\n    ```\n        #SBATCH --exclude=mb-neh[070,201-212],mb-har[001-014],mb-har[101-116],mb-opt[111-116]\n    ```\n    See `abiconfig.core.qtemplate` for the list of options that can be specified for each `qtype`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabinit%2Fabiconfig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabinit%2Fabiconfig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabinit%2Fabiconfig/lists"}