วิธีรวบรวมโปรแกรม OpenMP โดยใช้เสียงดังกราว


9

gcc ของฉันรวบรวมได้ดี แต่เสียงดังกราวล้มเหลวด้วยข้อความต่อไปนี้:

clang -fopenmp=libomp -o main main.c
main.c:5:10: fatal error: 'omp.h' file not found

ฉันยังติดตั้งlibomp5แพ็กเกจและเปลี่ยนค่าสถานะเป็น-fopenmp=libomp5แม้ว่าจะไม่ได้ช่วยอะไร:

clang -fopenmp=libomp5 -o main main.c
clang: error: unsupported argument 'libomp5' to option 'fopenmp='
clang: error: unsupported argument 'libomp5' to option 'fopenmp='

คำแนะนำเหล่านี้ใช้ไม่ได้

จะขอบคุณสำหรับคำแนะนำในการติดตั้งแพคเกจเฉพาะที่จำเป็น 16.04 และผ่านธงที่สอดคล้องกัน


คุณกำลังใช้ Clang รุ่นใด ฉันมีปัญหาเดียวกันกับ BTW กับ clang-3.8 และ clang-3.9 บน Ubuntu 16.10
Z boson

1
sudo apt ติดตั้ง libomp-dev
Z boson

ในที่สุดฉันสามารถใช้ OpenMP กับ Clang บน Ubuntu ได้! ฉันต้องการสิ่งนี้มาเป็นเวลานาน!
Z boson

คำตอบ:


16

ผมมีปัญหาเดียวกัน.

sudo apt install libomp-dev

แก้ไขด้วย Ubuntu 16.10

//test.c
#include "omp.h"
#include <stdio.h>

int main(void) {
  #pragma omp parallel
  printf("thread %d\n", omp_get_thread_num());
}

แล้วก็

clang test.c -fopenmp
./a.out
thread 0
thread 5
thread 2
thread 1
thread 7
thread 3
thread 4
thread 6

ด้วย

clant-3.9 test.c -fopenmp

โรงงาน


GCC และ Clang ใช้ไลบรารีรันไทม์ OpenMP ที่แตกต่างกัน: libgomp และ libomp อย่างเคารพ

Clang's runtime เป็นLLVM OpenMP runtime ซึ่งในทางกลับกันจะขึ้นอยู่กับ Intel OpenMP runtime (ซึ่งเป็น open source) https://www.openmprtl.org/

ในระบบของฉันติดตั้ง GCC omp.hที่

/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h

และlibomp-devinsalled omp.hที่

/usr/include/omp.h

เหล่านี้เป็นไฟล์ส่วนหัวที่แตกต่างกันซึ่งรวมถึงคำจำกัดความฟังก์ชั่นที่แตกต่างกัน มันอาจโอเคที่จะใช้ไฟล์ส่วนหัวเช่นกันomp_get_wtime()แต่โดยทั่วไปฉันคิดว่ามันอาจจะดีกว่าถ้าใช้ไฟล์ส่วนหัวที่สอดคล้องกับรันไทม์ที่เชื่อมโยงกับ


1
ทำงานกับวานิลลา 16.04 พร้อมเสียงดังกราวใน repos
Bulat M.

1
ฉันเพิ่งติดตั้ง Ubuntu 17.04 ซึ่งเป็นค่าเริ่มต้นสำหรับ Clang 4.0 sudo apt install libomp.devฉันนิ่งมีการใช้
Z boson

หากคุณลิงค์ libgomp จาก clang 6 โดยไม่ได้ตั้งใจรหัสของคุณจะถูกทำให้เป็นอนุกรม
Andrew Wagner

2

ดูเหมือนomp.hไฟล์ไม่ได้อยู่ในระบบของคุณเส้นทาง อันดับแรกลองค้นหาไฟล์omp.hหากคุณไม่ทราบว่าอยู่ที่ไหน:

find / -name 'omp.h' -type f

จากนั้นเรียกใช้คำสั่งนี้เพื่อรวบรวมรหัสของคุณ:

clang -o main main.c -I/path/to/omp/folder

ไม่สามารถแก้ไขปัญหาได้ omp.hมันก็ยังคงไม่สามารถหา
Z boson

คุณพบomp.hในระบบของคุณหรือไม่ คุณสามารถต่อท้ายคำสั่งเหล่านี้กับคำถามของคุณได้หรือไม่?
Ghasem Pahlavan

*.hเป็นไฟล์ส่วนหัวทำไมเขาจะต้องการเพิ่มเข้าไปในเส้นทางของเขา? พวกเขาควรอยู่ใน/usr/includeตัวอย่าง
Ravexina

1
ขอบคุณ Ghasem การติดตั้ง libomp-dev ในวันที่ 16.04 ได้รับการแก้ไข
Bulat M.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.