Practicum

INTRODUCTION

The following examples are meant to demonstrate some concrete examples of how the different parallelism constructs from Tech Pack 1 may be applied. There are two broad categories of example -- Method examples and Mini-Applications. The Method examples are constructed to demonstrate key numerical techniques that may be useful in a variety of situations. The Mini-Application examples take this to a more advanced level, demonstrating solutions to specific game or science problems.

 

Method Examples

Finding the area under a curve -- Numerical Integration

Numerical integration is an important technique for solving many different problems. To demonstrate the method, we utilize one type of numerical integration in order to calculate the value of Pi, since the end result is an easy one to compare to.

Implementations: serial, openmp, tbb, pthreads, winthreads, go, mpi, cuda, arbb

Find out more

 

Depth-first search of graph

Finding a particular value that has been stored in a graph requires a strategy. Depth-first search is one such strategy. The implementations here demonstrate the technique using

Implementations: serial, windows threads, (tbb)

Find out more

 

Finding the area under a curve -- Monte Carlo Methods

For some surfaces, the approach used in the numerical integration section may be difficult to apply. Monte Carlo methods utilize statistics and random sampling to estimate the area instead of directly calculating it. Again, by way of demonstration we utilize the method to calculate Pi.

Implementations: serial, openmp, mpi, pthreads, go, (cuda?, cilk plus?)

Find out more

 

Mini-Application Examples

 

Drug Design problem

We take a map-reduce strategy for computations to match candidate drug molecules to a target protein, implemented in common multi-core parallel computing technologies and in the Hadoop map-reduce framework that is often used in cloud computing.

Implementations: serial, OpenMP, Boost threads, go, Hadoop; TBB containers

Find out more

 

Akari

Akari is a game designed by Nikoli that has elements of sudoku, mine sweeper, and several classic chess problems. This mini-application builds a program to automatically solve this problem using a search pattern called branch-and-bound.

Implementations: serial, openmp tasks (implemented 3 ways), (tbb tasks, cilk tasks)

Find out more

 

Game of Life

The Game of Life is a cellular automata devised by mathematician John Conway in 1970. It has found its way into screen savers, graphic backgrounds, and, indeed, games. The application here demonstrates basic techniques for cellular automata simulations — techniques which often also find application in image convolution and matrix multiplication.

Implementations: serial C, CUDA

Find out more