C ++ ile Mathematica'nın QuasiMonteCarlo entegrasyonunun değiştirilmesi


12

QuasiMonteCarloYöntemi kullanarak 3 veya 4 boyutlu bazı integraller gerçekleştiren bir Mathematica program var . Sorun şu ki, bu hesaplamaların bazılarının HPC kümemizde bulunan maksimum iş süresinde tamamlanamayacağı noktaya kadar can sıkıcı bir şekilde uzun zaman alıyor. Bu yüzden programı büyük bir faktörle hızlandıracağından şüphelendiğim C ++ 'da yeniden yazmayı düşünüyorum.

GSL belgelerine baktım ve quasirandom dizileri ve düzenli MC entegrasyonu hakkında bölümler varken , onları bir araya getiren hiçbir şey görmüyorum. Ayrıca bir veya iki Google araması, yaygın olarak güvenilen bir uygulamaya benzeyen bir şey ortaya çıkarmadı. C ++ 'da QMC entegrasyonunun iyi test edilmiş bir uygulaması için seçeneklerim nelerdir?

Tutarlılık adına, Mathematica'nın uyguladığı Halton-Hammersley-Wozniakowski yöntemine yakın bir şey kullanmayı tercih ederim , eğer bir seçenekse .


2
İntegrali Stackoverflow'a gönderebilirsiniz ve neler olup bittiğine bir göz atabiliriz. Mathematica, oldukça hassas olan makine hassasiyeti için MKL'ye dayanmaktadır.

2
Sorunuza bir cevap değil, ama Compilegeçmeden önce integral (C koduna) ing denediniz mi merak ediyordum NIntegrate, yani bu NIntegrateyavaş mı ya da fonksiyonu hesaplıyor musunuz? C-derlenmiş işlevleri kullanmak, bir kümede biraz daha fazla çalışma gerektirebilir.
Szabolcs

1
Sesleri çok iyi bir fikir gibi derlemek, hiç düşünmemiştim. Bir deneyeceğim. Bu hesaplamaların her biri, tahminime göre işlevi yaklaşık 5 milyon kez değerlendirir ve tüm hesaplama yaklaşık 3 saat sürdüğü için, işlev değerlendirmesi başına 2 ms'dir, bu da tamamen sayısal hesaplamalar için oldukça yavaş görünür.
David Z

@ruebenko: Bunu aklımda tutacağım.
David Z

2
CUBA Kütüphanesi, düşük boyutlu problemler için bir takım algoritmalara sahiptir. Mathematica arayüzü bile var. feynarts.de/cuba
dls

Yanıtlar:


1

C ++ (veya C) için yarı Monte Carlo entegratörlerinin görünür eksikliği göz önüne alındığında, GSL ile kullanılacak kendi uygulamamı yazdım . Özellikle iyi test edilmemiştir ve Mathematica'nın algoritmasını uygulamamaktadır, ancak hiçbir şeyden daha iyi olmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.