The
Triton Petascale Data Analysis Facility is a collection of 32-way
servers that are well provisioned with memory (up to 512GB).
Carry out a significant implementation of a single application
or an application suite.
Discuss limitations to scalability along with
performance tradeoffs and performance programming techniques needed
to deliver high performance.
Carry out detailed performance studies.
You may have a favorite application, or you may find one on the internet.
You may use any serial code that you find,
but you may not use existing parallel code, regardless of how parallelized.
Your codes may be implemented in OpenMP or pthreads.
This project can be done by many teams as the possibilities for
applications or application suites are endless.
Scalable message passing implementation
This is the same as the previous option, except on distributed
non-shared memory with MPI. You may use the Triton Cluster
or Lincoln (Intel Xeon portion only, rather than the Tesla GPUs). An interesting option is to construct a "multi-tier"
implementation that combines message passing with threads (either
with OpenMP or pthreads); this more involved project is suitable for a
team of 3.
GPU implementation
This is the same as the previous two options, except using the GPU.
At the moment I have access to nVidia GPUs only, but if you have
access to another variety (e.g. ATI), that is also an option.
If you use the nVIDIA GPU,
you will program in CUDA. I am also interested in comparing
CUDA implementations against applications
written with PGI’s "accelerator mode" dialect.
Another option is to implement a hybrid CUDA-MPI variant,
similar to the previous option but with CUDA (or the PGI "accelerator mode"
dialect) instead of OpenMP/pthreads.
This ambitious project may be more suitable for a 3 person
team than a 2 person team.
If you are interested, see me early
on.
It would also be possible to have multiple teams coordinate
their efforts, see me about the details.
Parallel Java
Parallel Java is an interface and middleware for parallel programming in
Java.
You may download a free copy
at the PJ Website.
Install the software on the Triton resource and implement
some scalable applications. There are various options, and there
is plenty of interesting work for more than one team.
PJ supports both shared memory and message passing. Compare
performance of PJ applications against MPI, pthreads, or OpenMP.
Run on 32 cores on shared memory, or at least 512 cores with message
passing. You could also implement a multi-tier variant (discussed
previously) that utilizes
both shared memory and message passing.
Matching Send/Receive Problem (Cluster)
As we know, the message passing model employs two-sided
communication, in which each message there is an explicit sender and recipient.
Thus, for each send there must be a matching receive, and vice versa.
However, it is not possible to perform this analysis statically;
the problem is undecidable.
In this project, you'll write a run time support package
to enable you to run an MPI program and to generate a report
of dynamically
executed, matched send/receive pairs, including their arguments,
and identifying call sites.
Applications
Here is a growing list of applications and application suites
www.qcmethod.com
The Quasicontinuum (QC) method, a mixed continuum and atomistic
approach for simulating the mechanical response of
polycrystalline materials at zero temperature.