Những lợi thế và bất lợi của thuật toán phân rã hạt và thuật toán song song phân rã miền là gì?


15

Tôi đang chạy mô phỏng động lực phân tử (MD) bằng cách sử dụng một số gói phần mềm, như Gromacs và DL_POLY.

Gromacs hiện hỗ trợ cả thuật toán phân rã hạt và phân tách miền. Theo mặc định, mô phỏng Gromacs sử dụng phân rã miền, mặc dù trong nhiều năm, cho đến gần đây, phân rã hạt là phương pháp duy nhất được thực hiện trong Gromacs. Trong một trong những bài báo của Gromacs (DOI 10.1002 / jcc.20291), các tác giả đưa ra lý do cho sự lựa chọn ban đầu của họ về phân hủy hạt:

"Một quyết định thiết kế ban đầu là lựa chọn làm việc với phân rã hạt thay vì phân rã miền để phân phối công việc trên các bộ xử lý. Trong trường hợp sau, các miền không gian được gán cho các bộ xử lý, cho phép tìm ra các lân cận không gian nhanh chóng chỉ bằng giao tiếp cục bộ, nhưng các biến chứng do đối với các hạt di chuyển qua ranh giới không gian là đáng kể. Phân tách miền chỉ là lựa chọn tốt hơn khi kích thước hệ thống tuyến tính vượt quá phạm vi tương tác, điều này hiếm khi xảy ra trong động lực phân tử. Với phân rã hạt, mỗi bộ xử lý sẽ tính toán các lực và cập nhật vận tốc / vận tốc đối với một phần được chỉ định của các hạt, sử dụng danh sách lân cận được tính toán trước phân bố đều trên các bộ xử lý. phát sinh từ sự tương tác cặp giữa các hạt i j , cần thiết cho việc cập nhật vận tốc của cả hai hạt i jFTôijTôijTôij, chỉ được tính một lần và liên lạc với các bộ xử lý khác. Mỗi bộ xử lý giữ trong bộ nhớ cục bộ của nó bộ tọa độ hoàn chỉnh của hệ thống thay vì giới hạn lưu trữ theo tọa độ mà nó cần. Điều này đơn giản hơn và tiết kiệm chi phí liên lạc, trong khi yêu cầu bộ nhớ thường không phải là yếu tố hạn chế, ngay cả đối với hàng triệu hạt. Mặt khác, danh sách hàng xóm, có thể chứa tới 1000 lần số lượng hạt, được phân phối trên các bộ xử lý. Giao tiếp về cơ bản bị hạn chế gửi tọa độ và lực một lần mỗi lần xung quanh vòng xử lý. Những lựa chọn này đã được chứng minh là mạnh mẽ theo thời gian và dễ dàng áp dụng cho các cụm bộ xử lý hiện đại. "

Ý nghĩa của "kích thước hệ thống tuyến tính" trong câu "Phân tách miền chỉ là lựa chọn tốt hơn khi kích thước hệ thống tuyến tính vượt quá phạm vi tương tác, điều hiếm khi xảy ra trong động lực học phân tử"? Từ đoạn trên, tôi có ý tưởng rằng phân rã hạt có lợi thế là người ta không phải đối phó với các hạt di chuyển qua ranh giới miền; thay vào đó, bạn chỉ cần có đủ bộ nhớ cho mỗi bộ xử lý để lưu trữ toàn bộ cấu hình hệ thống. Vì vậy, phân rã hạt trông rất thuận lợi, trong khi phân rã miền trông rất bất lợi.

Tôi chắc chắn rằng đây là một câu hỏi rất phức tạp (và có lẽ là chủ đề của nhiều cuốn sách), nhưng về cơ bản, nếu phân tách hạt có vẻ rất thuận lợi, tại sao mọi người sẽ cần phải sử dụng phân tách miền? Việc phân tách miền có thuận lợi không nếu kích thước của hệ thống rất lớn (gây khó khăn hoặc không thể lưu trữ tổng cấu hình trong mỗi bộ xử lý)? Dựa trên đoạn trích dẫn ở trên, tôi không chắc tại sao phân rã tên miền bây giờ, chỉ gần đây, thuật toán song song mặc định trong Gromacs.

Có vẻ như DL_POLY bây giờ (phiên bản 4) cũng sử dụng phân tách miền. Từ hướng dẫn sử dụng phiên bản 4:

"Việc phân chia dữ liệu hợp nhất theo cách này dựa trên vị trí của các nguyên tử trong ô mô phỏng, việc phân bổ dữ liệu hệ thống như vậy là đặc trưng của thuật toán DD. Lưu ý rằng để chiến lược này hoạt động hiệu quả, mô phỏng hệ thống phải có mật độ đồng đều hợp lý, sao cho mỗi bộ xử lý được phân bổ gần như một phần bằng nhau của dữ liệu nguyên tử (càng nhiều càng tốt). Thông qua cách tiếp cận này, việc tính toán và tích hợp các phương trình chuyển động được chia sẻ (một cách hợp lý) giữa các bộ xử lý và ở một mức độ lớn có thể được tính toán độc lập trên mỗi bộ xử lý. Phương pháp này đơn giản về mặt khái niệm mặc dù khó lập trình và đặc biệt phù hợp với mô phỏng quy mô lớn, trong đó hiệu quả cao nhất.

...

Trong trường hợp chiến lược DD, thuật toán SHAKE (RATTLE) đơn giản hơn so với phương pháp Dữ liệu được sao chép của DL_POLY Classic), trong đó yêu cầu cập nhật toàn cầu các vị trí nguyên tử (hợp nhất và ghép nối). "

Điều này làm cho âm thanh như thể phân tách miền là tốt bởi vì nó có thể hiệu quả hơn, mặc dù có lẽ khó thực hiện hơn.

Mặt khác, một phiên bản trước đó (DL_POLY Classic) đã sử dụng song song dữ liệu được nhân rộng, dường như là một tên gọi khác của phân rã hạt. Từ hướng dẫn của phiên bản đó:

rTôivTôifTôiNcác nguyên tử trong hệ thống mô phỏng, được sao chép trên mỗi nút xử lý). Trong chiến lược này, hầu hết các tính toán lực và tích hợp các phương trình chuyển động có thể được chia sẻ dễ dàng và bằng nhau giữa các nút và ở mức độ lớn được xử lý độc lập trên mỗi nút. Phương pháp này tương đối đơn giản để lập trình và có hiệu quả hợp lý. Hơn nữa, nó có thể bị sập sập phạm vi để chạy trên một bộ xử lý duy nhất rất dễ dàng. Tuy nhiên, chiến lược này có thể tốn kém trong bộ nhớ và có chi phí truyền thông cao, nhưng nhìn chung nó đã được chứng minh là thành công trên một loạt các ứng dụng.

Đoạn này có vẻ nói chung phù hợp với đoạn đầu tiên trong câu hỏi này, ngoại trừ việc nó nói rằng dữ liệu sao chép / phân tách hạt có "tổng phí truyền thông cao". Đoạn trích từ bài báo Gromacs dường như nói ngược lại - phân tách hạt là thích hợp hơn vì nó có chi phí truyền thông thấp hơn phân rã miền.

Bạn có bất kỳ ý nghĩ nào không?

Câu trả lời:


10

Phân tách hạt và miền được kết nối trực tiếp với hai phương pháp chính để tăng tốc tính toán lực cho các hệ thống có tương tác trong phạm vi giới hạn - Danh sách lân cận Verlet và danh sách liên kết ô. Nếu bạn muốn tìm hiểu chi tiết, có một cuốn sách khá hay của Allen và Tildesley, được gọi là Máy tính mô phỏng chất lỏng , được nhiều người coi là "kinh thánh" của nghiên cứu Động lực học phân tử và Monte Carlo. Sau đó, có Mô phỏng số trong Động lực học phân tử từ Griebel, Knapek và Zumbusch, đi sâu vào các kỹ thuật khác nhau để thực hiện song song MD.

Ôi(N2)Ôi(N)

Ôi(N)Ôi(N) Nnó quy mô tốt hơn. Do đó đối số kích thước tuyến tính. Phương thức phân rã miền là một phần mở rộng đơn giản của phương thức liệt kê ô được liên kết - các ô được chia cho các CPU khác nhau.

Vấn đề với phân rã miền là nó phải giao tiếp khi các hạt di chuyển từ ô này sang ô khác được CPU khác chăm sóc. Điều này có thể trở thành vấn đề ở nhiệt độ mô phỏng cao hơn, nơi các hạt có xu hướng di chuyển xa hơn vị trí cân bằng của chúng, hoặc khi có một dòng các hạt. Ngoài ra thông tin từ các ô trên đường viền tên miền phải được chuyển trên mỗi lần lặp sang (các) tên miền lân cận. Nhưng tất cả điều này là giao tiếp đồng bộ cục bộ và có thể được thực hiện rất hiệu quả.

Dữ liệu được sao chép là cách tiếp cận dễ dàng nhất nhưng thật không may, nó yêu cầu rằng ở mọi bước, tất cả thông tin về vị trí và vận tốc đều được đồng bộ hóa trên toàn cầu. Điều này thực sự không có quy mô tốt và đối với hệ thống rất lớn, bộ nhớ toàn cầu là kích thước của cấu trúc dữ liệu nhân với số lượng CPU được sử dụng, trong khi một trong những mục tiêu của xử lý song song là phân phối dữ liệu sao cho mỗi CPU giữ ít hơn hơn số lượng dữ liệu toàn cầu.

Tóm lại, không tồn tại phương pháp "một kích thước phù hợp với tất cả", phù hợp với tất cả các hệ thống được mô phỏng. Hầu hết thời gian, chiến lược song song tốt nhất có thể được suy ra từ hình dạng hệ thống và có thể chọn mã MD thích hợp trong trường hợp đó - tất cả chúng đều thực hiện nhiều hơn các trường lực và tích hợp cơ bản tương tự.


Câu trả lời chính xác! Có phổ biến để có một phân phối nguyên tử thống nhất? nó hoạt động như nhau cho phân phối không thống nhất?
fcruz

3
Nó phụ thuộc vào hệ thống được mô phỏng. Nếu nó là chất lỏng, khí hoặc tinh thể khối, thì các nguyên tử sẽ phân bố ít đồng đều hơn. Nếu có các pha hoặc tập hợp hạt cục bộ cao - ít như vậy. Đối với phân phối không đồng đều, phân tách miền có thể kém hiệu quả trừ khi thực hiện một số phương pháp thích ứng.
Hristo Iliev

2
Ôi(N2)Ôi(Nđăng nhậpN)orÔi(N)

4

Bởi "Phân tách miền chỉ là lựa chọn tốt hơn khi kích thước hệ thống tuyến tính vượt quá phạm vi tương tác, điều này hiếm khi xảy ra trong động lực học phân tử", các tác giả của bài báo GROMACS (rất cũ) đó có nghĩa là nếu kích thước không gian của danh sách lân cận là theo thứ tự 1nm và ô mô phỏng chỉ vài nanomet, thì chi phí hoạt động của quá trình phân tách miền quá cao. Bạn cũng có thể chấp nhận phân phối thông tin từ tất cả đến phân rã hạt và không cần phải dành thời gian cho tất cả việc giữ sổ sách để phân tách miền.

Vấn đề với sự phân hủy hạt khi GROMACS thực hiện, đó là theo thời gian các hạt được gán cho mỗi bộ xử lý khuếch tán trong không gian. Do trách nhiệm tính toán từng tương tác được cố định bởi vị trí ban đầu của chúng, sự khuếch tán tăng dần âm lượng của tổng không gian mà mỗi bộ xử lý cần biết để xây dựng danh sách lân cận của nó, ngay cả khi tổng số tính toán được mô tả bởi danh sách lân cận là không đổi. Trong thực tế, bạn định kỳ khởi động lại mô phỏng để đặt lại dữ liệu và địa phương liên lạc.

Giả định của bạn rằng "phân rã hạt có lợi thế là người ta không phải đối phó với các hạt di chuyển qua ranh giới miền" không giữ được nếu sự khuếch tán có ý nghĩa theo thang thời gian của mô phỏng.

Phân rã tên miền xử lý "phía trước" này bằng cách di chuyển trách nhiệm cho sự tương tác cùng với sự khuếch tán, từ đó cải thiện vị trí dữ liệu trên mỗi bộ xử lý và giảm thiểu âm lượng truyền thông.

Tuyên bố miễn trừ trách nhiệm: Tôi giúp phát triển GROMACS và có thể sẽ loại bỏ việc thực hiện phân rã hạt vào tuần tới ;-)


0

Tôi muốn thêm vào câu trả lời của Hristo Iliev. Trong khi bài đăng của ông chủ yếu nói về sự phức tạp tính toán , khi nói đến sự song song, sự phức tạp trong giao tiếp ít nhất cũng quan trọng - và đó là lý do chính cho sự phân rã miền.

Các máy song song hiện đại thường có một số loại cấu trúc liên kết hình xuyến. Điều này có nghĩa là mỗi CPU có một số CPU "lân cận" mà nó có thể giao tiếp rất nhanh. Giao tiếp với CPU không phải là hàng xóm sẽ tốn kém hơn. Do đó, thật thuận lợi khi có một thuật toán chỉ cần giao tiếp với các CPU lân cận.

PÔi(P2)

PÔi(P)

Ôi(P)

Tuy nhiên, lưu ý rằng các hệ thống không đồng nhất không phổ biến như âm thanh, chúng chỉ xảy ra khi mô phỏng thứ gì đó trong chân không hoặc khi sử dụng dung môi ẩn. Mật độ của tinh thể và chất lỏng đủ gần để chạy phân hủy miền.


Đây là một câu trả lời rất tốt. Tôi chỉ muốn thêm một độ chính xác. Mô phỏng dòng hạt sử dụng các phương pháp dựa trên các thuật toán giống MD (như Phương pháp phần tử rời rạc) thường gặp phải trường hợp bạn có các vùng gần như không có hạt và các vùng khác chứa đầy chúng ...
BlaB

Nó chắc chắn không phải là một yêu cầu của phân rã hạt mà các đối tác tương tác được phân phối ngẫu nhiên. Người ta có thể và thường nên bắt đầu bằng cách phân hủy thành các nhóm hạt nhỏ gọn về mặt không gian, bởi vì chúng sẽ chia sẻ các hàng xóm tương tác chung. Cuối cùng khuếch tán sẽ có nghĩa là phân phối trở nên ngẫu nhiên. Đó là lý do tại sao các mô phỏng phân rã hạt GROMACS được đề cập ở trên sẽ được khởi động lại định kỳ, để làm mới địa phương của quá trình phân hủy.
mabraham
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.