IRIS

From Edge To Exascale

A unified framework across multiple programming platforms

IRIS enables programmers to write portable programs across diverse heterogeneous architectures from edge to exascale. An IRIS application can exploit multiple programming platforms including CUDA, Hexagon, HIP, Level Zero, OpenCL, and OpenMP at the same time. #Tasking #CPU #GPU #FPGA #DSP #C/C++ #Fortran #Python #Snapdragon #Summit

IRIS is developed by Oak Ridge National Laboratory and is freely available under the BSD 3-Clause license.

GitHub

 

Features

Orchestrating multiple programming platforms

IRIS provides task-based programming and execution models. A task is portable across all the available programming platforms and can be run on any accelerator in the system.

Flexible task scheduling and portable applications

IRIS portable tasks enable flexible task scheduling across different accelerators and application portability across different hardware configurations.

Write once, build once, run anywhere

Programmers do not need to re-compile and even re-link their applications for different target architectures. IRIS automatically discovers all the available accelerators and their programming platforms in the target system on run time, and runs the applications on top of them.

Customizable plugins

Programmers can write their own new custom scheduling policies, task types and their handlers, and event-driven visualization tools and plug them into IRIS.

Multiple languages support

IRIS applications can be written in C, C++, Fortran, and/or Python.

C

iris_task task;
iris_task_create(&task);
iris_task_kernel(task, "foobar", 1, &size);
iris_task_submit(task, iris_gpu);

C++

iris::Task task;
task.kernel("foobar", 1, &size);
task.submit(iris::iris_gpu);

Fortran

INTEGER(8) :: TASK
CALL IRIS_TASK_CREATE(TASK, IERROR)
CALL IRIS_TASK_KERNEL(TASK, "foobar", 1, SIZE, IERROR)
CALL IRIS_TASK_SUBMIT(TASK, IRIS_GPU, IERROR)

Python

task = iris.task()
task.kernel("foobar", 1, [size])
task.submit(iris.iris_gpu)

HPC + AI + Quantum

An IRIS application can be a seamless mixture of HPC, AI (PyTorch, TensorFlow), and Quantum (Qiskit).

 

Docs

The IRIS programming guide is hosted on GitHub Pages and Read the Docs.

Programming Guide Programming Guide

 

Events

IRIS Overview @ IRIS mini workshop

January 2021, Oak Ridge National Laboratory, Oak Ridge, TN, USA

slide

 

Publications

IRIS: A Portable Runtime System Exploiting Multiple Heterogeneous Programming Systems HPEC 2021

Jungwon Kim, Seyong Lee, Beau Johnston, Jeffrey S. Vetter

doi pdf slide

Toward Performance Portable Programming for Heterogeneous Systems on a Chip: A Case Study with Qualcomm Snapdragon SoC HPEC 2021

Anthony Cabrera, Seth Hitefield, Jungwon Kim, Seyong Lee, Narasinga Rao Miniskar, Jeffrey S. Vetter

doi pdf slide

 

Team

Jungwon Kim

Lead

Jeffrey S Vetter

PI

Seyong Lee

Beau Johnston

Pedro Valero-Lara

Narasinga Rao Miniskar

2021 iris-programming.com