omp simd reduction auf eine array element?
-
Hi, ich möchte so etwas machen wie:
for(int r=0; r<1234567; r++) { #pragma omp simd reduction(+:var[r]) for(int i=0; i<1234567; i++) var[r] + = i; }
r in [r] bei reduction geht aber nicht. Kann man das anders machen?
Z.B. geht nochfor(int r=0; r<1234567; r++) { double &varr = var[r]; #pragma omp simd reduction(+:varr) for(int i=0; i<1234567; i++) varr + = i; }
Da erstelle ich aber jedesmal eine Variable, bzw eine Verweis darauf. Gibt es da eine bessere Möglichkeit?
-
r in [r] bei reduction geht aber nicht.
Warum nicht?
-
Arcoth schrieb:
r in [r] bei reduction geht aber nicht.
Warum nicht?
Es kompiliert nicht.
./red.cpp:18:41: error: expected ‘)’ before ‘[’ token #pragma omp simd reduction(+:var[r]) ^ ./red.cpp:18:45: error: user defined reduction not found for ‘var’
-
Welcher Compiler ist denn das? Zeig außerdem ein Gesamtbeispiel.
-
#include <omp.h> #include <vector> int main(){ std::vector<double> var(1234); for(int r=0; r<1234; r++) { double &varr = var[r];//<-reduction(+:varr) geht, var[r] nicht #pragma omp simd reduction(+:var[r]) for(int i=0; i<1234; i++) varr += i; } }
g++ 5.4