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
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.
IRIS portable tasks enable flexible task scheduling across different accelerators and application portability across different hardware configurations.
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 at run time, and runs the applications on top of them.
Programmers can write their own new custom scheduling policies, task types and their handlers, and event-driven visualization tools and plug them into IRIS.
IRIS applications can be written in C, C++, Fortran, and/or Python.
iris_task task; iris_task_create(&task); iris_task_kernel(task, "foobar", 1, &size); iris_task_submit(task, iris_gpu);
iris::Task task; task.kernel("foobar", 1, &size); task.submit(iris::iris_gpu);
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)
task = iris.task() task.kernel("foobar", 1, [size]) task.submit(iris.iris_gpu)
An IRIS application can be a seamless mixture of HPC, AI (PyTorch, TensorFlow), and Quantum (Qiskit).
January 2021, Oak Ridge National Laboratory, Oak Ridge, TN, USAIRIS Overview