我有一個for循環,在每次迭代中訪問許多內存指針。對於每個這些內存指針,我創建了一個索引。我的問題是,當我嘗試使用開放MP並行這個循環中,我得到以下錯誤:是否有可能在C++中使用open mp進行初始化?
錯誤:預期迭代聲明或初始化
我認爲,這個錯誤會是下列之一:
- 打開MP不接受增量不同於++或 - - 打開MP不會在一個循環
有關性能方面的考慮接受多個初始化,使用這些多個索引這對我很重要。有人知道我的問題的答案嗎?
這是代碼:
#pragma omp parallel default(shared)
{
int tID = omp_get_thread_num();
int i, iCF, iPF, iNF, iPJG, iCJG, iNJG, iPRJG, iCRJG;
##pragma omp for nowait
for(i=0, iCF=0, iPF=0, iNF=sqrBcksDim, iPJG=0, iCJG=0, iNJG=sqrBcksSize, iPRJG=0, iCRJG=0 ; iCF<RHSArraySize ; iPF=iCF, iCF=iNF, iNF+=sqrBcksDim, iPJG=iCJG, iCJG=iNJG, iNJG+=sqrBcksSize, iPRJG=iCRJG, iCRJG+=rectBcksSize, ++i)
{
}
}
有關C++中'for'循環中合法內容的OpenMP規則在本規範的第40頁中:http://www.openmp.org/mp-documents/OpenMP3.1.pdf。最簡潔的答案是不。 – Davislor