簡體   English   中英

在Windows上使用CLION用openMP編譯程序

[英]Compiling program with openMP with CLION on Windows

我已經使用cygwin下載了openMP,我在CLION中將其用作編譯器。

我已經包括在內

#include <omp.h>

並使用了其模式,例如

#pragma omp paraller
        #pragma omp single

但是,當我使用omp_get_max_threads()它會拋出

未定義對`omp_get_max_threads'的引用

錯誤,我嘗試添加編譯器參數: 在此輸入圖像描述

但是錯誤仍然相同。 有沒有辦法解決這個問題? 感謝幫助。

CLion使用CMake作為構建系統,在CMake 3.9+中大大改善了對OpenMP的支持。 現在,您需要配置CMakeLists.txt文件,如下所示:

例如,考慮下面的示例代碼。

OpenMP代碼

#include <iostream>
#include <omp.h>

int main()
{
#pragma omp parallel num_threads(3)
    {
        int id = omp_get_thread_num();
        std::cout << "Greetings from process " << id << std::endl;
    }
    std::cout << "parallel for ends " << std::endl;
    return EXIT_SUCCESS;
}

的CMakeLists.txt

CMakeLists.txt文件將類似於:

cmake_minimum_required(VERSION 3.9)
project(openmp_test) # you can change the project name

find_package(OpenMP)

add_executable(openmp_para_test main.cpp)

if(OpenMP_CXX_FOUND)
    target_link_libraries(openmp_para_test PUBLIC OpenMP::OpenMP_CXX)
endif()

如果您不熟悉CMake,請參閱此處與CLion一起使用的快速CMake教程

我不是CLION的用戶,但是Program參數確實是您編譯后的代碼的編譯器參數嗎?

通常,在編譯OpenMP源文件時,需要將-fopenmp標志同時添加到編譯器和鏈接器中。 所以,例如:

gcc -fopenmp -c foo.c -o foo.o
gcc -fopenmp -c bar.c -o bar.o
gcc -fopenmp -o app.exe foo.o bar.o

或者,如果您僅使用一個源文件就可以進行鏈接和鏈接:

gcc -fopenmp -c fooc -o app.exe

PS:有一個錯字,應該是#pragma omp parallel而不是#pragma omp paraller

暫無
暫無

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

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