Frage

Ich habe für das Schreiben von parallelem Code OpenMP mit gcc verwendet. Ich bin jetzt mit Visual C ++ 2005 und ich versuche, herauszufinden, wie OpenMP zu verwenden. Es gibt eine Compiler-Option in der Eigenschaften-> C / C ++ / Menü Sprache, aber dann wirft sie die Bibliothek fehlt. Gibt es eine 3rd-Party-Implementierung für OpenMP oder bin ich nur Visual C ++ Konfiguration falsch?

War es hilfreich?

Lösung

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 auf der Windows SDK für Windows Server 2008 und .NET Framework 3.5 . Nach dem Herunterladen müssen Sie sicherstellen, dass entweder vcomp.lib oder vcompd.lib zu Ihrem Programm verknüpft wird.

Als nächstes müssen Sie die DLL haben, die in der Visual C ++ Redistributable Packkage . Dann stellen Sie sicher, dass vcomp90.dll irgendwo in Ihrem Pfad befindet.

Sie müssen auch die OpenMP Compiler-Option aktiviert ist, die in der Eigenschaften-> C / C ++ / Sprachmenü von Visual C ++ zu finden sind.

Danach Sie sollten in der Lage sein OpenMP verwenden gut.

Andere Tipps

Ich denke, t aus der Box mit VC 2005 funktioniert, aber ich bin nicht sicher, ob sie mit allen Versionen zur Verfügung gestellt werden.

Wenn Sie jsut die anhängen

/openmp

Option Sie müssen auch den offenen mp Headers

#include <omp.h>

Dies ist wichtig, weil dieser Header wird das Manifest für Ihre Anwendung hinzuzufügen, die ermöglicht es die vcomp.dll vom korrekten Systempfad zu laden. So ist es normalerweise nicht mehr erlaubt vcomp.dll oder anderen System-DLLs unter dem ausführbaren Datei zu kopieren, aber Sie haben das Manifest Ihrer Anwendung kuppeln die DLL aus der richtigen Stelle zu laden. Dies ist keine automatisch vom omp.h-Header.

So ist der 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;
}

Sie müssen hinzufügen:

/openmp

Um die Compiler-Optionen.

Weitere Informationen finden Sie auf MSDN

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top