{"id":25663517,"url":"https://github.com/bgeneto/siesta-gcc-openmpi-suse","last_synced_at":"2026-02-16T11:36:40.373Z","repository":{"id":138921009,"uuid":"151163016","full_name":"bgeneto/siesta-gcc-openmpi-suse","owner":"bgeneto","description":"Instructions to install siesta with gnu compilers and openmpi on SUSE Linux","archived":false,"fork":false,"pushed_at":"2018-10-06T23:29:11.000Z","size":67,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-07T00:44:04.680Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bgeneto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-10-01T21:30:11.000Z","updated_at":"2024-10-19T22:01:32.000Z","dependencies_parsed_at":"2023-03-30T19:51:50.402Z","dependency_job_id":null,"html_url":"https://github.com/bgeneto/siesta-gcc-openmpi-suse","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bgeneto/siesta-gcc-openmpi-suse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgeneto%2Fsiesta-gcc-openmpi-suse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgeneto%2Fsiesta-gcc-openmpi-suse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgeneto%2Fsiesta-gcc-openmpi-suse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgeneto%2Fsiesta-gcc-openmpi-suse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bgeneto","download_url":"https://codeload.github.com/bgeneto/siesta-gcc-openmpi-suse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bgeneto%2Fsiesta-gcc-openmpi-suse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29506775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2025-02-24T05:16:33.080Z","updated_at":"2026-02-16T11:36:40.368Z","avatar_url":"https://github.com/bgeneto.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"## 0. Purpose \n\nThis document contains step-by-step instructions to proceed with a (hopefully) successful installation of the SIESTA (Spanish Initiative for Electronic Simulations with Thousands of Atoms) software on Linux (tested with OpenSUSE Tumbleweed) using the GCC and OpenMPI tools for parallelism. \n\nTo achieve a parallel build of SIESTA you should ﬁrst determine which type of parallelism you need. It is advised to use MPI for calculations with a moderate number of cores. For hundreds of threads, hybrid parallelism using both MPI and OpenMP may be required.\n\n## 1. Install prerequisite software\n\n*Note: We assume you are running all the commands below as an ordinary (non-root) user, so we use `sudo` when required. \n\n```\nsudo zypper install gcc-c++ gcc-fortran openmpi openmpi-devel readline-devel libxslt-tools\n```\n\n## 2. Create required installation folders\n\n```\nSIESTA_DIR=/opt/siesta\nOPENBLAS_DIR=/opt/openblas\nSCALAPACK_DIR=/opt/scalapack\n\nsudo mkdir $SIESTA_DIR $OPENBLAS_DIR $SCALAPACK_DIR\n# temporally loose permissions\nsudo chmod -R 777 $SIESTA_DIR $OPENBLAS_DIR $SCALAPACK_DIR\n```\n\n## 3. Setup OpenMPI \n\nUnfortunetely, for SUSE, the openmpi installation does not work out of the box, you need to set PATH and LD_LIBRARY_PATH env vars. We recommend you add these lines to a file in your profile.d directory, say `/etc/profile.d/openmpi.sh` so that variables are set correctly for all sessions (see [Section 8](https://github.com/bgeneto/siesta-gcc-openmpi-suse/blob/master/README.md#8-make-siesta-available-for-all-users)). \n\n```\nopenmpipath=/usr/lib64/mpi/gcc/openmpi\nexport PATH=$PATH:$openmpipath/bin\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$openmpipath/lib64:$OPENBLAS_DIR/lib\nexport CPATH=$CPATH:$openmpipath/include\n```\n\nYou can check your current openmpi path on SUSE with the command below: \n\n```\necho $(mpicxx -showme:compile | awk '{ print $1}' | sed 's/-I//; s/\\/include//')\n```\n\n\n## 3. Install prerequisite libraries \n\nIn order to run siesta in parallel using MPI you need non-threaded blas and lapack libraries along with a standard scalapack library.\n\n#### 3.1. Install single-threaded openblas library from source\n\n*Note: zypper installs a threaded version of openblas by default, I think this is not suitable (performance-wise) for this MPI build of siesta.*\n\n```\ncd $OPENBLAS_DIR\nwget -O OpenBLAS.tar.gz https://ufpr.dl.sourceforge.net/project/openblas/v0.3.3/OpenBLAS%200.3.3%20version.tar.gz\ntar xzf OpenBLAS.tar.gz \u0026\u0026 rm OpenBLAS.tar.gz\ncd \"$(find . -name xianyi-OpenBLAS*)\"\nmake DYNAMIC_ARCH=0 CC=gcc FC=gfortran HOSTCC=gcc BINARY=64 INTERFACE=64 \\\n  NO_AFFINITY=1 NO_WARMUP=1 USE_OPENMP=0 USE_THREAD=0 LIBNAMESUFFIX=nonthreaded\nmake PREFIX=$OPENBLAS_DIR LIBNAMESUFFIX=nonthreaded install\n```\n\n#### 3.2. Install scalapack from source\n\n```\ncd $SCALAPACK_DIR\nwget http://www.netlib.org/scalapack/scalapack_installer.tgz\ntar xzf ./scalapack_installer.tgz \u0026\u0026 cd ./scalapack_installer\n./setup.py --prefix $SCALAPACK_DIR --blaslib=$OPENBLAS_DIR/lib/libopenblas_nonthreaded.a \\\n  --lapacklib=$OPENBLAS_DIR/lib/libopenblas_nonthreaded.a --mpibindir=$openmpipath/bin \\\n  --mpiincdir=$openmpipath/include\n```\n\n*Note: Answer 'b' if asked: 'Which BLAS library do you want to use ?'*\n\n## 4. Install siesta from source\n\n```\ncd $SIESTA_DIR\nwget https://launchpad.net/siesta/4.1/4.1-b3/+download/siesta-4.1-b3.tar.gz\ntar xzf ./siesta-4.1-b3.tar.gz \u0026\u0026 rm ./siesta-4.1-b3.tar.gz\n```\n\n#### 4.1. Install siesta library dependencies from source\n\n```\ncd $SIESTA_DIR/siesta-4.1-b3/Docs\nwget https://github.com/ElectronicStructureLibrary/flook/releases/download/v0.7.0/flook-0.7.0.tar.gz\n(./install_flook.bash 2\u003e\u00261) | tee install_flook.log\n```\n\nInstall netcdf dependency (be patient):\n\n```\ncd $SIESTA_DIR/siesta-4.1-b3/Docs\nwget https://zlib.net/zlib-1.2.11.tar.gz\nwget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.18/src/hdf5-1.8.18.tar.bz2\nwget -O netcdf-c-4.4.1.1.tar.gz https://github.com/Unidata/netcdf-c/archive/v4.4.1.1.tar.gz\nwget -O netcdf-fortran-4.4.4.tar.gz https://github.com/Unidata/netcdf-fortran/archive/v4.4.4.tar.gz\n(./install_netcdf4.bash 2\u003e\u00261) | tee install_netcdf4.log\ncd $SIESTA_DIR/siesta-4.1-b3/Docs/build/netcdf/4.4.1.1 \u0026\u0026 ln -s lib64 lib\ncd $SIESTA_DIR/siesta-4.1-b3/Docs/build/hdf5/1.8.18 \u0026\u0026 ln -s lib64 lib\n```\n\nIf anything goes wrong in this step you can check the `install_netcdf4.log` log file.\n\n#### 4.2. Download our custom 'arch.make' file for GCC + OpenMPI build \n\n```\ncd $SIESTA_DIR/siesta-4.1-b3/Obj\nwget -O arch.make https://raw.githubusercontent.com/bgeneto/siesta-gcc-openmpi/master/gnu-openmpi-arch.make\n```\n\n#### 4.3. Build siesta executable \n\n```\ncd $SIESTA_DIR/siesta-4.1-b3/Obj\nsh ../Src/obj_setup.sh\nsudo ln -s $SIESTA_DIR/siesta-4.1-b3/Docs/build/netcdf/4.4.1.1/lib64 $SIESTA_DIR/siesta-4.1-b3/Docs/build/netcdf/4.4.1.1/lib\nmake OBJDIR=Obj\n```\n\n## 5. Revert permissions\n\n```\nsudo chown -R root:root $SIESTA_DIR $OPENBLAS_DIR $SCALAPACK_DIR\nsudo chmod -R 755 $SIESTA_DIR $OPENBLAS_DIR $SCALAPACK_DIR\n```\n\n## 6. Test siesta\n\nLet's copy siesta `Test` directory to our home (where we have all necessary permissions).\n\n```\nSIESTA_DIR=/opt/siesta\nmkdir $HOME/siesta\nrsync -a $SIESTA_DIR/siesta-4.1-b3/Tests/ $HOME/siesta/Tests/\n```\n\nNow create a symbolic link to siesta executable \n\n```\ncd $HOME/siesta\nln -s $SIESTA_DIR/siesta-4.1-b3/Obj/siesta\n```\n\nFinally run some test job:\n\n```\ncd $HOME/siesta/Tests/h2o_dos/\nmake\n```\n\nWe should see the following message at the end:\n\n```\n===\u003e SIESTA finished successfully\n```\n\n## 8. Make siesta available for all users\n\nIf you want to make siesta available to all users you can move the required directories to another location, say `/opt`, and set the required environmental variables system wide:\n\n```\necho \"export PATH=\\$PATH:$openmpi/bin\" | sudo tee --append /etc/profile.d/openmpi.sh \u003e /dev/null\necho \"export export LD_LIBRARY_PATH=\\$LD_LIBRARY_PATH:$openmpipath/lib64:$OPENBLAS_DIR/lib\" | sudo tee --append /etc/profile.d/openmpi.sh \u003e /dev/null\necho \"export CPATH=\\$CPATH:$openmpipath/include\" | sudo tee --append /etc/profile.d/openmpi.sh \u003e /dev/null\n```\n\n## 9. Learning to use siesta\n\nRead the [manual](https://siesta-project.github.io/bsc2017/siesta-4.1.pdf).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbgeneto%2Fsiesta-gcc-openmpi-suse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbgeneto%2Fsiesta-gcc-openmpi-suse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbgeneto%2Fsiesta-gcc-openmpi-suse/lists"}