There is my code. It does compile without any errors, but it doesn't output anything. When I open program.exe it instantly is closed even if I add "cin.get()" at the end of program. When used in terminal it doesnt cout anything. echo $? returns a false value. I have other similar programs (for testing OpenMP) which are also compiled but works as intended. It must some kind of problem with gcc. Any ideas?
#include <iostream>
#include <string>
#include <iomanip>
#include <omp.h>
#include <cstdio>
using namespace std;
const long num_steps = 300'000'000;
int main(int argc, char *argv[])
{
cout << setprecision(15) << fixed;
const unsigned num_threads = stoi(argv[1]);
int i, nthreads;
long double pi, sum[num_threads];
long double step = 1.0 / num_steps;
omp_set_num_threads(num_threads);
#pragma omp parallel
{
int i, id, nthrds;
long double x;
id = omp_get_thread_num();
nthrds = omp_get_num_threads();
if (id == 0) nthreads = nthrds;
for (i = id, sum[id] = 0.0; i < num_steps; i += nthrds)
{
x = (i + 0.5) * step;
sum[id] += 4.0 / (1.0 + x * x);
}
}
for (i = 0, pi = 0.0; i < nthreads; ++i) pi += step * sum[i];
cout << "PI = " << pi << endl;
cout << "PI = "
<< "3.14159265358979323846264338327950288419716939937510582097494" << endl;
}
This is my tasks.json:
"version": "2.0.0",
"tasks": [
{
"label": "program01",
"type": "shell",
"command": "g++",
"args": ["-std=c++2a", "-fopenmp", "-Wall", "-o", "program", "main.cpp"],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []