# OpenMP, MPI, brauch ich oder brauch ich nicht?

## musv

Hi, 

wie man aus dem anderen Thread entnehmen konnte, installier ich grad meine neue Kiste. Das ist ein Athlon64 X2 (für mehr hat die Haushaltskasse leider nicht gereicht.)

Jetzt hat das Ding 2 CPU-Kerne, wie sich jeder weiß. Und da bin ich bei der Konfiguration der USE-Flags auf so einige Dinge gestoßen, bei denen ich nicht wirklich weiter wußte. Da gibt's: 

OpenMP

MPI

und was weiß der Geier. 

Da ist die Rede von Parallelisierung bis hin zu Cluster. Hat das einen Sinn, sowas auf meiner Kiste zu aktivieren? Und wenn ja, welche der Use-Flags für Parallelisierung sind sinnvoll und welche nicht?

----------

## Polynomial-C

Angeregt durch deinen Post, habe ich eben mal testweise das openmp useflag gesetzt bei mir und prompt fegt mein dual quad-core System nur so durch das Kompilieren von beispielsweise gcc (eins der wenigen Pakete, welches das openmp useflag überhaupt hat): 

Ohne openmp

```
     Mon Dec 29 12:10:07 2008 >>> sys-devel/gcc-4.3.2-r2

       merge time: 1 hour, 15 minutes and 54 seconds.
```

Mit openmp

```
     Thu Jan 22 18:54:09 2009 >>> sys-devel/gcc-4.3.2-r2

       merge time: 19 minutes and 48 seconds.
```

Ich würde also sagen, daß openmp zumindest bei ein paar Paketen das Kompilieren etwas beschleunigen kann.

----------

## samsonus

das sind beides frameworks die dich unterstuetzen deinen programmcode zu parallelisieren.

openmp ist zb geeignet fuer speichergekoppelte systeme

und mpi fuer nachrichtengekoppelte systeme (kann aber auch auf speichergekoppelten Systemen eingesetzt werden)

openmp wird durch setzen von pragmas im c code erreicht, der gcc kann diese pragmas dann aufloesen, wenn das useflag gesetzt ist, ansonsten benoetigt man den openmp compiler.

alles in allem, wenn du programmierst und dein programm parallelisieren willst und nicht alles per hand (pthreads) realisieren willst, dann solltest du die useflags setzen.

----------

## Necoro

```
Zakarumiy profiles # grep -R "openmp" *

[...]

default/linux/make.defaults:USE="${USE} fortran mudflap openmp"
```

Also zu mindestens beim 2008.0 Profil sollte openmp auch schon standardmäßig aktiviert sein  :Smile: 

/edit: GIMP hat übrigens auch ein smp useflag. Das macht sicherlich auch Sinn anzuschalten, wenn man GIMP benutzt auf einem SMP-System.

----------

