Có cách nào tôi có thể biên dịch mã với mã OpenMP thành C (Với phần OpenMP được dịch sang đồng bằng C), để tôi có thể biết được loại mã nào được tạo bởi OpenMP. Tôi đang sử dụng trình biên dịch gcc 4.4.Biên dịch mã OpenMP thành mã C
Trả lời
Có ít nhất http://www2.cs.uh.edu/~openuh/ OpenUH (thậm chí liệt kê ở http://openmp.org/wp/openmp-compilers/), có thể
phát ra được tối ưu hóa C hoặc Fortran 77 mã có thể được biên soạn bởi một trình biên dịch bản địa trên các nền tảng khác.
Cũng có: http://www.cs.uoi.gr/~ompi/ OMPi:
Trình biên dịch OMPi mất mã nguồn C với #pragmas OpenMP và tạo ra chuyển mã C đa luồng, sẵn sàng được biên dịch bởi trình biên dịch có nguồn gốc của hệ thống.
và OdinMP:
OdinMP/ĐCSTQ được viết bằng Java cho lý do tính di động và có một chương trình C với OpenMP chỉ thị và tạo ra một chương trình C cho chủ đề POSIX.
Tôi nên nói rằng gần như không thể dịch mã openmp thành Plain C; bởi vì đồng bằng cũ C không có hỗ trợ của các chủ đề và tôi nghĩ rằng OpenMP source-to-source dịch không nhận thức được C11 được nêu ra. Chương trình OpenMP có thể được dịch sang C với các chủ đề POSIX hoặc C với một số thư viện thời gian chạy (như libgomp). Ví dụ, OpenUH có thư viện riêng sử dụng pthreads.
Giống như bình luận khác chỉ ra gcc không dịch chỉ thị OpenMP để đồng bằng C.
Nhưng nếu bạn muốn để có được một ý tưởng về những gì gcc không có chỉ thị của bạn, bạn có thể biên dịch với các tùy chọn -fdump-tree-optimized
. Điều này sẽ tạo ra biểu diễn trung gian của chương trình ít nhất là C.
Có nhiều giai đoạn mà có thể được đổ (kiểm tra man page của gcc), ở giai đoạn tối ưu hóa các chỉ OpenMP đã được thay thế bằng các cuộc gọi đến các thư viện runtime GOMP. Nhìn vào biểu diễn đó có thể cung cấp cho bạn một số thông tin chi tiết về những gì đang xảy ra.
- 1. Biên dịch openmp thành pthreads Mã C
- 2. Cách biên dịch ocaml thành mã gốc
- 3. Biên dịch java thành mã gốc?
- 4. Mã C# không được biên dịch có biên dịch thành IL và chạy trên CLR không?
- 5. Biên dịch mã động bằng C#
- 6. Biên dịch mã C# trong ứng dụng
- 7. Tại sao mã C này biên dịch?
- 8. Mục tiêu-C có biên dịch thành mã gốc hoặc mã byte không?
- 9. Cách biên dịch openmp bằng g ++
- 10. Biên dịch mã PHP thành mã hóa và mã hóa được thực thi
- 11. Hiệu suất biên dịch mã bằng biên dịch biên dịch
- 12. Làm cách nào để biên dịch và liên kết mã C++ với mã C đã biên dịch?
- 13. OpenMP - Chạy mã song song bên trong mã song song
- 14. Dịch C# RSACryptoServiceProvider thành Mã JAVA
- 15. getopt.h: Biên dịch mã C-C trong Windows
- 16. Trình biên dịch ngược C/C++ mã nguồn mở
- 17. Biên dịch C# thành Gốc?
- 18. Biên dịch sang mã giả
- 19. Biên dịch mã động khi chạy bằng T4 và C#
- 20. mã được biên dịch lẻ
- 21. Tại sao mã .NET biên dịch thành MSIL?
- 22. Biên dịch mã IronPython thành EXE hoặc DLL
- 23. Tôi có thể biên dịch Java thành mã gốc không?
- 24. Sử dụng openMP trong mã máy chủ cuda?
- 25. Tại sao mã Haskell này biên dịch?
- 26. Dịch mã C# sang AST?
- 27. Mã LINQPad biên dịch như thế nào?
- 28. Biên dịch mã .NET trong .NET 4?
- 29. Biên dịch mã Ruby Inline C - giải quyết lỗi
- 30. Tại sao mã C++ này biên dịch? Nó làm gì?
Tôi nghĩ rằng câu hỏi này giả định rằng trình biên dịch gcc dịch các cuộc gọi OpenMP thành C. Tôi khá nghi ngờ rằng nó và hầu hết các trình biên dịch OpenMP khác, dịch nguồn thành assembly bao gồm các cuộc gọi đến các hàm hệ thống. Tôi khá chắc chắn trình biên dịch của bạn sẽ sản xuất danh sách lắp ráp; đó có thể là những gì bạn cần làm việc. Tôi xem với sự quan tâm cho một câu trả lời mà chứng minh mong đợi của tôi sai. –
Afaik, bạn có thể xem mã nguồn từ trình biên dịch gcc, ví dụ: omp.h và các tệp nguồn tương ứng của thư viện (libgomp) để xem những pragmas này làm gì. Nhưng không có thói quen thay thế trước khi gọi trình biên dịch c. xem [tại đây] (http://gcc.gnu.org/onlinedocs/libgomp/Implementing-FOR-construct.html#Implementing-FOR-construct) – Bort