Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics

Loại tài liệu: Tài liệu số - Tài nguyên giáo dục mở / Bộ sưu tập: Công nghệ thông tin

Tác giả: Kuckuk, Sebastian

Nhà xuất bản: FAU University Press

Năm xuất bản: 2019

Tải ứng dụng tại các liên kết sau để xem đầy đủ tài liệu.

Tóm tắt nội dung

Một phương pháp đầy hứa hẹn là phát triển các ngôn ngữ chuyên dụng (DSL) cho một tập hợp các ứng dụng. Việc sử dụng các kỹ thuật tạo mã cho phép nhắm mục tiêu đến nhiều nền tảng phần cứng khác nhau đồng thời áp dụng các tối ưu hóa chuyên dụng một cách tự động. Công trình hiện tại nhằm mục đích nâng cao trình độ hiện đại trong lĩnh vực này. Là một lĩnh vực nghiên cứu, chúng tôi chọn các bộ giải phương trình vi phân từng phần (PDE), đặc biệt là các bộ giải thuộc nhóm phương pháp đa lưới hình học. Để tránh phạm vi quá rộng, chúng tôi giới hạn bản thân vào các phương pháp hoạt động trên lưới có cấu trúc và lưới cấu trúc dạng mảng. Chúng tôi đối mặt với thách thức xử lý một lĩnh vực phức tạp như vậy, đồng thời cung cấp các mức độ trừu tượng khác nhau cho các nhóm người dùng đa dạng, bằng cách chia DSL bên ngoài ExaSlang của chúng tôi thành nhiều lớp, mỗi lớp chỉ định các khía cạnh khác nhau của ứng dụng cuối cùng. Lớp 1 được thiết kế để giống với LaTeX và cho phép nhập các phương trình và hàm liên tục. Việc rời rạc hóa của chúng được thể hiện ở lớp 2. Nó được bổ sung bởi các thành phần thuật toán có thể được triển khai bằng cú pháp giống Matlab ở lớp 3. Tất cả thông tin được cung cấp đến thời điểm này được tóm tắt ở lớp 4, được làm phong phú thêm với các chi tiết về cấu trúc dữ liệu và phương pháp song song hóa được sử dụng. Ngoài ra, chúng tôi hỗ trợ quá trình tự động chuyển đổi giữa các lớp khác nhau. Tất cả đầu vào của ExaSlang được xử lý bởi khung tạo mã Scala do chúng tôi cùng phát triển để cuối cùng tạo ra mã C++. Chúng tôi đặc biệt tập trung vào cách tạo ra các ứng dụng được song song hóa với, ví dụ, MPI và OpenMP, có khả năng chạy trên cả máy trạm và cụm máy tính quy mô lớn. Chúng tôi chứng minh tính khả thi của phương pháp bằng cách triển khai các bài toán thử nghiệm đơn giản, như phương trình Poisson, cũng như các ứng dụng liên quan từ lĩnh vực động lực học chất lỏng tính toán (CFD). Cụ thể, chúng tôi triển khai các bộ giải có khả năng mở rộng cho các phương trình Stokes, Navier-Stokes và phương trình nước nông (SWE) được rời rạc hóa bằng phương pháp sai phân hữu hạn (FD) và thể tích hữu hạn (FV). Đối với trường hợp phương trình Navier-Stokes, chúng tôi cũng mở rộng việc triển khai của mình sang các lưới không đồng nhất, nhờ đó cho phép tinh chỉnh lưới tĩnh và các hiệu ứng nâng cao như chất lỏng mô phỏng là phi Newton và không đẳng nhiệt.

Abstract:

One promising approach is developing domain‐specific languages (DSLs) for a set of applications. Using code generation techniques then allows targeting a range of hardware platforms while concurrently applying domain‐specific optimizations in an automated fashion. The present work aims to further the state of the art in this field. As domain, we choose PDE solvers and, in particular, those from the group of geometric multigrid methods. To avoid having a focus too broad, we restrict ourselves to methods working on structured and patch‐structured grids. We face the challenge of handling a domain as complex as ours, while providing different abstractions for diverse user groups, by splitting our external DSL ExaSlang into multiple layers, each specifying different aspects of the final application. Layer 1 is designed to resemble LaTeX and allows inputting continuous equations and functions. Their discretization is expressed on layer 2. It is complemented by algorithmic components which can be implemented in a Matlab‐like syntax on layer 3. All information provided to this point is summarized on layer 4, enriched with particulars about data structures and the employed parallelization. Additionally, we support automated progression between the different layers. All ExaSlang input is processed by our jointly developed Scala code generation framework to ultimately emit C++ code. We particularly focus on how to generate applications parallelized with, e.g., MPI and OpenMP that are able to run on workstations and large‐scale cluster ali

Ngôn ngữ:eng
Tác giả:Kuckuk, Sebastian
Thông tin nhan đề:Automatic Code Generation for Massively Parallel Applications in Computational Fluid Dynamics
Nhà xuất bản:FAU University Press
Loại hình:Tài nguyên giáo dục mở / Bộ sưu tập: Công nghệ thông tin
Bản quyền:https://creativecommons.org/licenses/by/4.0/
Nguồn gốc:https://directory.doabooks.org/handle/20.500.12854/170177
Mô tả vật lý:243tr
Năm xuất bản:2019

Sử dụng ứng dụng Libol Bookworm quét QRCode này để mượn và đọc tài liệu)

(Lưu ý: Sử dụng ứng dụng Bookworm để xem đầy đủ tài liệu. Bạn đọc có thể tải Bookworm từ App Store hoặc Google play với từ khóa "Libol Bookworm”)