我剛開始玩OpenMp,對這個問題感到非常困惑。說如果我聲明一個數組int a[10]
並在某個循環內使用它。 #pragma omp parallel for private(a)
和#pragma omp parallel for shared(a)
之間的區別是什麼?對我來說a
只是一個指向數組的第一個元素的指針,並且根據我讀的private
構造會爲每個線程創建一個變量的副本,而且非常奇怪如果我做了初始化它的隨機值不使用firstprivate
構造。所以我的問題是如果我使用private
構造,會發生什麼語義?它是否會創建一組指針並將它們分配給每個創建的線程,或者是否會創建整個數組的一組副本,並讓每個線程分別使用它們?OpenMP如何處理C中的數組?
非常感謝。