Clone Source Tree and Compile

Prepare the necessary toolkits, dependencies and compile hilapp, the S2S compiler of HILA

Compilation of CFT simulation codes developed on HILA requires two steps

    • Compiling source-to-source transcompiler hilapp and installing it to the desired path.
    • Compiling simulation codes with necessary environment variables, which will enable hardware architecture support on HILA.

HILA is developed on Debian/Ubuntu branch of GNU/Linux operating systems. Additionally, it has been shown that HILA's utilities work well on Red Hat Enterprise Linux as well as SUSE Linux Enterprise. After necessary configurations, HILA has also been compiled on FreeBSD systems, which is significantly different from the Linux family of operating systems, particularly the system components. On all systems, downloading HILA's source tree is done by git clone

  • $ git clone https://github.com/CFT-HY/HILA.git

Users and developers using HILA's APIs are welcome to submit their own patches to the HILA github repository. See more on community about contributions and license.

HILA's utilities, including hlapp, are configured and built using GNU make. On Debian/Ubuntu systems, all necessary dependencies for building HILA can be easily installed through APT, see details from documentation.

Dependencies On Supercomputers

In specific situation, compiling hilapp may be difficult or totally impossible on certain supercomputing platforms. This problem is caused by lack of module support for LLVM, which is necessary as described in About page.

There are three major ways to over come this issue:

(1) Users can compile hilapp and link it statically on their own computer with LLVM, and then copy the static-linked binary of hilapp onto the supercomputer, see detail from documentation. This solution only works when the user's computer has the same CPU architecture as the supercomputer. In most cases the architecture is x86_64.

(2) Many HPC systems have Spack installed, and commonly multiple versions of Spack are installed as modules. As a source tree management and building tool dedicated for supercomputing platforms which have Environment Modules and the Slurm Workload Manager available, spack is the recommended tool for building third-party dependencies with optimized configurations on supercomputers. See documentation for detailed instruction.

Another supercomputer accessible alternative to Spack is EasyBuild.

(3) Containerization is also an effective way to bypass the dependency problem of LLVM. Using OS-level virtualization provided by Singularity, hilapp can run just like it were built locally. See details in documentation about how to deploy Singularity or Docker. Prebuilt x86_64 singularity containers of hilapp are available on the release page of HILA's github.