3.2.1. Các giải thuật dùng cho bài toán mô phỏng N-body
3.2.1.1. Giải thuật tương tác hạt -hạt
Trong giải thuật này sẽ tính toán các lực tương tác trên tất cả các cặp body- body từ hệ thống N-body. Sự tương tác của cặp hai phần tử độc lập trong số các phần tử và được gọi là sự tương tác giữa hai phần tử. Sự tương tác giữa tất cả các cặp được tính toán tuần tự, sẽ cần một khối lượng tính toán lớn nếu số lượng các body tăng.
Giải thuật này có hiệu năng tính toán không hiệu quả O(N2) với N là số lượng các body mô phỏng trong bài toán.
Giải thuật này dựa trên sự biểu diễn cây phân cấp trong không gian 3 chiều. Nó bao gồm hai phần. Phần thứ nhất bao gồm tạo kiến trúc cây bằng cách chia nhỏ đệ quy cell gốc chứa tất cả các hạt vào trong các cell con hình lập phương có kích thước bằng nhau. Đến khi có mỗi cell con có ít nhất một hạt. Mỗi cell chứa tổng trọng lượng và vị trí khối tâm tất cả các hạt của các cell con dưới nó. Phần thứ hai, cây được duyệt qua một lần mỗi hạt để tính toán lực tổng hợp hoạt động trên nó. Quá trình duyệt cây bắt đầu từ gốc, tại mỗi bước, nếu cell được phân tách tốt các hạt, sẽ sử dụng sự xấp xỉ khối tâm để tính toán lực trên hạt thay vì toàn bộ cây con ở dưới cell đó (nghĩa là mỗi cell con của nó đã được thăm). Một cell được coi là phân tách tốt từ một hạt nếu kích thước của chúng được phân chia bởi khoảng cách từ trọng tâm của nó tới hạt, nhỏ hơn tham số - tham số điều khiển độ chính xác.
Giải thuật này có độ phức tạp tính toán là O(nlogn), nó dựa trên sự biểu diễn cây phân cấp trong không gian ba chiều, tính toán sự tương tác giữa các hạt xa bằng phương pháp xấp xỉ theo thứ tự trước.
3.2.1.3. Giải thuật đa cực nhanh
Giải thuật đa cực nhanh (the fast Multipole Method - FMM) sử dụng một cây tương tự như giải thuật Barnes-Hut. Dạng chuẩn của nó xây dựng một cây cân bằng. Nó phân tách các hạt vào trong các lá cell và tính toán sự mở rộng đa cực của chúng theo hướng từ dưới lên trong đó kiến trúc mở rộng đa cực của các cell cha bằng cách dịch chuyển và thêm vào các mở rộng của các con của chúng. Sau khi cây đã được xây dựng, hướng từ trên xuống trong đó sự mở rộng địa phương của các cell cha được dịch tới trung tâm của mỗi con và cộng thêm vào sự mở rộng đa cực của các cell trong danh sách tương tác của con để thiết lập sự mở rộng địa phương của nó. Cuối cùng, các sự mở rộng địa phương tại các cell lá cùng với hướng các tương tác với các hạt trong các cell hàng xóm sẽ cho ta hợp lực của mỗi hạt.
Sự khác nhau giữa giải thuật FMM và Barnes-Hut dựa vào thực tế giải thuật Barnes-Hut tính toán các sự tương tác hạt-cell, trong khí FMM tính toán các sự tương tác cell-cell.
Độ phức tạp tính toán của giải thuật này là O(n), tuy nhiên, nó sử dụng nhiều phép tính toán học phức tạp hơn và lập trình khó khăn hơn trong không gian ba chiều.
3.2.1.4. Giải thuật cây đa cực song song
Giải thuật cây đa cực song song (Parallel Multipole Tree Algorithm - PMTA) là một sự lai ghép của hai giải thuật Barnes-Hut và FMM. Nó sử dụng một luật tương tự như Barnes-Hut để xác định sự phân tách tốt giữa hai cell. Hai cell được gọi là phân tách tốt lẫn nhau nếu kích thước của cell lớn có kích thước lớn hơn cell nhỏ, bé hơn một tham số . Cây được xây dựng như trong phương pháp Barnes-Hut, nhưng một cell được phân chia nhỏ một cách đệ quy cho đến khi nó chứa không nhiều hơn m hạt (thay vì một hạt như trong trường hợp giải thuật Barnes-Hut). Khi cây được duyệt theo hướng từ trên xuống qua mỗi lá cell và khi một cell được tìm thấy được phân chia tốt từ lá cell, sự mở rộng đa cực của nó được thực hiện như sự mở rộng địa phương ở trung tâm của lá cell và phần còn lại của cây con bên dưới cell đó không được thăm nữa. Tất cả chúng được dịch như các sự mở rộng địa phương được thêm vào và độ dốc được tìm thấy để có lực vì các miền xa mọi hạt trong lá. Các hạt trong lá cell tương tác trực tiếp các hạt trong tất cả các lá cell mà chưa được phân chia tốt từ nó.
Giải thuật cây đa cực song song là giải thuật lai giữa hai giải thuật Barnes-Hut và phương pháp đa cực nhanh, được phát triển bởi nhóm khoa học máy tính tại trường đại học Duke, Mỹ. Đây cũng là một giải thuật rất phức tạp vì sử dụng nhiều phép tính toán phức tạp, khó lập trình trong không gian ba chiều.
3.2.1. Bài toán n-Body trên CPU
Mô phỏng n-body có 2 loại là mô phỏng trực tiếp và mô phỏng tương đối. Trong phần tiếp theo mô tả mô phỏng trực tiếp sử dụng phương pháp đơn giản nhất là: phương pháp hạt-hạt (particle-particle (PP) ). Luận văn đã cài đặt mô phỏng N-body chạy trên CPU theo phương pháp trên. Đồng thời có các đánh giá thử nghiệm trên mô phỏng này so sánh với mô phỏng trên GPU. Chi tiết được trình bày trong phần kết quả thử nghiệm.
Phương pháp hạt-hạt dựa trên thuật toán tích hợp thời gian và thuật toán tính lực. Thuật toán Verlet (1967) mô tả ở trên là thuật toán tích hợp thời gian phổ biến nhất và đơn giản nhất.
3.2.2. Bài toán N-Body trên GPU
Bài toán thử nghiệm N-body trên GPU được tham khảo từ [15]. Luận văn đã tìm hiểu, nghiên cứu mà nguồn ví dụ, điều chỉnh các tham số chương trình và cài đặt trên môi trường thử nghiệm.
Các bước thực hiện:
1. Cài đặt bộ tool kit của NIVIDIA phiên bản 1.0 trở lên. Có thể download tại http://developer.nvidia.com/cuda
2. Cấu hình GPU cần thiết: NVIDIA 8-Series hoặc mới hơn. 3. Biên dịch chương trình trên Linux: