OpenMP og parallel computing

2006-07-26, Lars Sommer Nedenstående er kortfattede egne noter i forbindelse med at anvende OpenMP og lignende til parallel computing opgaver.

Målinger på større programmer (compilere (gcc), antivirus/-spam, firewall og lign)?

Tools til at måle med:
intels compiler har noget vtune til det
oprofile på sf.net
suns compiler har en analyser

OpenMP
openmp.org
Behøver SMP, f.eks multi-core (CMP), multi-thread (CMT), dual-xeon med hyper-threading

compiler directives og support function library

kan bruges i c, c++ og fortran

implementeret som
GOMP (OpenMP for GCC(fra 4.1)),
OMPi ( www.cs.uoi.gr/~ompi ), preprocesser før kompilering
og i en del compilere (suns og intels bla)

God dokumentation på compunity.org/speci/spec25.pdf

Eksempel:

main{
#pragma omp parallel
{
	printf hello world
}
}

Hvis compileren ikke kender pragma omp, springes det blot over.
Med env var, kan antal tråde sættes:
$ OMP_NUM_THREADS=2 ./hello
hello
hello


#ifdef _OPENMP
#include <omp.h>
#endif
main{
	int t_id =0;
#pragma omp parallel private(t_id)  // t_id er privat for tråden
{
	printf ("hello world %d", omp_get_thread_num());
}
}

bruger fork/join -model:

    f ------> j
    o ------> o
--->r ------> i ----->
    k ------> n
|     |         |
single proces   |
      |         |
      parallel processes
                |
		single process




Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *