2017-12-01 2 views
0

Lauf G ++ 5.4.0 mit Ubuntu 16.04.4 zu kompilieren,G ++ 5.4.0 (Ubuntu): OpenMP Atom Schreiben schlägt fehl

#pragma omp atomic 
arr[index] = number; 

mit dem folgenden Fehler schlägt fehl:

invalid form of '#pragma omp atomic' before ';' token 

jedoch Dies sollte gemäß der IBM Open MP-Dokumentation funktionieren:

     .-update--. 
>>-#--pragma--omp atomic--+---------+---------------------------> 
         +-read----+ 
         +-write---+ 
         '-capture-' 

Was läuft hier falsch?

+0

Neugierig, welche Art von Dokumentation beschreibt dies als arbeiten. – Zulan

+0

@Zulan ah, scheint, dass die Dokumentation täuscht. – bordeo

+1

Aber woher kommt dieses "Bild"? Sie können die offizielle Dokumentation [hier] finden (http://www.openmp.org/wp-content/uploads/openmp-4.5.pdf). – Zulan

Antwort

2

Sie müssen entweder read oder write für eine solche Aussage angeben. Der Standardwert für omp atomic ist update, der für Ihre Aussage nicht gilt:

Die gültigen Ausdrücke sind im OpenMP-Standard aufgeführt.

If atomic-clause is read:

v = x; 

If atomic-clause is write:

x = expr; 

If atomic-clause is update or not present:

x++; 
x--; 
++x; 
--x; 
x binop= expr; 
x = x binop expr; 
x = expr binop x; 
Verwandte Themen