Domanda

Ho usato OpenMP con gcc per la scrittura di codice parallelo. Ora sto usando Visual C ++ 2005 e sto cercando di capire come usare OpenMP. V'è un'opzione del compilatore nel> C / C ++ / menu Lingua Properties- ma poi si lamenta la libreria è mancante. C'è un'implementazione 3a parte per OpenMP o sto semplicemente configurando Visual C ++ in modo errato?

È stato utile?

Soluzione

Dopo alcune ricerche ho scoperto che le librerie e DLL OpenMP non sono inclusi in Visual C ++ 2005 o Visual C ++ Express Edition 2008. Ma con un paio di soluzioni alternative è possibile farlo funzionare.

Per prima cosa è necessario scaricare i file lib da Microsoft che si possono trovare presso il di Windows SDK per Windows Server 2008 e .NET framework 3.5 . Dopo averlo scaricato è necessario fare in modo che sia vcomp.lib o vcompd.lib è in corso legate al programma.

Avanti è necessario avere la dll che può essere trovato nel Visual C ++ Redistributable Packkage . Quindi assicurarsi che vcomp90.dll è da qualche parte nel tuo percorso.

È inoltre necessario avere la possibilità OpenMP compilatore abilitata che si trova nella Proprietà-> C / C ++ / menu Lingua di Visual C ++.

Dopo di che si dovrebbe essere in grado di utilizzare OpenMP bene.

Altri suggerimenti

Credo che t funziona out of the box con VC 2005, ma non sono sicuro se sono dotati di tutte le versioni.

Se sono finite collega il

/openmp

opzione si hanno anche per includere l'intestazione mp aperto

#include <omp.h>

Questo è importante perché questa intestazione aggiungerà il manifesto per l'applicazione che gli permette di caricare il vcomp.dll dal percorso di sistema corretto. Così è normalmente non è più permesso di copiare vcomp.dll o altre DLL di sistema sotto la vostra eseguibile ma devi magnaccia il manifesto della vostra applicazione per caricare la DLL dalla posizione corretta. Questa non è automaticamente l'intestazione omp.h.

Quindi, il codice minimo se non si vuole modyfy vostro manifesto proprio è:

#include <omp.h> // has to include this header to build the correct manifest to find vcom.dll or vcompd.dll

int main(int argc, char* argv[])
{
  double sum;
#pragma omp parallel for
  for(int i = 0; i < 10000; ++i) {

  }
    return 0;
}

È necessario aggiungere:

/openmp

Per le opzioni del compilatore.

Maggiori informazioni sono disponibili sul MSDN

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top