Izzat's researh interests are in programming frameworks for systems with heterogeneous processors and memories. His work is divided into the following main thrusts:

Thrust #1: Work Scheduling on GPU Systems

Effective work scheduling on GPUs is key to achieving good performance. Features such as dynamic parallelism and unified virtual memory give GPUs more autonomy and flexibility, but they expand the scope of scheduling and make it more complex. Our work on KLAP (MICRO’16) demonstrates that aggregation and promotion of kernels launched with dynamic parallelism can lead to more efficient scheduling of thread blocks by reducing launch overhead and achieving better work overlap and resource utilization. Our work on Chai (ISPASS’17) demonstrates that collaborative techniques taking advantage of unified virtual memory can lead to better work scheduling across CPUs and accelerators.

Thrust #2: Performance Portable Programming

Heterogeneous systems provide great opportunities for high performance and energy efficiency via processors specialization. However, they come with the burden of having to maintain multiple versions of source code to be able to run one's algorithms on different devices. To address this issue, our work on MxPA (CGO’15) demonstrates that OpenCL code written for GPUs can also be executed efficiently on CPUs via locality-centric scheduling techniques. Furthermore, our work on Tangram (MICRO’16) presents a higher-level programming model for targetting different processors from the same source code via codelet composition and tuning.

Thrust #3: Memory-centric Programming

Emerging memory technologies have enabled machines with much larger byte-addressable persistent memories. Our work on SpaceJMP (ASPLOS’16) presents techniques for efficient management of large memories and sharing of memory objects. Our work on SAVI Objects (OOPSLA’17) enables sharing of polymorphic objects in memory by dealing with the challenges presented by virtual function table pointers.