2012-02-08 37 views
5

Tôi muốn biết liệu có bất kỳ hàm/phương pháp nào trong LLVM để thêm các cấu trúc Open-MP trong LLVM IR hay không. Liệu llvm-3.0 vẫn hỗ trợ các chỉ thị OpenMP?LLVM Hỗ trợ OpenMP

Trả lời

2

OpenMP là tiện ích mở rộng ngôn ngữ cấp cao. Vì vậy, nó là C/C++/FORTRAN front-end mà nên hạ pragma thành các cuộc gọi thời gian chạy cần thiết và thay đổi mã.

Tôi không thấy cách OpenMP có thể được "thêm" vào LLVM IR. Nếu bạn cần trình biên dịch C/C++/FORTRAN hỗ trợ các pragma OpenMP và phát ra LLVM IR - hãy thử dragonegg.

+1

Trong chủ đề ml [LLVMdev] hỗ trợ OpenMP mới cho LLVM/jan2012] (http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-January/046823.html), sử dụng nội tại được đề xuất. "những người quan tâm đến việc song song tự động là có thể quan tâm nhiều hơn đến việc chuyển đổi một vòng LLVM-IR đơn giản thành LLVM-IR với các phần mở rộng OpenMP." – osgx

+0

@osgx: nếu chúng ta đang nói về thư viện biểu diễn độc lập của cuộc gọi đến thời gian chạy omp, thì có, nội tại đặc biệt là một cách tự nhiên. Mã Autopar cũng trong lý thuyết có thể tạo ra mã omp-aware. Vì vậy, hầu hết các câu hỏi ban đầu có thể cần được làm rõ làm thế nào "LLVM vẫn có thể hỗ trợ các chỉ thị OpenMP" :) –

+0

Right. Về cơ bản những gì các openmp hạ mà xảy ra là một tập hợp các cuộc gọi thư viện cho các chỉ thị khác nhau openmp (cũng như một số thay đổi cfg), không có gì cụ thể đó là cần thiết trong IR cho openmp. Nếu bạn muốn có thể nhận thấy các chỉ thị OpenMP và xây dựng lại ở mức cao hơn, vòng lặp biến đổi sau đó bạn có thể muốn hỗ trợ IR, nhưng tôi không tích cực là cần thiết. – echristo