所以我有一個循環,我遍歷一個向量的元素,在每個元素上調用一個函數,並且如果它符合某個標準,我將它推到一個列表中。將循環轉換爲OpenMP
my_list li;
for (auto itr = Obj.begin(); itr != Obj.end(); ++itr) {
if ((*itr).function_call())
li.push_back((*itr);
}
我一直在思考的方法來優化我的程序,我碰到OpenMP來了,但很多的示例代碼是很難效仿。
有人可以通過如何轉換上述循環以並行利用多個內核來引導我嗎?
謝謝。
不使用無名稱關鍵結構是一種很好的做法。您應該爲其添加一個名稱,以確保關鍵僅保護li數據結構。否則,關鍵可能會影響代碼段中不需要相互排斥的其他關鍵部分。 –
我會通過一個指向數據開始的指針迭代矢量並運行索引。對於(T * =&obj [0],size_t i = 0,size_t size = obj.size(); ++ i {} – egur
很好的解決方法,謝謝邁克爾,現在編輯解決方案 – ikikenis