2009-05-14 23 views
4

Ich habe OpenMP mit gcc zum Schreiben von parallelem Code verwendet. Ich benutze jetzt Visual C++ 2005 und versuche herauszufinden, wie man OpenMP benutzt. Es gibt eine Compiler-Option im Menü Eigenschaften-> C/C++/Sprache, aber dann beschwert es sich, dass die Bibliothek fehlt. Gibt es eine Implementierung von Drittanbietern für OpenMP oder wird Visual C++ nur falsch konfiguriert?OpenMP in Visual Studio 2005 Standard

+0

Dies scheint auch für Visual Studio 2008 Standard anzuwenden. – batty

Antwort

7

Nach einigen Recherchen fand ich heraus, dass die OpenMP-Libs und DLLs sind nicht mit Visual C++ 2005 oder Visual C++ Express Edition 2008. Aber mit ein paar Abhilfen enthalten, die Sie bekommen können es arbeiten .

Zuerst müssen Sie die lib-Dateien von Microsoft herunterladen, die unter Windows SDK for Windows Server 2008 and .NET framework 3.5 gefunden werden können. Nach dem Download müssen Sie sicherstellen, dass entweder vcomp.lib oder vcompd.lib mit Ihrem Programm verknüpft ist.

Als nächstes brauchen Sie die DLL, die in der Visual C++ Redistributable Packkage gefunden werden kann. Stellen Sie dann sicher, dass sich vcomp90.dll irgendwo in Ihrem Pfad befindet.

Sie müssen auch die OpenMP-Compiler-Option aktiviert haben, die im Menü Eigenschaften-> C/C++/Sprache von Visual C++ gefunden werden kann.

Danach sollten Sie in der Lage sein, OpenMP gut zu verwenden.

+0

Es ist auch nicht in den Standard-Versionen enthalten, soweit ich das beurteilen kann. Klingt, als ob Sie Professional oder Team System-Versionen benötigen. Hier ist ein Blogbeitrag, der die obigen Antworten bestätigt. http://kenny-tm.xanga.com/651048063/parallel-programming-using-openmp-with-visual-c-2008-express/ – batty

+0

Ich weiß, das ist alt, aber ich konnte OpenMP mit Visual arbeiten C++ 2008, indem Sie einfach das oben verlinkte SDK installieren. Mußte die anderen erwähnten Schritte nicht machen, aber sie könnten für andere Leute funktionieren. – Justin

1

Sie müssen hinzufügen:

/openmp 

Um die Compiler-Optionen.

Weitere Informationen finden Sie auf MSDN

6

Ich denke, t arbeitet mit VC 2005 out of the Box, aber ich bin mir nicht sicher, ob sie mit allen Versionen zur Verfügung gestellt werden.

Wenn Sie das anhängen jsut

/openmp 

Option müssen Sie auch das offene mp Header enthalten

#include <omp.h> 

Dies ist wichtig, weil dieser Header das Manifest zu Ihrer Anwendung hinzufügen wird, was es ermöglicht um die vcomp.dll aus dem richtigen Systempfad zu laden. So ist es normalerweise nicht mehr erlaubt, vcomp.dll oder andere System Dlls unter Ihrer ausführbaren Datei zu kopieren, aber Sie müssen das Manifest Ihrer Anwendung aufladen, um die DLL von der richtigen Stelle zu laden. Dies wird vom Header omp.h nicht automatisch ausgeführt.

So die minimale Code, wenn Sie nicht wollen, Ihr Manifest auf eigene Faust modyfy ist:

#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; 
} 
+0

Ich habe die Include-Datei vermisst (war nicht im Tutorial, dem ich folgte ...) Ein guter Grund, die Includes immer in Tutorials zu zeigen! – Urchin