Merhaba Bu web sitesi http://www.viva64.com/en/a/0054/ okur ve 17 numaralı nokta için, bariyer olmadan aşağıdaki kodun yanlış olduğunu söylüyor. Niye ya ? http://bisqwit.iki.fi/story/howto/openmp/#BarrierDirectiveAndTheNowaitClause numaralı telefondan okudum, her bir paralel bloğun sonunda ve her bölümün sonunda, artık direktif kullanılmadıkça, tek bir ifade için örtülü bir bariyer var.OpenMP örtülü bariyer
struct MyType
{
~MyType();
};
MyType threaded_var;
#pragma omp threadprivate(threaded_var)
int main()
{
#pragma omp parallel
{
...
#pragma omp barrier // code is wrong without barrier.
}
}
Birisi lütfen bana açıklayınız. Teşekkürler.
[bir impl yoktur, örtük bir bariyer olarak senkronize Paralel bölgenin sonunda iktidar bariyeri] (https://computing.llnl.gov/tutorials/openMP/#ParallelRegion). Doğru olduğunu varsayarsak bağlantıda 17 numaralı noktanın yanlış olduğunu düşünüyorum. –
OpenMP 4.5 spesifikasyonunu kontrol ettik ve "Paralel yapının sonunda örtülü bir bariyer var" diyor. –
Belirtim, "Bir threadprivate değişkeninin tüm kopyalarının saklanması, statik değişkenlerin temel dilde nasıl ele alındığına, ancak programda belirtilmemiş bir noktaya göre serbest bırakılır." –