dekomposisi dan eksekusi parallel
Decomposition and parallel execution. Hingga saat ini, semua solver dieksekusi pada satu prosesor. Struktur algoritma CFD membuatnya layak untuk paralelisme data: domain komputasi dibagi menjadi beberapa bagian, dan tugas yang sama dieksekusi secara paralel pada setiap bagian domain komputasi. Setiap proses berkomunikasi dengan tetangganya dan berbagi data yang relevan. Dengan arsitektur multikore dan klaster HPC modern, mendistribusikan beban kerja ke beberapa unit komputasi biasanya menghasilkan percepatan eksekusi dalam hal waktu eksekusi. Dekomposisi domain komputasi tidak boleh memengaruhi properti numerik metode: konsistensi, keterbatasan, stabilitas, dan konservasi.
INFO
Eksekusi solver pada satu inti prosesor sering disebut sebagai “eksekusi serial” – solver dieksekusi “secara serial”.
INFO
Interaksi antara komunikasi antarproses (IPC) dan FVM pada mesh tidak terstruktur dalam OpenFOAM diatasi secara otomatis untuk operator diferensial diskrit, detailnya relatif kompleks dan di luar cakupan untuk buku ini.
Folder $FOAM_RUN dapat digunakan untuk menjalankan simulasi OpenFOAM di folder $HOME, tetapi perlu dibuat.
Untuk menjalankan simulasi di $FOAM_RUN, buat salinan tutorial rongga untuk solver icoFoam:
Dekomposisi domain scotch digunakan untuk tutorial ini. Konfigurasi dekomposisi domain disimpan dalam file kamus system/decomposeParDict. Anda dapat menemukan decomposeParDict yang tersedia dan file serupa dalam tutorial OpenFOAM menggunakan
Kasus tutorial rongga tidak mengandung file ini secara default. Setiap decomposeParDict yang terletak di suatu tempat dalam tutorial OpenFOAM baik untuk disalin ke kasus rongga lokal.
Baris-baris penting decomposeParDict adalah sebagai berikut:
Untuk mengoptimalkan ini, berbagai metode dekomposisi otomatis ada, misalnya mengoptimalkan batas processor untuk menghasilkan overhead komunikasi antarproses minimal. Dengan mengubah baris-baris di system/decomposeParDict seperti berikut, pastikan bahwa domain didekomposisi dalam dua sub-domain dan bahwa metode scotch digunakan untuk itu:
Sebelum mendekomposisi domain, mesh harus dihasilkan. Contoh ini menggunakan mesh berbasis blockMesh, yang harus dieksekusi. Begitu mesh dihasilkan, dekomposisi domain menggunakan decomposePar harus dieksekusi:
Dua direktori baru dihasilkan dalam direktori kasus: processor0 dan processor1. Masing-masing berisi sub-domain, termasuk mesh (di direktori processor*/polyMesh) dan bidang (di direktori processor*/0). Perintah aktual untuk memulai simulasi secara paralel sedikit lebih panjang dari perintah serial, karena MPI harus digunakan untuk itu:
Proses itu sendiri melambat dan bottleneck kemudian bukan daya komputasi prosesor yang tersedia tetapi komunikasi antara proses. Menjalankan simulasi secara paralel menghasilkan percepatan s yang diberikan sebagai
dimana ts dan tp adalah waktu eksekusi serial dan paralel, masing-masing. Kecepatan linier (ideal), sama dengan jumlah proses yang digunakan Np. Biasanya, karena komunikasi antarproses, atau bottleneck yang lokal untuk sub-domain (perhitungan lokal yang disebutkan sebelumnya), percepatan akan memiliki nilai lebih kecil dari jumlah proses s < N.