OpenMP in C++, a toy example
Example
Create a file test.cpp
#include <iostream>
#include <thread>
#include <chrono>
#include <omp.h>
#include <vector>
#include <stdlib.h>
int f(int i) {
std::this_thread::sleep_for (std::chrono::seconds(1));
return i;
}
int main(int argc, char* argv[])
{
int n_threads = atoi(argv[1]);
std::cout << n_threads << " threads ..." << std::endl;
std::vector<int> M(25);
#pragma omp parallel for num_threads(n_threads)
for (int i=0; i<25; i++)
M[i] = f(i);
return 0;
}
and compile with
g++ test.cpp -fopenmp -std=c++11 -o test.exe
and run it:
[GW] time ./test.exe 1
1 threads ...
real 0m25.004s
user 0m0.000s
sys 0m0.000s
[GW] time ./test.exe 2
2 threads ...
real 0m13.002s
user 0m0.000s
sys 0m0.000s
[GW] time ./test.exe 4
4 threads ...
real 0m7.003s
user 0m0.016s
sys 0m0.000s
Contact
Gao Wang