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 và j , cần thiết cho việc cập nhật vận tốc của cả hai hạt i và j, 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 đó:
cá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?