SlideShare a Scribd company logo
1 of 35
Download to read offline
An Overview of Parallel computing
Jayanti Prasad
Inter-University Centre for Astronomy & Astrophysics
Pune, India (411007)
May 20, 2011
Plan of the Talk
Introduction
Parallel platforms
Parallel Problems & Paradigms
Parallel Programming
Summary and conclusions
High-level view of a computer system
Why parallel computation ?
The speed with which a single processor can process data
(number of instructions per second, FLOPS) cannot be
increased indefinitely.
It is difficult to cool faster CPUs.
Faster CPUs demand smaller chip size which again creates
more heat.
Using a fast/parallel computer :
Can solve existing problems/more problems in less time.
Can solve completely new problems leading to new findings.
In Astronomy High Performance Computing is used for two
main purposes
Processing large volume of data
Dynamical simulations
References :
Ananth Grama et. al. 2003, Introduction to Parallel Computing, Addison Wesley
Kevin Dowd & Charles R. Severance, High Performance Computing, OReily
Performance
Computation time for different problems may depend on the
followings:
Input-Output:- problems which require a lot of disk
read/write.
Communication:- Problems, like dynamical simulations need
a lot of data to be communicated among processors. Fast
inter-connects (Gig-bit Ethernet, Infiniband, Myrinet etc.) are
highly recommended.
Memory:- Problems which need a large amount of data to
be available in the main memory (DRAM), demand more
memory. Latency and bandwidth are very important.
Processor:- Problems in which a large number or
computations have to be done.
Cache :- Better memory hierarchy (RAM,L1,L2,L3..) and
efficient use of that benefits all problems.
Performance measurement and benchmarking
FLOPS:- Computational power is measured in units of
Floating Point Operations Per Second or FLOPS (Mega, Giga,
Tera, Peta,.. FLOPS).
Speed UP:-
Speed Up =
T1
TN
(1)
where T1 is the time needed to solve a problem on one
processor and Tn is the time needed to solve that on N
processors.
Pipeline
If we want to add two numbers we need five computational steps:
If we have one functional unit for every step then the addition still
requires five clock cycles, however, all the units being busy at the
same time, one result is produced every cycle. Reference : Tobias Wittwer 2005,
An Introduction to Parallel Programming
Vector Processors
A processor that performs one instruction on several data sets
is called a vector processor.
The most common form of parallel computation is in the form
of Single Instruction Multiple Data (SIMD) i.e., same
computational steps are applied on different data sets.
Problems which can be broken into small problems for
parallelization are called embarrassingly parallel problems e.g.,
SIMD.
Multi-core Processors
That part of a processor which execute instructions in an
application is called a core.
Note that in a multiprocessor system we can have each
processor having one core or more than one cores.
In general the number of hardware threads are equal to the
number of cores.
In some processors one core can support more than one
software threads.
A multi-core processor presents multiple virtual CPUs to the
user and operating system which are not physically countable
but OS can give you clue (check /proc).
Reference : Darryl Gove, 2011, Multi-core Application Programming, Addison-Wesley
Shared Memory System
Distributed Memory system
Topology : Star, N-Cube, Torus ...
Parallel Problems
Scalar Product
S =
N
X
i=1
Ai Bi (2)
Linear-Algebra: Matrix multiplication
Cij =
M
X
k=1
AikBkj (3)
Integration
y = 4
Z 1
0
dx
1 + x2
(4)
Dynamical simulations
fi =
N
X
j=1
mj (~
xj − ~
xi )
(|~
xj − ~
xi |)3/2
(5)
Models of parallel programming: Fork-Join
Models of parallel programming: Master-Slave
Synchronization
More than one processors working on a single problem must
coordinate (if the problem is not embarrassingly parallel
problem).
The OpenMp CRITICAL directive specifies a region of code
that must be executed by only one thread at a time.
The BARRIER (in OpenMp, MPI etc.,) directive
synchronizes all threads in the team.
In pthreads Mutexes are used to avoid data inconsistencies
due to simultaneous operations by multiple threads upon the
same memory area at the same time.
Partitioning or decomposing a problem: Divide and
conquer
Partitioning or decomposing a problem is related to the
opportunities for parallel execution.
On the basis of whether we are diving the executions or data
we can have two type of decompositions:
Functional decomposition
Domain decomposition
Load balance
Domain decomposition
Figure: The left figure shows the use of orthogonal recursive bisection
and the right one shows Peano-Hilbert space filling curve for domain
decomposition. Note that parts which have Peano-Hilbert keys close to
each other are physically also close to each other.
Examples: N-body, antenna-baselines, sky maps (l,m)
Mapping and indexing
Indexing in MPI
MPI Comm rank(MPI COMM WORLD, &id);
Indexing in OpenMP
id = omp get thread num();
Indexing in CUDA
1 tid=threadIdx.x + blockDim.x*( threadIdx.y+blockDim.y * threadIdx.z);
2 bid=blockIdx.x + gridDim.x * blockIdx.y;
3 nthreads = blockDim.x * blockDim.y * blockDim.z;
4 nblocks = gridDim.x * gridDim.y;
5 id = tid + nthreads * bid;
1 dim3 dimGrid(grszx ,grszy), dimBlock(blsz ,blsz ,blsz ); 
2 VecAdd $<<< dimGrid ,dimBlock >>>$ ();
Mapping
A problem of size N can be divided among NP processors in
the following ways:
A processor with identification number id get the data
between the data index istart and iend where
istart = id ×
N
Np
(6)
iend = (id + 1) ×
N
Np
(7)
Every processor can pick data skipping NP elements
for(i = 0; i < N; i+ = Np) (8)
Note that N/Np may not always an integer so keep load
balance in mind.
Shared Memory programming : Threading Building Blocks
Intel Threading building blocks (ITBB) is provided in the form
of C++ runtime library which and can run on any platform.
The main advantage of TBB is that it works at a higher level
than raw threads, yet does not require exotic languages or
compilers.
Most threading packages require you to create, join, and
manage threads. Programming directly in terms of threads
can be tedious and can lead to inefficient programs because
threads are low-level, heavy constructs that are close to the
hardware.
TBB runtime library automatically schedules tasks onto
threads in a way that makes efficient use of processor
resources. The runtime is very effective in load-balancing also.
Shared Memory programming : Pthreads
1 # include <pthread.h>
2 void * print_hello_world (void * param) {
3 long tid =( long)param;
4 printf("Hello world from %ld ! n",tid );
5 }
6
7 int main(int argc , char *argv []){
8 pthread_t mythread[NTHREADS ];
9 long i;
10 for(i=0; i < NTHREADS; i++)
11 pthread_create (& mythread[i],NULL ,& print_hello_world ,( void *)i);
12 pthread_exit (NULL );
13 return (0);
14 }
Reference : David R. Butenhof 1997, Programming with Posix threads, Addison-Wesley
Shared Memory programming : OpenMp
No need to make any change in the structure of the program.
Need only three things to be done :
#include< omp.h >
#pragma omp parallel for shared () private ()
-fopenmp when compiling
In general available on all GNU/Linux system by default
References :
Rohit Chandra et. al. 2001, Parallel Programming in OpenMP, Morgan Kaufmann
Barbara Chapman et. al. 2008, Using OpenMP, MIT Press
http://www.iucaa.ernet.in/∼jayanti/openmp.html
OpenMP: Example
1 # include <stdio.h>
2 # include <omp.h>
3 int main (int argc , char*argv []){
4 int nthreads , tid , numthrd;
5 // set the number of threads
6 omp_set_num_threads (atoi(argv [1]));
7
8 # pragma omp parallel private(tid)
9
10 {
11 tid = omp_get_thread_num (); // obtain the thread id
12
13 nthreads = omp_get_num_threads (); // find number of threads
14
15 printf("tHello World from thread %d of %dn", tid ,nthreads );
16
17 }
18 return (0);
19 }
Distributed Memory Programming : MPI
MPI is a solution for very large problems
Communication
Point to Point
Collective
Communication overhead can dominate computation and it
may be hard to get linear scaling.
Is distributed in the form of libraries e.g., libmpi,libmpich or in
the form of compilers e.g., mpicc,mpif90.
Programs have to be completely restructured.
References :
Gropp, William et. al. 1999, Using MPI 2, MIT Press
http://www.iucaa.ernet.in/∼jayanti/mpi.html
MPI : Example
1 # include <stdio.h>
2 # include <mpi.h>
3 int main(int argc , char *argv []){
4 int rank , size , len;
5 char name[ MPI_MAX_PROCESSOR_NAME ];
6 MPI_Init (&argc , &argv );
7 MPI_Comm_rank (MPI_COMM_WORLD , &rank );
8 MPI_Comm_size (MPI_COMM_WORLD , &size );
9 MPI_Get_processor_name (name , &len);
10 printf ("Hello world! I’m %d of %d on %sn", rank , size , name );
11 MPI_Finalize ();
12 return (0);
13 }
GPU Programming : CUDA
Programming language similar to C with few extra constructs.
Parallel section is written in the form of kernel which is
executed on GPU.
Two different memory spaces : one for CPU and another of
GPU. Data has to be explicitly copied back and forth.
A very large number of threads can be used. Note that GPU
cannot match the complexity of CPU. It is mostly used for
SIMD programming.
References :
David B. Kirk and Wen-mei W. Hwu 2010, Programming Massively Parallel Processors, Morgan Kaufmann
Jason Sanders & Edward Kandrot 2011, Cuda By examples, Addison-Wesley
http://www.iucaa.ernet.in/∼jayanti/cuda.html
CUDA : Example
1 __global__ void force_pp(float *pos_d , float *acc_d ,int n){
2
3 int tidx = threadIdx.x;
4 int tidy = threadIdx.y;
5 int tidz = threadIdx.z;
6
7 int myid = (blockDim.z * (tidy+blockDim.y *tidx )) + tidz;
8 int nthreads = blockDim.z * blockDim.y * blockDim.x;
9
10 for(int i = myid; i < n; i+= nthreads ){
11 for(int l=0; l < ndim; l++)
12 acc_d[l+ndim*i] = ...;
13
14 }//
15 __syncthreads ();
16 }
17 // this was the device part
1 dim3 dimGrid (1);
2 dim3 dimBlock(BLOCK_SIZE , BLOCK_SIZE ,BLOCK_SIZE );
3 cudaMemcpy(pos_d , pos ,npart*ndim*sizeof(float), cudaMemcpyHostToDevice );
4 force_pp <<< dimGrid ,dimBlock >>>( pos_d ,acc_d ,npart );
5 cudaMemcpy(acc ,acc_d ,npart*ndim*sizeof(float), cudaMemcpyDeviceToHost );
Nvidia Quadro FX 3700
— General Information for device 0 —
Name: Quadro FX 3700
Compute capability: 1.1
Clock rate: 1242000
Device copy overlap: Enabled
Kernel execition timeout : Disabled
— Memory Information for device 0 —
Total global mem: 536150016
Total constant Mem: 65536
Max mem pitch: 262144
Texture Alignment: 256
— MP Information for device 0 —
Multiprocessor count: 14
Shared mem per mp: 16384
Registers per mp: 8192
Threads in warp: 32
Max threads per block: 512
Max thread dimensions: (512, 512, 64)
Max grid dimensions: (65535, 65535, 1)
Dynamic & static libraries
Most of the open source software are distributed in the form of
source codes and from which libraries are created for the use.
In general libraries are not portable.
One of the most common problems which a user face is due
to not linking libraries.
The most common way to create libraries is: source code −→
object code −→ library.
gcc -c first.c
gcc -c second.c
ar rc libtest.a first.o second.o
gcc -shared -Wl,-soname, libtest.so.0 -o libtest.so.0 first.o second.o -lc
The above library can be used in the following way
gcc program.c -L/LIBPATH -ltest
Dynamic library gets preference over static one.
Hyper threading
Hyper-Threading Technology used in Intel R
Xeon
TM
and
Intel R
Pentium
TM
4 processors, makes a single physical
processor appear as two logical processors to the operating
system.
Hyper-Threading duplicates the architectural state on each
processor, while sharing one set of execution resources.
sharing system resources, such as cache or memory bus, may
degrade system performance and Hyper-Threading can
improve the performance of some applications, but not all.
Summary
It is not easy to make a super-fast single processor so
multi-processor computing is the only way to get more
computing power.
When more than one processors (cores) share the same
memory shared memory programming is uded e.g.,
pthread,OpenMp, itbb etc.
Shared memory programming is fast and it easy to get linear
scaling since communication is not an issue.
When processors having their own memory are used for
parallel computation, distributed memory programming is
used e.g., MPI, PVM.
Distributed memory programming is the main way to solve
large problems (when thousands of processors are needed).
General Purpose Graphical Processing Units (GPGPU) can
provide very high performance at very low cost, however,
programming is somewhat complicated and parallelism is
limited to only SIMD.
Top 10
Thank You !

More Related Content

Similar to parallel-computation.pdf

Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingRuymán Reyes
 
6-9-2017-slides-vFinal.pptx
6-9-2017-slides-vFinal.pptx6-9-2017-slides-vFinal.pptx
6-9-2017-slides-vFinal.pptxSimRelokasi2
 
Parallel processing (simd and mimd)
Parallel processing (simd and mimd)Parallel processing (simd and mimd)
Parallel processing (simd and mimd)Bhavik Vashi
 
parellel computing
parellel computingparellel computing
parellel computingkatakdound
 
Parallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPParallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPAnil Bohare
 
IRJET- Latin Square Computation of Order-3 using Open CL
IRJET- Latin Square Computation of Order-3 using Open CLIRJET- Latin Square Computation of Order-3 using Open CL
IRJET- Latin Square Computation of Order-3 using Open CLIRJET Journal
 
Intermachine Parallelism
Intermachine ParallelismIntermachine Parallelism
Intermachine ParallelismSri Prasanna
 
Introduction to parallel computing using CUDA
Introduction to parallel computing using CUDAIntroduction to parallel computing using CUDA
Introduction to parallel computing using CUDAMartin Peniak
 
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...David Walker
 
Understand and Harness the Capabilities of Intel® Xeon Phi™ Processors
Understand and Harness the Capabilities of Intel® Xeon Phi™ ProcessorsUnderstand and Harness the Capabilities of Intel® Xeon Phi™ Processors
Understand and Harness the Capabilities of Intel® Xeon Phi™ ProcessorsIntel® Software
 
parallel programming models
 parallel programming models parallel programming models
parallel programming modelsSwetha S
 
Accelerating Real Time Applications on Heterogeneous Platforms
Accelerating Real Time Applications on Heterogeneous PlatformsAccelerating Real Time Applications on Heterogeneous Platforms
Accelerating Real Time Applications on Heterogeneous PlatformsIJMER
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladevPavel Tsukanov
 

Similar to parallel-computation.pdf (20)

Directive-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous ComputingDirective-based approach to Heterogeneous Computing
Directive-based approach to Heterogeneous Computing
 
6-9-2017-slides-vFinal.pptx
6-9-2017-slides-vFinal.pptx6-9-2017-slides-vFinal.pptx
6-9-2017-slides-vFinal.pptx
 
25-MPI-OpenMP.pptx
25-MPI-OpenMP.pptx25-MPI-OpenMP.pptx
25-MPI-OpenMP.pptx
 
20090720 smith
20090720 smith20090720 smith
20090720 smith
 
Parallel processing (simd and mimd)
Parallel processing (simd and mimd)Parallel processing (simd and mimd)
Parallel processing (simd and mimd)
 
parellel computing
parellel computingparellel computing
parellel computing
 
Parallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPParallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMP
 
IRJET- Latin Square Computation of Order-3 using Open CL
IRJET- Latin Square Computation of Order-3 using Open CLIRJET- Latin Square Computation of Order-3 using Open CL
IRJET- Latin Square Computation of Order-3 using Open CL
 
Intermachine Parallelism
Intermachine ParallelismIntermachine Parallelism
Intermachine Parallelism
 
Data race
Data raceData race
Data race
 
Introduction to parallel computing using CUDA
Introduction to parallel computing using CUDAIntroduction to parallel computing using CUDA
Introduction to parallel computing using CUDA
 
Introduction to GPUs in HPC
Introduction to GPUs in HPCIntroduction to GPUs in HPC
Introduction to GPUs in HPC
 
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
 
Parallel Computing
Parallel ComputingParallel Computing
Parallel Computing
 
Understand and Harness the Capabilities of Intel® Xeon Phi™ Processors
Understand and Harness the Capabilities of Intel® Xeon Phi™ ProcessorsUnderstand and Harness the Capabilities of Intel® Xeon Phi™ Processors
Understand and Harness the Capabilities of Intel® Xeon Phi™ Processors
 
parallel programming models
 parallel programming models parallel programming models
parallel programming models
 
Accelerating Real Time Applications on Heterogeneous Platforms
Accelerating Real Time Applications on Heterogeneous PlatformsAccelerating Real Time Applications on Heterogeneous Platforms
Accelerating Real Time Applications on Heterogeneous Platforms
 
Parallel computing persentation
Parallel computing persentationParallel computing persentation
Parallel computing persentation
 
cnsm2011_slide
cnsm2011_slidecnsm2011_slide
cnsm2011_slide
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladev
 

More from Jayanti Prasad Ph.D. (13)

thesis_seminar.pdf
thesis_seminar.pdfthesis_seminar.pdf
thesis_seminar.pdf
 
pso2015.pdf
pso2015.pdfpso2015.pdf
pso2015.pdf
 
nbody_iitk.pdf
nbody_iitk.pdfnbody_iitk.pdf
nbody_iitk.pdf
 
likelihood_p2.pdf
likelihood_p2.pdflikelihood_p2.pdf
likelihood_p2.pdf
 
likelihood_p1.pdf
likelihood_p1.pdflikelihood_p1.pdf
likelihood_p1.pdf
 
doing_parallel.pdf
doing_parallel.pdfdoing_parallel.pdf
doing_parallel.pdf
 
Artificial Intelligence - Anna Uni -v1.pdf
Artificial Intelligence - Anna Uni -v1.pdfArtificial Intelligence - Anna Uni -v1.pdf
Artificial Intelligence - Anna Uni -v1.pdf
 
Scikit-learn1
Scikit-learn1Scikit-learn1
Scikit-learn1
 
CMB Likelihood Part 2
CMB Likelihood Part 2CMB Likelihood Part 2
CMB Likelihood Part 2
 
CMB Likelihood Part 1
CMB Likelihood Part 1CMB Likelihood Part 1
CMB Likelihood Part 1
 
Cmb part3
Cmb part3Cmb part3
Cmb part3
 
Cmb part2
Cmb part2Cmb part2
Cmb part2
 
Cmb part1
Cmb part1Cmb part1
Cmb part1
 

Recently uploaded

办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一F La
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一F sss
 
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degreeyuu sss
 
Effects of Smartphone Addiction on the Academic Performances of Grades 9 to 1...
Effects of Smartphone Addiction on the Academic Performances of Grades 9 to 1...Effects of Smartphone Addiction on the Academic Performances of Grades 9 to 1...
Effects of Smartphone Addiction on the Academic Performances of Grades 9 to 1...limedy534
 
Customer Service Analytics - Make Sense of All Your Data.pptx
Customer Service Analytics - Make Sense of All Your Data.pptxCustomer Service Analytics - Make Sense of All Your Data.pptx
Customer Service Analytics - Make Sense of All Your Data.pptxEmmanuel Dauda
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfLars Albertsson
 
Data Science Jobs and Salaries Analysis.pptx
Data Science Jobs and Salaries Analysis.pptxData Science Jobs and Salaries Analysis.pptx
Data Science Jobs and Salaries Analysis.pptxFurkanTasci3
 
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /WhatsappsBeautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsappssapnasaifi408
 
Call Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceCall Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceSapana Sha
 
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理e4aez8ss
 
9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home ServiceSapana Sha
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样vhwb25kk
 
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptdokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptSonatrach
 
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPramod Kumar Srivastava
 
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFAAndrei Kaleshka
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]📊 Markus Baersch
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)jennyeacort
 
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Sapana Sha
 

Recently uploaded (20)

办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
 
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
办理学位证中佛罗里达大学毕业证,UCF成绩单原版一比一
 
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲中央昆士兰大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
 
Effects of Smartphone Addiction on the Academic Performances of Grades 9 to 1...
Effects of Smartphone Addiction on the Academic Performances of Grades 9 to 1...Effects of Smartphone Addiction on the Academic Performances of Grades 9 to 1...
Effects of Smartphone Addiction on the Academic Performances of Grades 9 to 1...
 
Customer Service Analytics - Make Sense of All Your Data.pptx
Customer Service Analytics - Make Sense of All Your Data.pptxCustomer Service Analytics - Make Sense of All Your Data.pptx
Customer Service Analytics - Make Sense of All Your Data.pptx
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdf
 
Data Science Jobs and Salaries Analysis.pptx
Data Science Jobs and Salaries Analysis.pptxData Science Jobs and Salaries Analysis.pptx
Data Science Jobs and Salaries Analysis.pptx
 
Call Girls in Saket 99530🔝 56974 Escort Service
Call Girls in Saket 99530🔝 56974 Escort ServiceCall Girls in Saket 99530🔝 56974 Escort Service
Call Girls in Saket 99530🔝 56974 Escort Service
 
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /WhatsappsBeautiful Sapna Vip  Call Girls Hauz Khas 9711199012 Call /Whatsapps
Beautiful Sapna Vip Call Girls Hauz Khas 9711199012 Call /Whatsapps
 
Call Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceCall Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts Service
 
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
 
9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service9654467111 Call Girls In Munirka Hotel And Home Service
9654467111 Call Girls In Munirka Hotel And Home Service
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
 
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.pptdokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
dokumen.tips_chapter-4-transient-heat-conduction-mehmet-kanoglu.ppt
 
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptxPKS-TGC-1084-630 - Stage 1 Proposal.pptx
PKS-TGC-1084-630 - Stage 1 Proposal.pptx
 
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
How we prevented account sharing with MFA
How we prevented account sharing with MFAHow we prevented account sharing with MFA
How we prevented account sharing with MFA
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
 
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
Saket, (-DELHI )+91-9654467111-(=)CHEAP Call Girls in Escorts Service Saket C...
 

parallel-computation.pdf

  • 1. An Overview of Parallel computing Jayanti Prasad Inter-University Centre for Astronomy & Astrophysics Pune, India (411007) May 20, 2011
  • 2. Plan of the Talk Introduction Parallel platforms Parallel Problems & Paradigms Parallel Programming Summary and conclusions
  • 3. High-level view of a computer system
  • 4. Why parallel computation ? The speed with which a single processor can process data (number of instructions per second, FLOPS) cannot be increased indefinitely. It is difficult to cool faster CPUs. Faster CPUs demand smaller chip size which again creates more heat. Using a fast/parallel computer : Can solve existing problems/more problems in less time. Can solve completely new problems leading to new findings. In Astronomy High Performance Computing is used for two main purposes Processing large volume of data Dynamical simulations References : Ananth Grama et. al. 2003, Introduction to Parallel Computing, Addison Wesley Kevin Dowd & Charles R. Severance, High Performance Computing, OReily
  • 5. Performance Computation time for different problems may depend on the followings: Input-Output:- problems which require a lot of disk read/write. Communication:- Problems, like dynamical simulations need a lot of data to be communicated among processors. Fast inter-connects (Gig-bit Ethernet, Infiniband, Myrinet etc.) are highly recommended. Memory:- Problems which need a large amount of data to be available in the main memory (DRAM), demand more memory. Latency and bandwidth are very important. Processor:- Problems in which a large number or computations have to be done. Cache :- Better memory hierarchy (RAM,L1,L2,L3..) and efficient use of that benefits all problems.
  • 6. Performance measurement and benchmarking FLOPS:- Computational power is measured in units of Floating Point Operations Per Second or FLOPS (Mega, Giga, Tera, Peta,.. FLOPS). Speed UP:- Speed Up = T1 TN (1) where T1 is the time needed to solve a problem on one processor and Tn is the time needed to solve that on N processors.
  • 7.
  • 8. Pipeline If we want to add two numbers we need five computational steps: If we have one functional unit for every step then the addition still requires five clock cycles, however, all the units being busy at the same time, one result is produced every cycle. Reference : Tobias Wittwer 2005, An Introduction to Parallel Programming
  • 9. Vector Processors A processor that performs one instruction on several data sets is called a vector processor. The most common form of parallel computation is in the form of Single Instruction Multiple Data (SIMD) i.e., same computational steps are applied on different data sets. Problems which can be broken into small problems for parallelization are called embarrassingly parallel problems e.g., SIMD.
  • 10. Multi-core Processors That part of a processor which execute instructions in an application is called a core. Note that in a multiprocessor system we can have each processor having one core or more than one cores. In general the number of hardware threads are equal to the number of cores. In some processors one core can support more than one software threads. A multi-core processor presents multiple virtual CPUs to the user and operating system which are not physically countable but OS can give you clue (check /proc). Reference : Darryl Gove, 2011, Multi-core Application Programming, Addison-Wesley
  • 11.
  • 13. Distributed Memory system Topology : Star, N-Cube, Torus ...
  • 14. Parallel Problems Scalar Product S = N X i=1 Ai Bi (2) Linear-Algebra: Matrix multiplication Cij = M X k=1 AikBkj (3) Integration y = 4 Z 1 0 dx 1 + x2 (4) Dynamical simulations fi = N X j=1 mj (~ xj − ~ xi ) (|~ xj − ~ xi |)3/2 (5)
  • 15. Models of parallel programming: Fork-Join
  • 16. Models of parallel programming: Master-Slave
  • 17. Synchronization More than one processors working on a single problem must coordinate (if the problem is not embarrassingly parallel problem). The OpenMp CRITICAL directive specifies a region of code that must be executed by only one thread at a time. The BARRIER (in OpenMp, MPI etc.,) directive synchronizes all threads in the team. In pthreads Mutexes are used to avoid data inconsistencies due to simultaneous operations by multiple threads upon the same memory area at the same time.
  • 18. Partitioning or decomposing a problem: Divide and conquer Partitioning or decomposing a problem is related to the opportunities for parallel execution. On the basis of whether we are diving the executions or data we can have two type of decompositions: Functional decomposition Domain decomposition Load balance
  • 19. Domain decomposition Figure: The left figure shows the use of orthogonal recursive bisection and the right one shows Peano-Hilbert space filling curve for domain decomposition. Note that parts which have Peano-Hilbert keys close to each other are physically also close to each other. Examples: N-body, antenna-baselines, sky maps (l,m)
  • 20. Mapping and indexing Indexing in MPI MPI Comm rank(MPI COMM WORLD, &id); Indexing in OpenMP id = omp get thread num(); Indexing in CUDA 1 tid=threadIdx.x + blockDim.x*( threadIdx.y+blockDim.y * threadIdx.z); 2 bid=blockIdx.x + gridDim.x * blockIdx.y; 3 nthreads = blockDim.x * blockDim.y * blockDim.z; 4 nblocks = gridDim.x * gridDim.y; 5 id = tid + nthreads * bid; 1 dim3 dimGrid(grszx ,grszy), dimBlock(blsz ,blsz ,blsz ); 2 VecAdd $<<< dimGrid ,dimBlock >>>$ ();
  • 21. Mapping A problem of size N can be divided among NP processors in the following ways: A processor with identification number id get the data between the data index istart and iend where istart = id × N Np (6) iend = (id + 1) × N Np (7) Every processor can pick data skipping NP elements for(i = 0; i < N; i+ = Np) (8) Note that N/Np may not always an integer so keep load balance in mind.
  • 22. Shared Memory programming : Threading Building Blocks Intel Threading building blocks (ITBB) is provided in the form of C++ runtime library which and can run on any platform. The main advantage of TBB is that it works at a higher level than raw threads, yet does not require exotic languages or compilers. Most threading packages require you to create, join, and manage threads. Programming directly in terms of threads can be tedious and can lead to inefficient programs because threads are low-level, heavy constructs that are close to the hardware. TBB runtime library automatically schedules tasks onto threads in a way that makes efficient use of processor resources. The runtime is very effective in load-balancing also.
  • 23. Shared Memory programming : Pthreads 1 # include <pthread.h> 2 void * print_hello_world (void * param) { 3 long tid =( long)param; 4 printf("Hello world from %ld ! n",tid ); 5 } 6 7 int main(int argc , char *argv []){ 8 pthread_t mythread[NTHREADS ]; 9 long i; 10 for(i=0; i < NTHREADS; i++) 11 pthread_create (& mythread[i],NULL ,& print_hello_world ,( void *)i); 12 pthread_exit (NULL ); 13 return (0); 14 } Reference : David R. Butenhof 1997, Programming with Posix threads, Addison-Wesley
  • 24. Shared Memory programming : OpenMp No need to make any change in the structure of the program. Need only three things to be done : #include< omp.h > #pragma omp parallel for shared () private () -fopenmp when compiling In general available on all GNU/Linux system by default References : Rohit Chandra et. al. 2001, Parallel Programming in OpenMP, Morgan Kaufmann Barbara Chapman et. al. 2008, Using OpenMP, MIT Press http://www.iucaa.ernet.in/∼jayanti/openmp.html
  • 25. OpenMP: Example 1 # include <stdio.h> 2 # include <omp.h> 3 int main (int argc , char*argv []){ 4 int nthreads , tid , numthrd; 5 // set the number of threads 6 omp_set_num_threads (atoi(argv [1])); 7 8 # pragma omp parallel private(tid) 9 10 { 11 tid = omp_get_thread_num (); // obtain the thread id 12 13 nthreads = omp_get_num_threads (); // find number of threads 14 15 printf("tHello World from thread %d of %dn", tid ,nthreads ); 16 17 } 18 return (0); 19 }
  • 26. Distributed Memory Programming : MPI MPI is a solution for very large problems Communication Point to Point Collective Communication overhead can dominate computation and it may be hard to get linear scaling. Is distributed in the form of libraries e.g., libmpi,libmpich or in the form of compilers e.g., mpicc,mpif90. Programs have to be completely restructured. References : Gropp, William et. al. 1999, Using MPI 2, MIT Press http://www.iucaa.ernet.in/∼jayanti/mpi.html
  • 27. MPI : Example 1 # include <stdio.h> 2 # include <mpi.h> 3 int main(int argc , char *argv []){ 4 int rank , size , len; 5 char name[ MPI_MAX_PROCESSOR_NAME ]; 6 MPI_Init (&argc , &argv ); 7 MPI_Comm_rank (MPI_COMM_WORLD , &rank ); 8 MPI_Comm_size (MPI_COMM_WORLD , &size ); 9 MPI_Get_processor_name (name , &len); 10 printf ("Hello world! I’m %d of %d on %sn", rank , size , name ); 11 MPI_Finalize (); 12 return (0); 13 }
  • 28. GPU Programming : CUDA Programming language similar to C with few extra constructs. Parallel section is written in the form of kernel which is executed on GPU. Two different memory spaces : one for CPU and another of GPU. Data has to be explicitly copied back and forth. A very large number of threads can be used. Note that GPU cannot match the complexity of CPU. It is mostly used for SIMD programming. References : David B. Kirk and Wen-mei W. Hwu 2010, Programming Massively Parallel Processors, Morgan Kaufmann Jason Sanders & Edward Kandrot 2011, Cuda By examples, Addison-Wesley http://www.iucaa.ernet.in/∼jayanti/cuda.html
  • 29. CUDA : Example 1 __global__ void force_pp(float *pos_d , float *acc_d ,int n){ 2 3 int tidx = threadIdx.x; 4 int tidy = threadIdx.y; 5 int tidz = threadIdx.z; 6 7 int myid = (blockDim.z * (tidy+blockDim.y *tidx )) + tidz; 8 int nthreads = blockDim.z * blockDim.y * blockDim.x; 9 10 for(int i = myid; i < n; i+= nthreads ){ 11 for(int l=0; l < ndim; l++) 12 acc_d[l+ndim*i] = ...; 13 14 }// 15 __syncthreads (); 16 } 17 // this was the device part 1 dim3 dimGrid (1); 2 dim3 dimBlock(BLOCK_SIZE , BLOCK_SIZE ,BLOCK_SIZE ); 3 cudaMemcpy(pos_d , pos ,npart*ndim*sizeof(float), cudaMemcpyHostToDevice ); 4 force_pp <<< dimGrid ,dimBlock >>>( pos_d ,acc_d ,npart ); 5 cudaMemcpy(acc ,acc_d ,npart*ndim*sizeof(float), cudaMemcpyDeviceToHost );
  • 30. Nvidia Quadro FX 3700 — General Information for device 0 — Name: Quadro FX 3700 Compute capability: 1.1 Clock rate: 1242000 Device copy overlap: Enabled Kernel execition timeout : Disabled — Memory Information for device 0 — Total global mem: 536150016 Total constant Mem: 65536 Max mem pitch: 262144 Texture Alignment: 256 — MP Information for device 0 — Multiprocessor count: 14 Shared mem per mp: 16384 Registers per mp: 8192 Threads in warp: 32 Max threads per block: 512 Max thread dimensions: (512, 512, 64) Max grid dimensions: (65535, 65535, 1)
  • 31. Dynamic & static libraries Most of the open source software are distributed in the form of source codes and from which libraries are created for the use. In general libraries are not portable. One of the most common problems which a user face is due to not linking libraries. The most common way to create libraries is: source code −→ object code −→ library. gcc -c first.c gcc -c second.c ar rc libtest.a first.o second.o gcc -shared -Wl,-soname, libtest.so.0 -o libtest.so.0 first.o second.o -lc The above library can be used in the following way gcc program.c -L/LIBPATH -ltest Dynamic library gets preference over static one.
  • 32. Hyper threading Hyper-Threading Technology used in Intel R Xeon TM and Intel R Pentium TM 4 processors, makes a single physical processor appear as two logical processors to the operating system. Hyper-Threading duplicates the architectural state on each processor, while sharing one set of execution resources. sharing system resources, such as cache or memory bus, may degrade system performance and Hyper-Threading can improve the performance of some applications, but not all.
  • 33. Summary It is not easy to make a super-fast single processor so multi-processor computing is the only way to get more computing power. When more than one processors (cores) share the same memory shared memory programming is uded e.g., pthread,OpenMp, itbb etc. Shared memory programming is fast and it easy to get linear scaling since communication is not an issue. When processors having their own memory are used for parallel computation, distributed memory programming is used e.g., MPI, PVM. Distributed memory programming is the main way to solve large problems (when thousands of processors are needed). General Purpose Graphical Processing Units (GPGPU) can provide very high performance at very low cost, however, programming is somewhat complicated and parallelism is limited to only SIMD.