6.1. Ikergune cluster installation

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.

6.1.1. 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.

6.1.2. 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:

module load vivado gcc-arm/6.2.0_aarch64 ompss/arm64_fpga/git

And for ARM 32bits:

module load vivado gcc-arm/6.2.0_gnueabihf ompss/arm32_fpga/git

To list all available modules in the system run:

module avail

Other modules may be required to generate the boot files for some boards, for example: - petalinux

6.1.3. Build applications

To generate an application binary and bitstream, you could refer to Compile OmpSs@FPGA programs as the steps are general enough.

Note thet the appropriate modules need to be loaded. See Module structure.

6.1.4. Running applications

6.1.4.1. 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:

salloc -p [partition]

For instance:

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

6.1.4.2. 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.

6.1.4.3. 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.