Massively Parallel Computing is gaining ground in high-performance computing.
CUDA (an extension to C) is most widely used parallel programming framework for
general purpose Graphic processing Units (GPUs).
However, the task of writing
optimized CUDA programs is complex even for experts. We are proposing to develop
an automatic restructuring to optimize CUDA programs for computational science
and engineering applications with following features:
Identifying the condition for maximizing utilization of the GPU resources
and establishing the relationships between the influencing parameters.
Developing algorithms that explore possible tiling solutions
with coalesced memory access and resource optimizations that best meet the
identified restructuring specifications. For this we will tailor the GPU
constraints to achieve maximum performance such as the memory usage (global
memory and shared memory), number of blocks, and number of threads per
block. A restructuring tool (R-CUDA) will be developed to enable optimizing
the performance of CUDA programs based on the restructuring specifications.
Building a 2-D Fluid Flow simulator based on the Navier-Stokes Equations for
fixed boundary conditions. The simulator code will be optimized using the
above restructuring tool to expose maximum data parallelism in dense and
sparse linear algebra solvers.
Extensive testing of the tool using benchmarks from the LAPACK – BLAS
library such as DGEMM, SGEMM, CAXPY and check for correctness.
Also the use of profiling tools such as CUDA Visual Profiler,
Parallel Nsight, TotalView to verify the restructuring specifications. The
simulator will be tested and validated using typical test cases.
The major outcomes of this project are: 1) an automatic
restructuring tool for optimizing the performance of CUDA programs focusing on
dense and sparse linear algebra solvers, (2)
a parallel oil reservoir history matching based on forward sensitivity and
adjoint sensitivity methods,
and (3) a research lab in Massively Parallel Computing and a graduate course in
Computational Science and Engineering.
A restructuring tool to
ease the process of writing efficient CUDA programs
will be developed.
The tool
will be used
to
parallelize the
Reservoir Simulation system for
Well History Matching.
The objective is to
build the expertise and the know-how that will lead to efficiently
writing parallel code for scientific simulators to serve the graduate research
program and the Oil and Gas industry in the kingdom of Saudi Arabia.