Gromacs ve DL_POLY gibi çeşitli yazılım paketleri kullanarak moleküler dinamik (MD) simülasyonları kullanıyorum.
Gromac'lar artık hem partikül ayrışma hem de alan ayrışma algoritmalarını desteklemektedir. Varsayılan olarak, Gromacs simülasyonları alan ayrışmasını kullanır, ancak uzun yıllar öncesine kadar Gromac'larda uygulanan tek yöntem parçacık ayrışmasıydı. Gromacs gazetelerinden birinde (DOI 10.1002 / jcc.20291), yazarlar ilk partikül ayrıştırma seçimleri için bir neden verir:
"Tasarımın erken bir kararı, işleyicileri dağıtmak için etki alanı ayrıştırması yerine parçacık ayrışması ile çalışma seçeneğiydi . İkinci durumda, uzamsal alanlar, yalnızca yerel iletişim yoluyla mekansal komşuları hızlı bir şekilde bulmayı sağlayan işlemcilere atanır, ancak Etki alanı ayrışması, yalnızca doğrusal sistem boyutu, moleküler dinamiklerde nadiren görülen etkileşim aralığını önemli ölçüde aştığında daha iyi bir seçimdir, parçacık ayrışması ile her işlemci, kuvvetleri ve koordinat / hız güncellemelerini hesaplar işlemcilere eşit olarak dağıtılmış önceden hesaplanmış bir komşu listesini kullanarak parçacıkların atanmış bir kısmı için. parçacıkları arasındaki çift etkileşimi sonucu ortaya çıkan ı ve j , her iki parçacık hızı güncelleştirme için gerekli olan, I ve j, yalnızca bir kez hesaplanır ve diğer işlemcilere iletilir. Her işlemci, depolamayı ihtiyaç duyduğu koordinatlarla sınırlamak yerine yerel belleğinde sistemin tüm koordinat setini tutar. Bu daha basittir ve iletişim yükünü azaltırken, bellek talebi milyonlarca parçacık için bile genellikle sınırlayıcı bir faktör değildir. Öte yandan, parçacık sayısının 1000 katına kadar içerebilen komşu liste, işlemciler üzerine dağıtılır. İletişim esas olarak, işlemci halkası etrafındaki adımda koordinatları ve kuvvetleri göndermekle sınırlıdır. Bu seçeneklerin zaman içinde sağlam olduğu ve modern işlemci kümeleri için kolayca uygulanabilir olduğu kanıtlanmıştır. "
"Doğrusal sistem boyutu, ancak doğrusal sistem boyutu, moleküler dinamiklerde nadiren görülen etkileşim aralığını önemli ölçüde aştığında" etki alanı ayrışması daha iyi bir seçimdir? Yukarıdaki paragraftan, parçacık ayrışmasının, alan sınırları boyunca hareket eden parçacıklarla uğraşmak zorunda olmadığı avantajına sahip olduğu fikrini alıyorum; bunun yerine, her bir işlemci için toplam sistem yapılandırmasını depolamak için yeterli belleğe sahip olmanız yeterlidir . Bu nedenle, parçacık ayrışması çok elverişli görünürken, etki alanı ayrışması çok elverişsiz görünmektedir.
Bunun çok karmaşık bir soru olduğundan eminim (ve muhtemelen birçok kitabın konusu), ama sadece temel olarak, parçacık ayrışması çok uygun görünüyorsa, neden alan ayrıştırması kullanmanız gerekir? Etki alanı ayrıştırması yalnızca sistemin boyutu çok büyükse (her yapılandırmada toplam yapılandırmayı depolamayı zorlaştırmak veya imkansız kılmak) uygun mudur? Yukarıdaki alıntılanan paragrafa dayanarak, etki alanı ayrışmasının neden şimdi, Gromacs'ta varsayılan paralelleştirme algoritması olduğundan emin değilim.
Öyle görünüyor ki DL_POLY şimdi (sürüm 4) ayrıca alan ayrışması kullanıyor. Sürüm 4 kılavuzundan:
"Konfigürasyon verilerinin bu şekilde bölünmesi, atomların simülasyon hücresindeki konumuna dayanmaktadır, sistem verilerinin böyle bir geometrik tahsisi DD algoritmalarının ayırt edici özelliğidir. Bu stratejinin verimli çalışması için, simüle edilmiş sistem makul derecede düzgün bir yoğunluğa sahip olmalıdır, böylece her işlemciye atom verilerinin neredeyse eşit bir kısmı tahsis edilir (mümkün olduğu kadar) Bu yaklaşımla, hareket denklemlerinin kuvvetlerinin hesaplanması ve entegrasyonu (makul olarak) işlemciler arasında eşit olarak paylaşılır ve büyük ölçüde her işlemci üzerinde bağımsız olarak hesaplanabilir.Yöntem, programlamak zor olsa da kavramsal olarak basittir ve özellikle verimliliğin en yüksek olduğu büyük ölçekli simülasyonlar için uygundur.
...
DD stratejisi durumunda SHAKE (RATTLE) algoritması, atom konumlarının genel güncellemelerinin (birleştirme ve birleştirme) gerekli olduğu DL_POLY Classic'in Çoğaltılmış Veri yönteminden daha basittir. "
Bu, etki alanı ayrışmasının iyi gibi görünmesini sağlar, çünkü belki de uygulanması daha zor olsa da daha verimli olabilir.
Öte yandan, önceki bir sürüm (DL_POLY Classic), parçacık ayrışması için başka bir isim gibi görünen çoğaltılmış veri paralelleştirmesi kullandı. Bu sürüm kılavuzundan:
Çoğaltılmış Veri (RD) stratejisi, MD'de paralellik elde etmenin birkaç yolundan biridir. Paralel bilgisayarın her düğümde konfigürasyon verilerinin çoğaltma adını almaktadır (örneğin, atomik koordinatları tanımlayan diziler hızları, v i ve kuvvetler f i tüm, Nbenzetilmiş sistemdeki atomlar, her işlem düğümünde yeniden üretilir). Bu stratejide, kuvvet denklemlerinin hesaplanması ve entegrasyonu kuvvetlerin çoğu düğümler arasında kolayca ve eşit olarak paylaşılabilir ve büyük ölçüde her bir düğümde bağımsız olarak işlenebilir. Yöntemin programlanması nispeten basittir ve oldukça verimlidir. Ayrıca, tek bir işlemci üzerinde çok kolay bir şekilde çalışmak “daraltılabilir”. Bununla birlikte, strateji bellekte pahalı olabilir ve yüksek iletişim yüklerine sahip olabilir, ancak genel olarak çok çeşitli uygulamalarda başarılı olduğu kanıtlanmıştır.
Bu paragraf, çoğaltılan verilerin / parçacık ayrışmasının "yüksek iletişim ek yükleri" olduğunu belirtmesi dışında, genel olarak bu sorunun ilk paragrafına uygun görünüyor. Gromacs belgesindeki paragraf tam tersini söylüyor - parçacık ayrışması tercih edilir çünkü etki alanı ayrışmasından daha düşük iletişim yüküne sahiptir.
Bir fikrin var mı?