Trên thực tế, phương pháp Monte Carlo được sử dụng trong chương trình MCNP5 có thể được song song hóa, bởi vì mỗi lịch sử hạt được theo dõi riêng lẻ trong một tiến trình độc lập.. Việc n
Trang 1II-P-1.12
SỬ DỤNG TÍNH TOÁN SONG SONG MCNP5 TRONG MÔ PHỎNG PHÂN BỐ LIỀU TIA X
Trần Ái Khanh 1,2 , Đặng Nguyên Phương 3 , Trương Thị Hồng Loan 2 , Mai Văn Nhơn 2
1Khoa Khoa học Cơ bản, Đại học Tiền Giang
2Khoa Vật lý & Vật lý Kĩ thuật – Truờng Đại học Khoa học Tự nhiên, ĐHQG-HCM
3Viện Vật lý, Đại học Freiburg, CHLB Đức
TÓM TẮT
Chương trình MCNP5 là một trong những chương trình tính toán phổ biến để giải quyết các bài toán tính liều trong y học hạt nhân Tuy nhiên, đối với việc tính toán che chắn tối ưu bằng chương trình MCNP5 trên từng máy tính đơn mất khá nhiều thời gian Điều này sẽ làm hạn chế khả năng tính toán và cho kết quả thống kê thấp Trên thực tế, phương pháp Monte Carlo được sử dụng trong chương trình MCNP5 có thể được song song hóa, bởi vì mỗi lịch sử hạt được theo dõi riêng lẻ trong một tiến trình độc lập Tuy nhiên, có nhiều vấn đề cần phải được xử lý nhằm đạt được môt mức độ song song hợp lý Trong công trình này, nhóm tác giả tiến hành tìm hiểu khả năng song song hóa của chương trình MCNP5 Ngoài ra, với một bài toán mẫu nghiên cứu phân bố liều của máy X quang chẩn đoán, nhóm tác giả tiến hành tính toán song song trên máy tính đa lõi từ đó đánh giá tốc độ tính toán khi tiến hành bài toán với nhiều bộ xử lý
Từ khóa: tính toán song song, MCNP5
MỞ ĐẦU
Trong quá trình nghiên cứu phân bố liều, che chắn an toàn bức xạ trong y học hạt nhân, các tác giả đã và đang sử dụng một chương trình mô phỏng vận chuyển hạt bằng phương pháp Monte Carlo có tên gọi MCNP5 [1] Đây là một chương trình mô phỏng đa mục đích, có thể mô phỏng vận chuyển hạt trong một không gian hình học phức tạp Tuy nhiên, đối với một số bài toán lớn, có cấu hình phức tạp, phương pháp mô phỏng Monte Carlo, cụ thể là chương trình MCNP5 có một bất lợi lớn đó chính là thời gian tính toán quá dài Do đó việc nghiên cứu cải tiến chương trình mô phỏng nhằm đạt được tốc độ tính toán tốt hơn là một việc hết sức cần thiết
để có thể nâng cao hiệu quả tính toán của chương trình đồng thời cung cấp các kết quả có độ chính xác thống kê cao Để làm được điều đó, bên cạnh việc sử dụng các phương pháp giảm phương sai đã được xây dựng sẵn trong
chương trình, chúng ta có thể sử dụng kĩ thuật tính toán song song (parallel computing) Kĩ thuật này thường
được áp dụng nhằm giải quyết các bài toán lớn có cấu hình phức tạp hoặc làm giảm thời gian thực thi chương trình Việc nghiên cứu áp dụng tính toán song song vào trong chương trình MCNP cũng đã được thực hiện với một số công trình trước đó [2,3] nhưng chủ yếu cho tính toán mô phỏng lò phản ứng
Trong công trình này, nhóm tác giả đã tiến hành các nghiên cứu bước đầu nhằm tìm hiểu khả năng song song hóa chương trình MCNP5 và đánh giá tốc độ thực hiện tính toán khi chạy đồng thời với nhiều bộ xử lý
Theo đó, chương trình MCNP5 sẽ được song song hóa theo cơ chế trao đổi thông điệp (message passing) sử
dụng thư viện theo chuẩn MPI với mục đích nhắm tới việc thực thi chương trình MCNP5 trên một hệ thống cụm
máy tính (computer cluster) giúp nâng cao hiệu năng tính toán Bước đầu, chương trình MCNP5 được biên dịch
với thư viện MPICH2 trên hệ điều hành Linux Sau đó, chương trình sẽ được kiểm tra, đánh giá dựa trên việc mô phỏng một bài toán mẫu tính liều với một máy tính đơn lõi kép để đánh giá tính khả dụng của việc song song hóa trước khi xây dựng cụm máy tính phục vụ cho việc tính toán mô phỏng trong tương lai
SONG SONG HÓA CHƯƠNG TRÌNH MCNP5
Mô hình tính toán song song
Thông thường hiện nay, hầu hết các chương trình tính toán đều được thiết kế để chạy trên đơn lõi (core),
đó là cách tính toán tuần tự (serial computation) Để có thể chạy được chương trình một cách hiệu quả trên các
hệ thống máy tính hoặc các CPU đa lõi, chúng ta cần phải tiến hành song song hóa chương trình đó Quá trình song song hóa bao gồm việc thiết kế, lập trình sao cho chương trình có thể chạy được trên các hệ thống máy tính song song Nguyên tắc của tính toán song song là phân chia bài toán ra thành các công việc (bài toán) con nhỏ
hơn rồi phân chia các công việc đó đến từng bộ xử lý (processor) và thu thập, đồng bộ các kết quả từ các bộ xử
lý để đưa ra được kết quả cuối cùng Ưu điểm của cách tính toán này chính là khả năng xử lý nhiều tác vụ cùng
một lúc Việc lập trình song song có thể được thực hiện thông qua việc sử dụng các hàm thư viện (ví dụ: mpi.h)
hoặc các đặc tính đã được tích hợp trong các chương trình biên dịch song song dữ liệu, chẳng hạn như OpenMP trong các trình biên dịch fortran F90, F95
Hiện nay, có rất nhiều các loại mô hình tính toán song song khác nhau Các loại mô hình này được phân
chia dựa theo hai tiêu chí là tương tác giữa các tiến trình (process interaction) và cách thức xử lý bài toán
Trang 2(problem decomposition) Theo tiêu chí thứ nhất, chúng ta có hai loại mô hình song song chủ yếu là mô hình dùng bộ nhớ chia sẻ (shared memory) hoặc truyền thông điệp (message passing) Theo tiêu chí thứ hai, chúng ta cũng có hai loại mô hình là song song hóa tác vụ (task parallelism) và song song hóa dữ liệu (data parallelism)
Với mô hình bộ nhớ chia sẻ, tất cả các xử lý đều truy cập một dữ liệu chung thông qua một vùng nhớ dùng chung
Với mô hình truyền thông điệp thì mỗi xử lý đều có riêng một bộ nhớ cục bộ của nó, các xử lý trao đổi dữ liệu với nhau thông qua hai phương thức gửi và nhận thông điệp
Song song tác vụ là phương thức phân chia các tác vụ khác nhau đến các nút tính toán khac nhau, dữ liệu được sử dụng bởi các tác vụ có thể hoàn toàn giống nhau
Song song dữ liệu là phương thức phân phối dữ liệu tới các nút tính toán khác nhau để được xử lý đồng thời, các tác vụ tại các nút tính toán có thể hoàn toàn giống nhau
MPICH2
Mô hình truyền thông điệp là một trong những mô hình lâu đời nhất và được ứng dụng rộng rãi nhất trong
lập trình song song Hai bộ công cụ phổ biến nhất cho lập trình song song theo mô hình này là PVM (Parallel
Virtual Machine) và MPI (Message Passing Interface) Các bộ công cụ này cung cấp các hàm dùng cho việc trao
đổi thông tin giữa các tiến trình tính toán trong hệ thống máy tính song song
MPI là một chuẩn mô tả các đặc điểm và cú pháp của một thư viện lập trình song song, được đưa ra vào
năm 1994 bởi MPIF (Message Passing Interface Forum), và được nâng cấp lên chuẩn MPI-2 từ năm 2001 Có
rất nhiều các thư viện dựa trên chuẩn MPI này chẳng hạn như MPICH hay LAM/MPI
MPICH2 [4] là một thư viện miễn phí bao gồm các hàm theo chuẩn MPI dùng cho lập trình song song theo phương thức truyền thông điệp, có thể được tải tại địa chỉ http://www.mpich.org MPICH2 được thiết kế cho nhiều ngôn ngữ lập trình khác nhau (C++, Fortran, Python,…) và có thể sử dụng trên nhiều loại hệ điều hành (Windows, Linux, MacOS,…) Do phần lớn chương trình MCNP5 được xây dựng bằng ngôn ngữ lập trình Fortran (F90) và C++ nên chúng ta sẽ sử dụng MPICH2 để biên dịch song song MCNP5, trình biên dịch được sử dụng ở đây là mpif90 và mpicc trên nền hệ điều hành Linux Ubuntu 10.04
Chương trình MCNP5
Chương trình MCNP5 là chương trình ứng dụng phương pháp Monte Carlo để mô phỏng các quá trình vật
lí hạt nhân đối với neutron, photon, electron (các quá trình phân rã hạt nhân, tương tác giữa các tia bức xạ với vật chất, thông lượng neutron, ) Chương trình ban đầu được phát triển bởi nhóm Monte Carlo và hiện nay là nhóm Transport Methods Group (nhóm XTM) của phòng Applied Theoretical & Computational Physics Division (X Division) ở Trung tâm thí nghiệm quốc gia Los Alamos (Los Alamos National Laboratory – Mỹ) Phiên bản được sử dụng trong nghiên cứu này là phiên bản MCNP5 được ra đời từ năm 2003
Đây là một công cụ tính toán rất mạnh, có thể mô phỏng vận chuyển neutron, photon và electron, và giải các bài toán vận chuyển bức xạ 3 chiều, phụ thuộc thời gian, năng lượng liên tục trong các lĩnh vực từ thiết kế lò phản ứng đến bảo vệ bức xạ và vật lý y học với các miền năng lượng neutron từ 10-11 MeV đến 20 MeV và các miền năng lượng photon và electron từ 1 keV đến 1000 MeV Chương trình này là công cụ mô phỏng được thiết lập rất tốt cho phép người sử dụng xây dựng các dạng hình học phức tạp và mô phỏng dựa trên các thư viện hạt nhân Sự phức tạp của tương tác photon cũng được xử lý trong chương trình MCNP Chương trình điều khiển các quá trình này bằng cách gieo số theo quy luật thống kê cho trước và mô phỏng được thực hiện trên máy tính
vì số lần thử cần thiết thường rất lớn
Cách thức tính toán song song trong MCNP5
Với việc sử dụng phương thức lập trình song song truyền thông điệp trong MCNP5, các xử lý trong chương trình này được thực hiện với mô hình master/slave Trong mô hình này, có hai loại tác vụ:
Tác vụ chính (master task): điều khiển, phân phối tác vụ cho các máy con (slave), thu nhận và tổng
hợp các kết quả tally thu về từ các máy con
Tác vụ con (slave task): chạy các lịch sử hạt, mô phỏng tương tác, tính toán và lưu trữ kết quả vào trong bộ nhớ riêng, khi hoàn thành gửi kết quả về cho máy chủ (master)
Hình 1 trình bày giản đồ sơ lược các tương tác giữa máy chủ và các máy con trong quá trình mô phỏng MCNP5 Cụ thể hơn, các bước tiến hành gồm có:
Bước 1: Khởi đầu máy chủ gửi các thông tin bài toán (các thông số hình học, vật liệu, nguồn phát, tally, ) cho các máy con
Bước 2: Các máy con (giả sử máy chủ phân chia tác vụ cho N máy con):
Thực hiện tính toán 1/N tổng số lịch sử hạt (trong trường hợp có sử dụng kết hợp OpenMP để song song hóa theo phương thức chia sẻ bộ nhớ thì mỗi máy con sẽ tiếp tục phân chia ra thêm các tiến trình tương ứng)
Trang 3 Ghi nhận kết quả vào bộ nhớ riêng
Sau khi hoàn thành, gửi trả kết quả về cho máy chủ
Bước 3: Tổng hợp kết quả: máy chủ tổng hợp các kết quả được gửi từ các máy con và xuất dữ liệu ra file kết quả
Hình 1 Mô hình tính toán song song của chương trình MCNP5 BÀI TOÁN MẪU VÀ KẾT QUẢ SONG SONG HÓA MCNP5
Bài toán mô phỏng phân bố liều từ máy X quang
Trong công trình này, để khảo sát khả năng tính toán song song của chương trình MCNP5, chúng tôi thực hiện chạy một bài toán mẫu bằng cả hai cách thức chạy tuần tự và song song Bài toán mẫu này là bài toán mô phỏng phân bố liều của chùm tia phát ra từ một máy X quang Máy X quang được sử dụng trong mô phỏng là máy X quang thường quy nhãn hiệu RADspeedM của hãng Shimadzu, Nhật Bản được khảo sát là loại X quang thường quy có anode xoay Trường chiếu 35×35cm2 tại khoảng cách 65cm tính từ tâm bóng, điện thế cực đại
150 kV, dòng cực đại 5,6A Anode nghiêng 160, vật liệu dùng làm anode là hợp chất của Vonfram – Rheni với
bề dày khoảng 1,3mm, tiếp theo là lớp Molybden dày 5-11mm Bộ lọc gồm bộ lọc sẵn có (inherent filter) có bề dày tương đương 1mm Al và bộ lọc bổ sung (additional filter) có bề dày tương đương 0,4mm Al Collimator R-20J được sử dụng gồm 3 lớp chì có bề dày tổng cộng là 8mm Lớp chì thứ nhất (inner leaf) gồm 4 lá chì cố định
có vai trò làm giảm bức xạ off focus, lớp chì thứ hai (middle leaf) gồm 4 lá chì di động dày 2mm đóng vai trò loại bỏ các bức xạ rò rỉ Lớp chì thứ 3 (front leaf) gồm 4 lá chì dày 3mm, nằm mặt dưới collimator đóng vai trò chính trong việc xác định trường chiếu Việc mô phỏng tia X phát ra khi một lượng lớn electron đến anode, tương tác với nguyên tử và phát ra tia X Nguồn electron phát trong mô phỏng là nguồn phẳng, năng lượng không đổi 120keV, số hạt phát ra từ nguồn là 100 triệu hạt Hình 2 trình bày sơ đồ cấu tạo của đầu máy X quang được sử dụng trong mô phỏng MCNP5
Hình 2 Sơ đồ cấu tạo đầu máy X-quang (bên trái) và mô hình được vẽ bằng MCNP5 (bên phải)
Trang 4Cấu hình máy tính
Với sự phát triển của công nghệ máy tính, đặc biệt là công nghệ chế tạo CPU đa lõi hiện nay, việc tính toán song song không còn chỉ được thực hiện với các hệ máy tính mà còn có thể được thực hiện trên các máy tính đơn Trong công trình này, việc mô phỏng được thực hiện trên máy tính đơn có cấu hình chính như sau:
Intel Core I7-4770 (3,4GHz)
6GB RAM
Ổ cứng 250GB
Ethernet card 10/100 Mbps
Kết quả so sánh giữa phương pháp tuần tự và song song
Bảng 1 trình bày các thời gian tính toán (tính bằng phút) giữa việc mô phỏng MCNP5 theo phương pháp tuần tự và song song với số lượng các tiến trình Nproc từ 1 đến 20 Từ bảng này, ta có thể thấy được khi chuyển
từ tính toán tuần tự sang song song thời gian chạy chương trình có giảm xuống (từ 731,1 phút xuống 256,4 phút) Khi tăng số lượng tiến trình, thời gian chạy chương trình giảm gần như tuyến tính, và khi số lượng tiến trình từ
Nproc = 10 trở lên thời gian chạy chương trình bão hòa và dừng lại ở thời gian chạy trung bình khoảng 156,7 phút Sự so sánh giữa tốc độ tính toán trong thực tế so với trường hợp lý tưởng với cấu hình máy sử dụng CPU 4 lõi (4 bộ vi xử lý trung tâm) như được miêu tả trong Phần 3.2 được thể hiện trong Hình 3 Chúng ta có thể thấy tốc độ tính toán trong thực tế tăng chậm hơn so với trường hợp lý tưởng Tuy nhiên, với số lượng tiến trình từ 8 trở lên (gấp đôi số lượng bộ xử lý được sử dụng) thì tốc độ tính toán thực tế cũng gần đạt được như lý tưởng
Bảng 1 Thời gian chạy chương trình MCNP5 với số lượng tiến trình được sử dụng
Số lượng tiến trình Thời gian chạy (phút) Số lượng tiến trình Thời gian chạy (phút)
Trang 5Hình 3 Tốc độ tính toán của MCNP5 trong thực tế so với lý tưởng trong trường hợp có 2 bộ xử lý
KẾT LUẬN
Trong công trình này, các tác giả đã tiến hành song song hóa chương trình MCNP5 để có thể tăng tốc độ tính toán trong quá trình mô phỏng các bài toán y học hạt nhân vốn đòi hỏi thời gian chạy chương trình rất dài để
có thể đạt được kết quả có thống kê tốt Sau khi đã được song song hóa, chương trình MCNP5 được kiểm tra với một máy tính 4 lõi (4 bộ xử lý) Một bài toán mẫu tính toán phân bố liều bởi chùm tia phát ra từ máy X quang đã được sử dụng để kiểm tra tốc độ tính toán của MCNP5 với số lượng các tiến trình khác nhau và so sánh với trường hợp lý tưởng Kết quả cho thấy tốc độ tính toán thực tế tăng chậm hơn so với trường hợp lý tưởng và đạt giá trị bão hòa với số lượng tiến trình từ 8 trở lên
Các kết quả thu được trong công trình cho thấy khả năng ứng dụng của phương thức tính toán song song vào trong mô phỏng MCNP5 nhằm giúp tiết kiệm thời gian tính toán Trong tương lai, một hệ máy tính dạng Beowulf sẽ được xây dựng tại Đại học Tiền Giang với số lượng khoảng 10 – 20 bộ xử lý sẽ giúp cho việc tính toán đạt hiệu năng cao hơn Ngoài ra, các điều kiện tối ưu (chẳng hạn như khả năng cân bằng tải) giúp cho việc
mô phỏng đạt tốc độ tốt nhất cũng sẽ được nghiên cứu
PROCESS PARALLELIZATION USING MCNP5 CODE IN SIMULATING X-RAY DOSE
DISTRIBUTION Tran Ai Khanh 1,2 , Dang Nguyen Phuong 3 , Truong Thi Hong Loan 2 , Mai Van Nhon 2
1Faculty of Basic Sciences, Tien Giang University,
2 Faculty of Physics-Engineering Physics, University of Science, VNU-HCM,
3Institute of Physics, University of Freiburg, Federal Republic of Germany
ABSTRACT
MCNP5 is one of the most popular simulation programs for medical physics calculation However, shielding calculation by using MCNP5 on single processor will cost us lot of time This issue will limit our calculation and give low statistics results In fact, the Monte Carlo approach embedded within MCNP is inherently parallel because each particle history can be tracked individually with an independent processor However there are many problems that must be resolved to achieve a reasonable level of parallelization In this paper, the authors conducted to parallelize the MCNP5 code A sample problem of dose distribution calculation was used to test the performance of parallel computing on multi-core computers and evaluate the running speed with different numbers of processing elements
Key word: parallelization, MCNP5
TÀI LIỆU THAM KHẢO
[1] X-5 Monte Carlo Team, MCNP — A General Monte Carlo N-Particle Transport Code, Version 5, Los
Alamos National Laboratory, 2003
0
2000
4000
6000
8000
10000
12000
Số tiến trình
Thực tế
Lý …
Trang 6[2] Li Deng, Zhong-Sheng Xiep, Parallelization of MCNP Monte Carlo Neutron and Photon Transport
Code in Parallel Virtual Machine and Message Passing Interface, Journal of Nuclear Science and
Technology, 1999
[3] A Serikov, U Fischer, D Grosse, High Performance Parallel Monte Carlo Transport Computation for
ITER Fusion Neutronics Applications, Progress in Nuclear Science and Technology, 2011
[4] W Gropp et al, MPICH2 User’s Guide, Argonne National Laboratory, 2007