Ich habe ein Programm, das unabhängige Berechnungen auf einer Reihe von Bildern durchführt. Dies scheint wie eine gute Idee, OpenMP zu verwenden:Wie kann ich testen, ob C++ openmp verwendet?
//file: WoodhamData.cpp
#include <omp.h>
...
void WoodhamData::GenerateLightingDirection() {
int imageWidth = (this->normalMap)->width();
int imageHeight = (this->normalMap)->height();
#pragma omp paralell for num_threads(2)
for (int r = 0; r < RadianceMaps.size(); r++) {
if (omp_get_thread_num() == 0){
std::cout<<"threads="<<omp_get_num_threads()<<std::endl;
}
...
}
}
Um OpenMP zu verwenden, ich -fopenmp
meine Make-Datei hinzufügen, so gibt sie:
g++ -g -o test.exe src/test.cpp src/WoodhamData.cpp -pthread -L/usr/X11R6/lib -fopenmp --std=c++0x -lm -lX11 -Ilib/eigen/ -Ilib/CImg
aber ich bin traurig zu sagen, mein Programmberichte threads=1
(von Terminal ./test.exe ...
laufen)
Weiß jemand, was könnte falsch sein? Dies ist der langsamste Teil meines Programms, und es wäre großartig, es ein wenig zu beschleunigen.
Kompilieren Sie mit "-Wall" und sehen Sie sich die Warnungen an. –
@Bboson danke, das gab mir genau das, was ich brauchte! Zeigte mir genau das Problem, auf das kjpus hinwies. Verfluche meine schlechte Grammatik. – Kenkron