Mã tắnh toán hạt song song

Một phần của tài liệu Đề Tài: Mô phỏng Plasma phóng điện khí Argon trong hệ phún xạ Magnetron DC bằng phương pháp MIC/MCC potx (Trang 54 - 56)

Chương trình tắnh toán hạt song song ựược thực hiện trên mô hình máy tắnh song song ựơn chỉ thị, ựa dữ liệu (single instruction multiple data - SIMD), là mô hình mà tại một thời ựiểm, các xử lý cùng thực hiện một chỉ thị, nhưng mỗi xử lý lại thực hiện chỉ thị này trên dữ liệu của riêng nó. Trong chương trình song song của chúng tôi, tại một thời ựiểm, chỉ thị chung của các xử lý chắnh là việc gọi và thực thi một trong các thủ tục ựã ựược liệt kê ở phần 2.4.1, trên các dữ liệu của riêng chúng là những hạt

mà các xử lý ựược chia ựều ngay khi chương trình bắt ựầu chạy. để mã tuần tự trở thành mã song song, một số thủ tục của nó cần ựược bổ sung các thủ tục của MPI, mà ựã ựược tóm tắt ở phần 2.3.2.2, như sau:

input_data.f90 : bổ sung thủ tục MPI_BCAST ựể truyền các tham số của mô

hình từ một xử lý nguồn (root) ựến tất cả các xử lý.

load_data.f90 : thủ tục MPI_BCAST ựược sử dụng ựể truyền các giá trị của

từ trường ngoài từ root ựến tất cả các xử lý. Nếu có tổng số hạt Npart và số xử lý

Nproc là bất kỳ thì phép chia Npart/Nproccó thể không hết, nên root thực hiện thủ

tục MPI_SCATTERV ựể phân tán số hạt ựến các xử lý. Khi ựó, tất cả các xử lý

ựược nhận số hạt bằng nhau ngoại trừ root. Tuy nhiên, root chỉ chênh lệch một vài hạt không ựáng kể so với các xử lý khác.

solve_file.f90 : thủ tục MPI_ALLREDUCE ựược gọi với toán tử kết hợp

MPI_SUM ựể tắnh tổng mật ựộ ựiện tắch trên các nút lưới của mỗi xử lý, kết quả

này ựược gửi ựến tất cả các xử lý. Sau ựó, các xử lý tiến hành việc giải phương trình Poisson của riêng nó.

boun_diag.f90 : thủ tục MPI_ALLREDUCE ựược gọi ựể tắnh tổng lượng ựiện

tắch lắng ựọng trên bề mặt cathode.

varable_dt.f90 : thực hiện thủ tục MPI_REDUCE tắnh tổng mật ựộ electron.

Root nhận kết quả này và tìm giá trị lớn nhất của nó, ựiều chỉnh bước nhảy thời gian và gọi MPI_BCAST ựể phân tán bước nhảy thời gian ựến tất cả các xử lý.

load_balace.f90: sau một số chu kỳ tắnh toán, số lượng hạt của mỗi xử lý sẽ

khác nhau, thủ tục MPI_GATHERV ựược dùng ựể gom tất cả các hạt về root. Sau khi ghi tất cả các loại dữ liệu ra các file, root thực hiện việc cân bằng tải cho các xử lý. Chúng tôi nhận thấy rằng, sau 20000 bước nhảy thời gian, số lượng hạt chênh lệch giữa các xử lý là dưới 1000 hạt. Tuy nhiên, chương trình phải thực hiện khoảng 106 bước nhảy thời gian, nên việc cân bằng tải là rất cần thiết.

Chương 3

KẾT QUẢ VÀ BÀN LUẬN

Một phần của tài liệu Đề Tài: Mô phỏng Plasma phóng điện khí Argon trong hệ phún xạ Magnetron DC bằng phương pháp MIC/MCC potx (Trang 54 - 56)