Thay thế tích hợp QuasiMonteCarlo của Mathematica trong C ++


12

Tôi có một chương trình Mathicala thực hiện một số tích phân theo 3 hoặc 4 chiều bằng QuasiMonteCarlophương thức này. Vấn đề là, phải mất một thời gian dài khó chịu để chạy, đến mức một số tính toán này không thể hoàn thành trong thời gian công việc tối đa có sẵn trên cụm HPC của chúng tôi. Vì vậy, tôi đang xem xét viết lại chương trình trong C ++, điều mà tôi nghi ngờ sẽ tăng tốc nó lên bởi một yếu tố lớn.

Tôi đã xem các tài liệu của GSL và trong khi có các phần về trình tự gần đúngtích hợp MC thường xuyên , tôi không thấy bất cứ điều gì mang chúng lại với nhau. Ngoài ra, một hoặc hai tìm kiếm Google không tìm thấy bất cứ thứ gì trông giống như một triển khai được tin cậy rộng rãi. Các tùy chọn của tôi để triển khai thử nghiệm tích hợp QMC trong C ++ là gì?

Vì lợi ích của tính nhất quán, tôi muốn sử dụng một cái gì đó gần với phương pháp Halton-Hammersley-Wozniakowski Mathicala thực hiện , nếu đó là một lựa chọn.


2
bạn có thể đăng tích phân trên Stackoverflow và chúng ta có thể xem xét những gì đang diễn ra. Lưu ý, Mathicala dựa trên MKL cho độ chính xác của máy, khá hiệu quả.

2
Không phải là một câu trả lời cho câu hỏi của bạn, nhưng tôi đã tự hỏi nếu bạn đã thử Compilenhập tích phân (mã C) trước khi chuyển nó sang NIntegrate, nghĩa là nó NIntegratechậm hay tính toán hàm? Tuy nhiên, sử dụng các hàm được biên dịch C có thể cần thêm một chút công việc trên một cụm.
Szabolcs

1
Biên dịch âm thanh như một ý tưởng rất tốt, tôi đã không nghĩ về điều đó. Tôi sẽ thử. Theo ước tính của tôi, mỗi phép tính này ước tính hàm khoảng 5 triệu lần và vì toàn bộ quá trình tính toán mất khoảng 3 giờ, nên 2ms cho mỗi lần đánh giá hàm, có vẻ khá chậm đối với một số phép tính đơn thuần.
David Z

@ruebenko: Tôi sẽ ghi nhớ điều đó.
David Z

2
Thư viện CUBA có một số thuật toán cho các vấn đề chiều thấp. Nó thậm chí còn có giao diện Mathicala. feynarts.de/cuba
dls

Câu trả lời:


1

Với sự yêu thích rõ ràng của các nhà tích hợp gần như Monte Carlo cho C ++ (hoặc C), tôi đã viết bản triển khai của riêng mình để được sử dụng với GSL. Nó không được kiểm tra đặc biệt, cũng không thực hiện thuật toán của Mathicala, nhưng nó sẽ tốt hơn không có gì.

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.