Multiple processors or cores working in parallel as one integrated system.

Normally, on a single geographical location with no network involved.

  • A processor (CPU) is the central unit responsible for executing instructions in a system

    • This CPU can have multiple cores

      • Each Core is capable of working on its own
      • Multiple cores within a processor enable parallel processing and improved performance
  • Multiple CPU with multiple cores can exist in a computer system

    • These parallel CPUs communicate with each other using a System Bus

      This system bus connects multiple CPUs as well as a central shared memory

  • Consist of

    • Multi-core Architecture

      • Only CPUs work simultaneously
    • Many-core Architecture

      • Additional components work simultaneously with the CPU, i.e GPU
  • Pthreads and OpenMP Paradigms are used to implement Parallel Computing

Need

  • Uniprocessors are fast but

    • They cannot concurrently execute multiple tasks

    • They can’t do

      • Weather Simulation
      • Online Gaming
      • Web Servers
      • Code Breaking
    • Performance needs are increasing day by day

      • As a result, we have moved from Uniprocessor systems to Multiprocessor systems

        Thus, moving towards Parallel Computing

Requirements

  • Proper communication and synchronisation mechanisms between the processes and the sub-tasks
  • The program must have low coupling and higher cohesion

Performance

  • Moore’s Law

    • Number of transistors incorporated in a chip will approximately double every 18 months

    • Does doubling the transistors double the speed?

      • True for Single Core Chips

      • False for Multi Core Chips because:

        This does not increase the internal communication of the CPU Cores

    • Does Moore’s Law hold forever?

      No, it doesn’t

      • Adding multiple cores on a single chip can cause heat issues
      • Increasing the number of cores requires more communication and thus speed can not increase
  • Measuring Efficiency

    Assigning variables and displaying results can be sequential while iterating through a loop is parallel in nature

    • Good Parallel hardware
    • Good system software
    • Good sequential algorithms
    • Good Parallel algorithms