1. Main Research Topic

The main topic of my research is Task Based parallel programming and its advantages in High Performance Computing. Using Task Based programming has started by my supervisor Elisabeth Larsson since 2008 and a shared memory framework is already developed within this research group. I mainly work on a distributed version framework and bind the frameworks together to have a hybrid way of parallelism in distributed and shared memory environments.

2. Task Based Parallel Programming

Task based parallelism, lets the programmer to write a program in sequential way using tasks that work on data. There is no need for the program to contain explicit concurrency controls and constructs like parallel for loops or mutex and locks. The tasks and their dependency to data are defined and submitted to the framework which extracts the available parallelism and schedules them to run in parallel.

3. Software

3.1. DuctTeip framework.

It is the distributed version of the SuperGlue framework see here. These frameworks run data-dependent tasks in parallel. The SuperGlue framework is used for shared memory multi-core architectures and DuctTeip is using Message Passing mechanism for distributed memory/computing environments. Using these two frameworks together, a program can run in parallel in a hybrid way.

3.1. Unified Task Programming (UTP)

This is an abstraction layer over task based frameworks that hides the differences among frameworks while providing a single interface for the programmer to use tasks and data in a generic way. This framework defines a generic interaction protocol between task-based frameworks that inter-operate to each other to define, submit and run the tasks.

Writing wrappers around existing frameworks to meet the protocol requirements, makes them ready to cooperate with each other using UTP layer. The main achievements in UTP are:

The task based frameworks can switched on/off at run time.

Using UTP, the program can run on any compliant task-based framework

Using wrappers around following frameworks:

DuctTeip (distributed environment)

SuperGlue (multi-cores architectures)

BLAS library (cpu)

cuBLAS library (cuda BLAS for GPU)

a single program written in UTP, can be executed in hybrid and heterogeneous combinations of parallel processors on multi nodes/cores/GPU's with no change.