.. index:: single: ikergune Ikergune cluster installation ============================= .. _installation_ikergune: The `OmpSs@FPGA releases `__ are automatically installed in the Ikergune cluster. They are available through a module file for each target architecture. This document describes how to load and use the modules to compile an example application. Once the modules are loaded, the workflow in the Ikergune cluster should be the same as in the Docker images. General remarks --------------- * All software is installed in a version folder under the ``/apps`` directory. * During the updates, the installation will not be available for the users' usage. * Usually, the installation just takes 20 minutes. * After the installation, an informative email will be sent. .. _ikergune-modules: Module structure ---------------- The ompss modules are: * ompss/arm64\_fpga/*[release version]* * ompss/arm32\_fpga/*[release version]* Both require having some vivado loaded and a cross-gcc. For example, to load the toolchain for aarch64 git version we need to execute: .. code:: bash module load vivado gcc-arm/6.2.0_aarch64 ompss/arm64_fpga/git And for ARM 32bits: .. code:: bash module load vivado gcc-arm/6.2.0_gnueabihf ompss/arm32_fpga/git To list all available modules in the system run: .. code:: bash module avail Other modules may be required to generate the boot files for some boards, for example: - petalinux Build applications ------------------ To generate an application binary and bitstream, you could refer to :ref:`compile-ompssatfpga-programs` as the steps are general enough. Note thet the appropriate modules need to be loaded. See :ref:`ikergune-modules`. Running applications -------------------- Log into a worker node (interactive jobs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Ikergune cluster uses SLURM in order to manage access to computation resources. Therefore, to log into a worker node, an allocation in one of the partitions have to be made. There are 2 partitions in the cluster: \* ``ikergune-eth``: arm32 zynq7000 (7020) nodes \* ``ZU102``: Xilinx zcu102 board In order to make an allocation, you must run ``salloc``: .. code:: bash salloc -p [partition] For instance: .. code:: bash salloc -p ikergune-eth Then get the node that has been allocated for you: :: squeue The output should look similar to this: :: JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 8547 ikergune- bash afilguer R 16:57 1 Node-3 Then, you can log into your node: :: ssh ethNode-3 Load ompss kernel module ^^^^^^^^^^^^^^^^^^^^^^^^ The ompss-fpga kernel module has to be loaded before any application using fpga accelerators can be run. Kernel module binaries are provided in :: /apps/[arch]/ompss/[release]/kernel-module/ompss_fpga.ko Where ``arch`` is one of: * ``arm32`` * ``arm64`` ``release`` is one of the ompss@fpga releases currently installed. For instance, to load the 32bit kernel module for the ``git`` release, run: :: sudo insmod /apps/arm32/ompss/git/kernel-module/ompss_fpga.ko You can also run ``module avail ompss`` for a list of the currently installed releases. Loading bistreams ^^^^^^^^^^^^^^^^^ The fpga bitstream also needs to be loaded before the application can run. The ``load_bitstream`` utility is provided in order to simplify the FPGA configuration. :: load_bitstream bitstream.bin Note that the ``.bin`` file is being loaded. Trying to load the ``.bit`` file will result in an error.