簡體   English   中英

OpenMP“未使用的變量”編譯錯誤

[英]OpenMP 'unused variable' compiling error

我試圖編寫一個使用openmp進行並行化的c ++程序。 不幸的是,我收到了一個我不理解的編譯錯誤。 我列出了g ++命令,有問題的代碼行和錯誤消息。 如果我錯過重要信息,請告訴我。

g++ -o Pogramm -Wall -fopenmp Programm.cpp

#pragma omp parallel
int id,nths,tnbr;
id=omp_get_thread_num();
nths=omp_get_num_thread();

Tree.cpp:52:7:警告:未使用的變量'id'[-Wunused-variable]

錯誤:在此范圍內未聲明'id'id = omp_get_thread_num();

有人可以告訴我為什么不聲明'id'ist嗎?

根據您的代碼,並行區域的范圍(即您定義id的范圍)僅包括后續行,即您定義id的行。 因此,在外部使用id變量時,會出現未定義的變量錯誤。 此外,您還收到未使用的id變量警告,因為未在並行區域(可以使用該區域)中使用它。

很可能您只是忘了添加花括號來擴大將要並行化的范圍,即

#pragma omp parallel
{
  int id,nths,tnbr;
  id=omp_get_thread_num();
  nths=omp_get_num_thread();
  ...
}

一個最小的工作示例是:

#include<iostream>
#include<omp.h>
using namespace std;
int main() {
#pragma omp parallel
    {
        int id,nths,tnbr;
        id=omp_get_thread_num();
        nths=omp_get_num_threads();
        cout << "id, nths: " << id << nths << endl;
    }
    return 0;
}

可以成功編譯,例如使用g ++ v.8.5.5。

g++ main.cpp -fopenmp -Wall

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM