0

pgcc は、acc プラグマを配置した行に対して「無効なアクセラレータ データ領域: 領域への分岐または領域外への分岐は許可されていません」と表示していますが、その理由がわかりません。

ループが使用するすべての配列に対して、copy、copyin、および create を使用しています。

私は何が欠けていますか?ありがとう!

#pragma acc data copy(graph->pagerank), copyin(graph->indegree, graph->outdegree), create(pagerankNew) 
while (1) {
   #pragma acc kernels 
   { 
     for (i = 0; i < n; ++i) {
        double sum = 0;
        for (k = 0; k < graph->indegree[i]; ++k) {
           //int j = graph->inlinks[i][k];
           int j = 0;
           sum += (1.0 / graph->outdegree[j]) * graph->pagerank[j];

        }
        pagerankNew[i] = firstterm + damping * sum;

        double diff = fabs(graph->pagerank[i] - pagerankNew[i]);
        // if(iterations > 50) {
        if (diff != 0.000000 && diff < epsilon) {
           return iterations;
        }
     }

     for (k = 0; k < n; ++k) {
        graph->pagerank[k] = pagerankNew[k];
     }
  }

  ++iterations;
}
4

0 に答える 0