Pemecah-GPU-ODE-Paralel-Masif
Integrator akselerasi GPU untuk sejumlah besar sistem persamaan diferensial biasa yang independen
Modul:
Sistem Tunggal Per-Thread v3.1
Ini memecahkan sejumlah besar contoh sistem ODE yang sama dengan kondisi awal dan/atau kumpulan parameter yang berbeda.
Sistem Gabungan Per-Blok v1.0
Ini memecahkan sejumlah besar contoh sistem berpasangan (terdiri dari banyak subsistem) dengan kondisi awal dan/atau kumpulan parameter yang berbeda.
Catatan rilis:
18 Agustus 2020.
Sistem Tunggal Per-Thread v3.1:
- Dukungan untuk presisi tunggal dan ganda.
- Manual yang ditingkatkan/dikerjakan ulang, misalnya, panduan instalasi yang lebih rinci untuk pengguna Windows.
- Penyertaan file batch make.bat untuk mempermudah proses kompilasi di Windows.
- Tutorial baru (Tutorial 5) ditambahkan untuk menguji contoh yang memiliki instance dengan perbedaan skala waktu yang sangat besar. Kurva kinerja MPGOS dibandingkan dengan paket program odeint (C++) dan DifferentialEquations.jl (Julia). MPGOS lebih unggul dari paket-paket ini.
- Tutorial 6 (dinamika dampak) juga diperluas dengan kurva kinerja, lihat poin sebelumnya. Dalam hal ini MPGOS merupakan satu-satunya paket program yang mampu menangani sistem dengan dampak dinamis (pada GPU). Oleh karena itu, perbandingan kinerja hanya dilakukan dengan versi CPU odeint dan DifferentialEquations.jl.
- Perubahan kecil: Pemisahan yang jelas antara variabel TimeDomain dan ActualState.
Sistem Gabungan Per-Blok v1.0:
- Modul MPGOS pertama ini sudah siap. Kode ini dirancang untuk menyelesaikan sejumlah besar contoh sistem berpasangan (terdiri dari banyak subsistem yang disebut unit) dengan kondisi awal dan/atau kumpulan parameter berbeda.
- Modul ini mewarisi hampir semua fitur modul Single System Per-Thread v3.1. Ada beberapa spesialisasi, misalnya penanganan kejadian hanya mungkin dilakukan pada tingkat unit; hanya penggandengan eksplisit yang dapat diperlakukan dalam bentuk matriks; untuk detailnya, pembaca yang tertarik dapat merujuk ke manual.
- Dua contoh tutorial disediakan.
14 Februari 2020.
Sistem Tunggal Per-Thread v3.0:
- Peningkatan kinerja besar-besaran. Teknik metaprogramming template yang diperkenalkan memungkinkan kami menghasilkan kode yang sangat optimal. Rembesan rata-rata adalah 3x, sedangkan untuk sistem berdimensi rendah bahkan bisa mencapai orde besarnya.
10 Oktober 2019.
Sistem Tunggal Per-Thread v2.1:
- Dengan Metaprogramming Templat, kode sepenuhnya ditemplat untuk menghasilkan kode pemecah yang sangat terspesialisasi selama waktu kompilasi (sebagai fungsi algoritme dan kebutuhan penanganan peristiwa dan keluaran padat). Oleh karena itu, sistem file dikerjakan ulang.
- Perluasan kecil: kemungkinan untuk menggunakan parameter bersama bilangan bulat dan aksesori bilangan bulat untuk dapat mencapai teknik pengindeksan kompleks secara efisien untuk sistem yang rumit.
13 Agustus 2019.
Sistem Tunggal Per-Thread v2.0:
- Output padat kini didukung dengan beberapa batasan, lihat manual. Ini adalah prasyarat misalnya untuk menyelesaikan persamaan diferensial tundaan.
- Kode dan antarmukanya sangat disederhanakan dan dibersihkan. Misalnya, Kumpulan Masalah sepenuhnya dihilangkan dari kode (disimpan karena alasan historis), dan banyak opsi yang memungkinkan kini terikat pada Objek Solver yang dapat diatur semuanya dengan satu fungsi anggota.
- Panduan ini juga direstrukturisasi dan disederhanakan sesuai dengan masukan yang ada.
9 April 2019.
Sistem Tunggal Per-Thread v1.1:
- Perangkat (GPU) dapat dikaitkan ke setiap Objek Solver. Dengan demikian, pemilihan perangkat kini ditangani secara otomatis.
- Aliran CUDA secara otomatis dibuat untuk setiap Objek Solver.
- Kumpulan fungsi anggota baru untuk tumpang tindih dengan komputasi CPU-GPU, dan untuk dengan mudah mendistribusikan beban kerja ke GPU yang berbeda dalam satu node. Ini termasuk memori asinkron dan operasi kernel, serta kemungkinan sinkronisasi antara thread CPU dan aliran GPU.
- Variabel jumlah thread yang aktif dapat ditentukan di setiap fase integrasi untuk menangani efek tailing dengan nyaman.
- Dua contoh tutorial baru ditambahkan: a) komputasi CPU dan GPU yang tumpang tindih menggunakan beberapa Solver Objects b) menggunakan beberapa GPU yang tersedia dalam satu mesin/node.
14 Februari 2019.
Sistem Tunggal Per-Thread v1.0:
- Modul MPGOS pertama ini sudah siap. Kode ini dirancang untuk menyelesaikan sejumlah besar sistem ODE yang independen namun identik (kumpulan parameter dan kondisi awal bisa berbeda) pada GPU.
- Keramahan pengguna. Bahkan bagi mereka yang baru mengenal pemrograman C++, kursus singkat saja sudah lebih dari cukup untuk menggunakan paket program.
- Ada manual terperinci dengan contoh tutorial. Oleh karena itu, pengguna dapat dengan mudah membangun proyeknya sendiri dengan menyalin-menempelkan blok kode.
- Penanganan acara yang efisien dan tangguh.
- Tindakan yang ditentukan pengguna setelah setiap langkah waktu untuk fleksibilitas.
- "Interaksi" yang ditentukan pengguna setelah setiap langkah waktu atau penanganan peristiwa yang berhasil (sangat berguna misalnya untuk dinamika dampak, lihat contoh tutorial di manual).
- Kemungkinan untuk memanfaatkan hierarki memori GPU tanpa mengetahui detailnya secara eksplisit.
- Parameter yang dapat diprogram pengguna untuk implementasi fleksibel dan menyimpan properti khusus suatu lintasan.
- Hanya pemecah eksplisit: Runge-Kutta urutan ke-4 dengan langkah waktu tetap, dan metode Runge-Kutta-Cash-Karp urutan ke-4 dengan estimasi kesalahan tertanam urutan ke-5. (karena aliran kontrol yang kompleks dari pemecah implisit, pemecah eksplisit kadang-kadang berkinerja lebih baik daripada pemecah implisit bahkan untuk masalah yang sulit).
- Hanya operasi aritmatika presisi ganda yang didukung.
- Hanya menyimpan titik akhir dari setiap fase integrasi (untuk meningkatkan kecepatan). Namun, hal ini jarang menjadi masalah, karena parameter yang dapat diprogram pengguna dan interaksi yang ditentukan pengguna yang disebutkan di atas memungkinkan untuk menyimpan properti lintasan yang paling kompleks, lihat dokumentasinya.