OpenMP in Visual Studio 2005 Standard
-
21-08-2019 - |
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?
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