This lesson is still being designed and assembled (Pre-Alpha version)

DeapSECURE module 6: Parallel and High-Performance Computing

Key Points

Introduction to Parallel Programming
  • First key point. Brief Answer to questions. (FIXME)

Serial and Parallel Programming
  • Serial computer’s major parts: CPU, memory, storage, Input/Output.

  • Serial programming: one process per cpu in sequential order.

  • Parallel computer: connected multiple computers that can coordinate and communicate.

  • Shared memory: utilizes multi-core threading (within one node).

  • Distributed memory: utilizes explicit message passing to exchange information between processors.

Introduction to MPI: Distributed Memory Programming in Python using mpi4py
  • Processes can exange information using MPI4PY constructs.

  • Messages can be any object types.

  • Commuincations can be peer to peer (comm.send and comm.recv) or collective (comm.gather, comm.scatter…).

  • An MPI4PY COMM_WORLD object is necessary to manage operations between processes.

Communicating Data with MPI
  • FIXME

Problem Decomposition
  • First key point. Brief Answer to questions. (FIXME)

A Template for a Simple Parallel Program
  • Provide a commonly occurring template for a parallel (computational) program.

  • Identify additional pieces in a code as a result of parallelization.

  • Provide a common pattern & workflow of parallelization of a program.

Parallel Computation of Statistics of a Large Array
  • FIXME

Image Encryption for Privacy
  • FIXME

Parallel Computation with Homomorphic Encryption
  • First key point. Brief Answer to questions. (FIXME)

Outro to Real-World Parallel Computing
  • FIXME

Glossary

References

OpenMP