Department of Information Technology

Afshin Zafari

assistant undergoing research training at Department of Information Technology, Division of Scientific Computing

+4618-471 2990
Visiting address:
Room POL ITC 2350 ITC, Lägerhyddsv. 2, hus 2
752 37 UPPSALA
Postal address:
Box 337
751 05 UPPSALA

Short presentation

PhD student in Scientific Computing, interested in Parallel Programming and High Perfrmance Computing.

Also available at

My courses


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

Main features of DuctTeip are:

  • Transparent asynchronous communication overlapping with computations

  • Data partitioning in hierarchical multi-levels (locality)

  • Decentralized task submission and execution (scalability)

 The code repository can be found on GitHub.

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

4. Teaching

  • Programming Bridging course 10hp, 1TD046, Python, C/C++
    • HT15 Main Teacher 
    • HT14 Teaching Assistant
    • HT13 Teaching Assistant

5. Presentations

  • SIAM PP16. Unified Interface for Task Based Frameworks
  • SIAM PP14. DuctTeip: A Task-Based Parallel Programming Framework with Modularity, Scalability and Adaptability Features


Please contact the directory administrator for the organization (department or similar) to correct possible errors in the information.

Updated  2016-09-28 11:21:50 by Afshin Zafari.