演算法代碼來自 OpenCL編程指南,第16章。
我試著把工程搭建起來跑了一下。
真的很坑。中間有一段 cl 代碼。
for(int edge = edgeStart; edge < edgeEnd; edge++)
{
int nid = edgeArray[edge];
if (updatingCostArray[nid] > (costArray[tid] + weightArray[edge]))
{
updatingCostArray[nid] = (costArray[tid] + weightArray[edge]);
}
}
這段代碼跟本就有同步問題。 當網路中有一個節點,有多條邊進入的時候。updatingCostArray[nid] 同一個資料會被多個作業執行緒訪問。
結果根本是錯的,下面還列出的性能測驗,說有多優化。
而且這個例子也沒給出如何記錄途徑節點。
有沒有同樣研究過這個例子的同學。說說你的感想
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/116641.html
標籤:OpenCL和異構編程
