Phụ thuộc vào trình biên dịch và cấu hình máy Intel (R) Xeon (TM) với 4 CPU 2.40 GHz, chương trình treecode sau khi thử nghiệm song song với một số chỉ thị của OpenMP sẽ cho thời gian thực hiện các hàm như dưới đây:
local void walksub(nodeptr *nptr, nodeptr *np, cellptr cptr, cellptr bptr, nodeptr p, real psize, vector pmid)
{ ………
if (Type(p) == CELL) { /* fanout over descendents */ /* add parallel region */
#pragma intel omp parallel taskq shared(q) {
for (q = More(p); q != Next(p); q = Next(q)) { #pragma intel omp task captureprivate(q) {
for (k = 0; k < NDIM; k++)
nmid[k] = pmid[k] + (Pos(q)[k] < pmid[k] ? - poff : poff); walktree(nptr, np, cptr, bptr, q, psize / 2, nmid);
} }
} /* end of parallel region */
} else { for (k = 0; k < NDIM; k++)
nmid[k] = pmid[k] + (Pos(p)[k] < pmid[k] ? - poff : poff); walktree(nptr, np, cptr, bptr, p, psize / 2, nmid);
} }
Lê Thị Lan Phương 52
Như vậy, tùy thuộc vào từng trình biên dịch trên các máy tính có cấu hình khác nhau, kết quả thử nghiệm thu được trên máy đa xử lý Intel chỉ mang tính chất tương đối.
Flat profile:
Each sample counts as 0.00195312 seconds.
% cumulative self self total time seconds seconds calls ms/call ms/call name 74.84 10.43 10.43 532480 0.02 0.02 sumnode 11.18 11.99 1.56 569962 0.00 0.02 walktree 10.83 13.50 1.51 16013212 0.00 0.00 accept 0.68 13.59 0.09 2466729 0.00 0.00 subindex 0.48 13.66 0.07 266240 0.00 0.00 loadbody 0.29 13.70 0.04 _walksub_202__task4 0.27 13.73 0.04 520 0.07 0.09 hackcofm 0.24 13.77 0.03 266240 0.00 0.04 gravsum 0.22 13.80 0.03 130637 0.00 0.00 _walksub_199__taskq3 0 20 13 82 0 03 65 0 42 0 42 diagnostics
Lê Thị Lan Phương 53
KẾT LUẬN
Kết quả đạt được
Sau một thời gian tìm hiểu, nghiên cứu và đánh giá, tôi nhận thấy thuật toán Barnes-Hut và các cải tiến của nó đã góp phần quan trọng khi giải quyết bài toán N-body, với độ phức tạp chỉ là O (N log N). Cũng qua tìm hiểu, tôi thấy OpenMP là một giao diện lập trình ứng dụng song song đơn giản và dễ sử dụng. Nó cung cấp cho người dùng một giao diện mềm dẻo, có tính khả chuyển cao trong khi xây dựng và phát triển các ứng dụng song song trên các kiến trúc máy tính bộ nhớ chia sẻ.
Việc cài đặt và thử nghiệm cải tiến của thuật toán Barnes-Hut trên các máy đa xử
lý Intel và IBM cũng giúp cho tôi có những kinh nghiệm và thu được một số kết quả thực nghiệm. Để qua đó tôi phân tích và thấy được một số khó khăn khi tiến hành song song hóa.
Tuy kết quả thực nghiệm đạt được chưa cao, song qua tìm hiểu tôi đã học hỏi
được kinh nghiệm và nâng cao vốn hiểu biết của mình về tính toán hiệu năng cao trên các máy đa xử lý, cũng như kinh nghiệm về sử dụng hệđiều hành Linux.
Hướng phát triển
Do điều kiện về thời gian nghiên cứu và điều kiện về phần cứng, nên tôi mới chỉ
tìm hiểu và tiến hành thử nghiệm song song hóa trên máy đa xử lý Intel. Hướng nghiên cứu tiếp theo của tôi là tiếp tục tìm hiểu, thử nghiệm và tối ưu thuật toán treecode bằng cách tiến hành song song hóa trên máy IBM, cũng như tiến hành song song hóa thuật toán trên các máy đa xử lý kết hợp giữa bộ nhớ chia sẻ và bộ nhớ phân tán.
Lê Thị Lan Phương 54
TÀI LIỆU THAM KHẢO
[1] Josh Barnes & Piet Hut, A hierarchical O(N log N) force – calculation
algorithm, Nature, v. 324, December 1986.
[2] Fast Hierarchical Methods for the N-body Problem, Part 1 http://www.cs.berkeley.edu/~demmel/cs267/lecture26/lecture26.html
[3] J. E. Barnes, A modified tree code: Don't laugh; It runs, Journal of Computational Physics 87 (1990) 161--170.
[4] A. Kawai, J. Makino, High-accuracy treecode based on pseudoparticle
multipolemethod, Proceedings of the 208th Symposium of the International
Astronomical Union (Tokyo, Japan, July 10-13, 2001) 305-314.
[5] A. Kawai, J. Makino, Pseudo-particle multipole method: A simple method to
implement a high-accuracy treecode, The Astrophysical Journal, 550 (2001)
L143-L146.
[6] A. Kawai, J. Makino, T. Ebisuzaki, Performance analysis of high-accuracy
tree code based on the pseudoparticle multipole method, The Astrophysical
Journal Supplement 151 (2004) 13-33.
[7] Joshua E. Barnes, Institute for Astronomy, University of Hawaii, Treecode
Guide
[8] Giovanni Erbacci, Shared Memory Paradigm, High Performance Systems
Department, CINECA
[9] Introduction to OpenMP, Technical User Support, Supercomputing
Institute, University of Minnesota
[10] OpenMP exercise
http://www.llnl.gov/computing/tutorials/openMP/exercise.html
[11] Michael Süß, Claudia Leopold, A User's Experience with Parallel Sorting
Lê Thị Lan Phương 55
[12] Dieter an Mey, Two OpenMP Programming Patterns, Center for Computing and Communication, Aachen University
[13] Paul Graham, Edinburgh Parallel Computing Centre, The university of Edinburgh,
OpenMP A Parallel Programming Model for Shared Memory Architectures,March 1999, version 1.1