Parallel Computer for Artificial Intelligence Using MPI or GPU or OpenMP

2017 COE Engineering Design Project (NM05)


Faculty Lab Coordinator

Nagi Mekhiel

Topic Category

Software / Intelligent Instrumentation

Preamble

Parallel Computers are now available at low cost and are used to run applications that need more computing power. There are important applications in Science as weather prediction, or Engineering as crash test for new cars, CAD to design VLSI, Medicine to develop new Vaccines, search huge data base, and multimedia as animation The project will enable students to build a parallel computer using available off shelves computers then select an application that needs the power of parallel computer. Students will learn also how to write efficient parallel code that targets the specific parallel computer model they built and measure the performance improvements and know how to deal with performance limitations

Objective

To build a real parallel computer, then write efficient parallel code that improves the performance of an application that requires significant computing power. The system scalability will be measured and optimized and must give performance improvements proportional to the number of parallel nodes used. Also the performance bottleneck and limitation must be explained and identified.

Partial Specifications

-Parallel computer must use more than 4 processors
-The application must be time consuming to run in a single processor
-For MPI it must be connected to a fast network with known parameters
-Use windows or UNIX OS
-Use C, C++

Suggested Approach

-MPI USING WINDOWS FOR PARALLEL APPLICATIONS
Download MPI required Software to run a parallel application under windows OS.
Your project must use a compiler C or Fortran to compile a parallel application, and Run it on multiple processors . Evaluate performance gain from using parallel processing and find the effect of communication, synchronization and other overhead used to support parallel computing on performance.

-MPI USING UNIX/LINUX FOR PARALLEL APPLICATIONS
Download MPI required Software to run a parallel application under UNIX/LINUX OS.
Your project must use a compiler C or Fortran to compile a parallel application, and Run it on multiple processors . Evaluate performance gain from using parallel processing and find the effect of communication, synchronization and other overhead used to support parallel computing on performance.


-OPENMP USING WINDOWS FOR PARALLEL APPLICATIONS
Download OPENMP required Software to run a parallel application under windows OS.
Your project must use a compiler C or Fortran to compile a parallel application, and Run it on multiple processors . Evaluate performance gain from using parallel processing and find the effect of communication, synchronization and other overhead used to support parallel computing on performance.


-OPENMP USING UNIX/LINUX FOR PARALLEL APPLICATIONS
Download OPENMP required Software to run a parallel application under UNIX/LINUX OS.
Your project must use a compiler C or Fortran to compile a parallel application, and Run it on multiple processors . Evaluate performance gain from using parallel processing and find the effect of communication, synchronization and other overhead used to support parallel computing on performance.

-GPU-accelerated computing is the use of a graphics processing unit (GPU) together with a CPU to accelerate scientific, analytics, engineering.

Useful Links:
http://www.mcs.anl.gov/research/projects/mpich2/
http://openmp.org/wp/
http://www.cygwin.com/
http://phase.hpcc.jp/Omni/ http://boinc.berkeley.edu/wiki/GPU_computing
http://www.eecg.toronto.edu/~moshovos/CUDA08/doku.php?id=project_presentations_reports_source_code
http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#axzz4JoOkC2j9

Group Responsibilities

The group is responsible to work to achieve the following:- -Selecting the Application that requires parallel computing power -Read all references related about the application and why it requires the parallel computer -Select a suitable parallel computer model (MPI, or OpenMP or GPU or combination) -Select OS to be used -Install software for the Model -Write efficient parallel code for application that uses the selected model -Define performance issues, bottleneck and try to eliminate it -Try to change the algorithm used for application to be suitable for parallelism -Evaluate and measure performance gain and scalability of system -write report of the findings and procedures for this project

Student A Responsibilities

-Reading about the application and collecting references about methods used to run it -Define sequential code used to run the application -define the size and scope of application and expected performance when using parallel computing

Student B Responsibilities

-Identify a suitable parallel programming model to be used -Install software and test the model -Convert sequential code to parallel code and compile then run on parallel computer

Student C Responsibilities

-Define suitable algorithm for parallel code and optimize the code -measure performance of parallel application and identify limitations and bottlenecks -Write report to explain project and achievement gained

Course Co-requisites

 


NM05: Parallel Computer for Artificial Intelligence Using MPI or GPU or OpenMP | Nagi Mekhiel | Not yet submitted at No time