Bài toán mô phỏng N-body

Một phần của tài liệu Tính toán hiệu năng cao với bộ xử lý đồ họa GPU và ứng dụng (Trang 64)

Bài toán kinh điển N-Body mô phỏng sự tiến hóa của một hệ thống gồm có n phần tử (body), ở đó lực được sinh ra trên mỗi phần tử bởi sự tương tác của nó với tất cả các phần tử khác trong hệ thống. N-body là bài toán tiêu biểu cho tính toán hiệu năng cao,

được ứng dụng rộng rãi trong các mô phỏng vật lý, hóa học, thiên văn học với khối lượng tính toán rất lớn.

Mô phỏng n-body là mô phỏng số lượng rất lớn các hạt dưới ảnh hưởng của các lực vật lý, thường là lực hấp dẫn. Mô phỏng này thường được sử dụng trong vũ trụ học để

nghiên cứu các quá trình dữ liệu cấu trúc phi tuyến tính như cơ cấu hình thành các dải thiên hà và các ngôi sao từ hốđen trong thiên văn học. Mô phỏng n-body trực tiếp được dùng trong nghiên cứu vụ nổ của các cụm sao. Mô phỏng N-Body còn ứng dụng rộng rãi trong khoa học và ứng dụng tính toán tĩnh điện học và các lực van der Waals, mô phỏng sự hỗn loạn của chất lỏng hay sự tính toán độ sáng tổng thể trong đồ họa máy tính,....

Trong nhiều trường hợp, kích thước của phô phỏng thiên văn học N-body bị giới hạn bởi các tài nguyên tính toán hiện có. Mô phỏng cho hệ thống N-body hấp dẫn thuần khiết là một ví dụđiển hình. Vì lực hấp dẫn là sự tương tác ở khoảng cách dài, độ phức tạp tính toán cho sự tương tác giữa tất cả các phần tử là O(N2) cho từng bước tính toán của mô hình đơn giản nhất, với N là số lượng phần tử trong hệ thống. Chúng ta có thể

giảm độ phức tạp tính toán từ O(N2) còn O(NlogN) bằng cách sử dụng một vài thuật toán xấp xỉ, như thuật toán cây Barnes-Hut [12], nhưng hệ số tỉ lệ (scaling coefficient) thực sự

lớn. Do vậy, tính toán sự tương tác giữa các phần tử thường là phần "đắt" nhất trong toàn bộ việc tính toán, và do đó giới hạn số lượng các phần tử chúng ta có thể xử lý. Smoothed Particle Hydrodynamics (SPH) [[4][23] trong đó các phần tử biểu diễn phân tử

chất lỏng, khí là một ví dụ khác. Trong các tính toán SPH, phương trình tính toán thủy

động học được biểu diễn bởi sự tương tác giữa các phần tử ở khoảng cách ngắn (short- range). Độ phức tạp tính toán của SPH tương đối cao bởi số lượng phần tử trung bình tương tác với 1 phần tử thực sự lớn, thường dao động ở 50, và tính toán tương tác giữa từng cặp 2 phần tử thì phức tạp hơn một chút so với tương tác hấp dẫn.

Trong mô phỏng thiên văn học N-body, tương tác quan trọng nhất là lực hấp dẫn. Thiên văn học không phải là ứng dụng duy nhất của mô phỏng N-body. Mô phỏng chuyển động phân tử (MD - Molecular dynamics) và phương pháp phần tử biên (BEM - Boundary element method) là những ví dụ của phương pháp số học trong đó từng thành phần trong hệ thống nằm trong những tương tác cơ bản với các thành phần còn lại của hệ

thống. Trong cả 2 trường hợp, cách tiếp cận giống với thuật toán cây Barnes-Hut hoặc FMM [22] giúp giảm được chi phí tính toán, tuy nhiên tính toán sự tương tác vẫn ảnh hưởng lớn tới tổng chi phí tính toán.

Một cách tiếp cận tiêu biểu làm tăng tốc mô phỏng N-body là xây dựng 1 máy tính chuyên biệt (special-purpose) cho việc tính toán tương tác. Hai đặc trưng của tính toán tương tác làm chúng rất phù hợp với cách tiếp cận này, đó là:

Thứ nhất, tính toán tương tác trên từng cặp đôi là tương đối đơn giản. Trong trường hợp tương tác hấp dẫn, tổng số phép toán dấu phảy động (đếm toàn bộ phép toán bao gồm cả phép căn bậc hai và phép chia) dao động trong khoảng 20. Do vậy không khó hiểu khi thiết kế 1 bộ xử lý có đường ống dẫn đầy đủ, gắn cứng và được kiểm soát bằng vi mạch điện tử phục vụ việc tính toán tương tác hấp dẫn. Với những ứng dụng khác như

SPH, hay chuyển động phân tử học thì tính toán tương tác phức tạp hơn, tuy nhiên cách tiếp cận về phần cứng vẫn khả thi.

Đặc trưng thứ hai, sự tương tác theo cách đơn giản nhất của nó tác động tất cả lên tất cả (all-to-all). Nói cách khác, từng phần tử trong hệ thống tác động lên tất cả các phần tử còn lại. Do đó có rất nhiều cách thức song song áp dụng được. Nói cụ thể, có thể thiết kế một phần cứng để tính toán lực tác động tự 1 phần tử lên nhiều phần tử một cách song song. Theo cách này chúng ta có thể giảm yêu cầu về băng thông (bandwidth) bộ nhớ. Tất nhiên là nếu sự tương tác thuộc vào loại khoảng cách ngắn thì nó có thể thực hiện một số cách thông minh để làm giảm chi phí tính toán từ O(N2) thành O(N), và việc làm giảm băng thông bộ nhớ không hiệu quả bằng trường hợp tính toán O(N2)

Hình 19: Hình ảnh mô phỏng N-body [9]

Một phần của tài liệu Tính toán hiệu năng cao với bộ xử lý đồ họa GPU và ứng dụng (Trang 64)