Table of Contents

Quantum Computing and Stream Programming

Context

This thesis fits in the context of our quantum computing research, specifically the CRYPTASC project of the Brussels' region in cooperation with the ULB. If interested, there is also the possibility for a more theoretical research topic around this project.

Background

Quantum

Quantum computations are inherently parallel, many operations are executed simultaneously on large quantities of data. By simulating these quantum-parallel processes in a classical way, the representation data will grow exponentially; a system of 30 qubits will need to be represented by an order of 2^30 classical bits. This means we quickly surpass the possibility of personal computers and even large high-performance systems. Simulation of quantum computing and information is critical because there still is no programmable quantum hardware available. A way to alleviate some of the exponential growth is by using the parallelism inherent in quantum computations.

Parallel

In short, there is a urgent need for a) parallel computation and b) distribution of data for the simulation of quantum computing. Writing distributed applications isn't easy. A lot of research has been dedicated to this topic: functional programming, threads & locks, data- & task parallelism, transactions, actors, etc. However, no good technique has been found that allows the programmer to express his programs as usual to have it compiled into a parallel version, despite great efforts. In practice the programmer is completely responsible for all aspects of the problem: distribution of data, parallel algorithms, performance bottleneck, etc. In this thesis we approach the problem in a radically different way by using Stream Programming. This programming paradigm forces the programmer to write in such a style that allows for much better automatic parallelization. This approach has already been used in related fields such as signal & video processing, physics simulations, protein folding, etc. The goal of this thesis is to develop a stream programming inspired environment that allows for efficient simulation of quantum computations.

Thesis

Practically, this thesis consists of different parts.

First you will need to dive into the parallel programming literature, stream programming specifically. You will learn about many different languages, approaches libraries and applications on the topic of parallel programming. You will also have to learn the basics of quantum computation, which is not as daunting as it sounds. There also are several related quantum simulators you will familiarize yourself with. With this background you can formulate several language construct and features that will have to be incorporated in a single quantum simulation language. The implementation platform remains open; be it the IBM Cell processor, GPUs (CUDA, OpenCL, BrookGPU) or cluster machines. The foundation of this work has already been laid by previous thesis work on this subject; a framework for high-performance stream computing for the Cell. In this context there is a cooperation with the De Nayer institute, which provides their Cell Blade server for our experiments.

Contacts