Perangkat lunak desktop dengan sumber daya HPC untuk penghitungan angka ujung belakang

17

Workgroup kami menghasilkan aplikasi desktop yang mensimulasikan kinerja energi gedung. Ini adalah aplikasi .NET dan ketika pengguna menjalankan banyak simulasi, mereka bisa sangat memakan waktu. Simulasi sepenuhnya dapat diparalelkan, dan kami memiliki beberapa sumber daya komputasi HPC yang sangat signifikan di "kantor".

Satu ide yang kami miliki adalah untuk memungkinkan pengguna mengeluarkan simulasi yang kami tahu akan berjalan sangat lama (sementara setiap simulasi berjalan sekitar 30-120 detik, menjalankan sejumlah besar simulasi bisa memakan waktu beberapa hari). Adakah yang pernah melakukan ini sebelumnya? Jika demikian, apakah Anda menggunakan perpustakaan untuk mempermudah pekerjaan? Apakah itu sepadan dengan usaha?

diedit untuk menambahkan:

Tugas individu untuk menurunkan simulasi akan dilakukan

  • mengemas file (sekitar 5 MB),
  • mengunggahnya ke server kami,
  • menguraikan paket menjadi simulasi individu (masing-masing membutuhkan waktu sekitar 30-120 detik dan benar-benar dapat diparalelkan), jumlah simulasi adalah fungsi dari jumlah opsi yang dipilih oleh pengguna (isolasi, orientasi bangunan, dll.) dan kasus terburuk pemilihan setiap opsi yang memungkinkan akan menghasilkan sekitar 1E50 simulasi. Menjalankan 100 hingga ~ 1E5 simulasi tidak diketahui, tetapi sebagian besar pengguna akan berjalan kurang dari 10.
  • memasang kembali simulasi yang telah selesai dan mengunduh file yang sekarang jauh lebih besar.

Kami tidak yakin antarmuka apa yang digunakan, karena grup kami masih baru dalam hal ini, dan dengan pemotongan anggaran, mungkin akan selesai tepat waktu, tetapi perlu mudah bagi orang-orang berikutnya (jika ada) untuk mempertahankannya.

Aplikasi ini sudah menggunakan .NET 4 dan dapat diperluas untuk menggunakan semua core yang dimiliki pengguna (mesin pengembang kami memiliki 8 core).

Tangurena
sumber
Saya tidak begitu jelas tentang apa yang sebenarnya Anda inginkan di sini - apakah ujung HPC akan selalu ada di server Anda atau server khusus lainnya? (Jika demikian, itu akan membuatnya lebih mudah karena Anda mungkin dapat melakukan lebih banyak sisi server.)
Aesin
@ Aesin, ujung HPC akan ada di server kami, ya. Aplikasi yang ada, dan versi baru menjalankan simulasi di desktop pengguna. Saya mencari saran / rekomendasi untuk berpikir ke depan ke versi berikutnya untuk dapat menggunakan HPC untuk pengguna yang lebih besar.
Tangurena

Jawaban:

10

Anda mungkin mempertimbangkan untuk menggunakan Condor: http://research.cs.wisc.edu/condor/ . Ini mungkin berlebihan, tergantung pada sumber daya HPC apa yang Anda bicarakan dan berapa banyak mereka akan berubah. Namun, ini cukup mudah untuk memulai, dan mengurus peluncuran pekerjaan independen, toleransi kesalahan, keseimbangan beban, dll.

Akan lebih membantu jika Anda lebih spesifik tentang tugas-tugas individu (berapa lama, bagaimana tidak sinkron) dan antarmuka apa yang akan Anda gunakan untuk interaksi (proses peluncuran, perpustakaan, dll)

Mat

Matt Knepley
sumber
Saya tidak yakin apakah condor akan bekerja dengan .net (Windows?), Tetapi kelompok kerja kami menggunakan condor di Linux dan saya dapat merekomendasikannya untuk mengirimkan pekerjaan +1
Sebastian
Condor dapat berkomunikasi melalui sistem file, jadi tidak perlu mengikuti .NET. Itu berjalan di Windows.
Matt Knepley
5

Jika Anda berada di dunia .NET, Anda telah melihat dukungan multi-threading di .NET 4; dan fitur asinkron yang ditambahkan ke .NET 4.5?

Multithreading tidak membantu Anda menurunkan pemrosesan ke komputer lain, tetapi itu memungkinkan Anda memanfaatkan lebih baik PC multicore yang kita semua gunakan saat ini. 4.0 memiliki beberapa fitur bagus dalam hal ini.

4.5 saat ini dalam pratinjau teknologi - jadi perlu dilihat untuk melihat apakah itu akan membantu. Ada sebuah artikel di MSDN yang memperkenalkan fitur asinkron baru dalam sekitar sebulan terakhir (Oktober atau November, dan jelas tidak lebih awal dari September). Tampaknya fitur-fitur ini didorong sebagai cara untuk memparalelkan kode yang secara tradisional kurang paralel, tetapi IIRC mereka juga menyertakan beberapa dukungan multi-server.

menang
sumber
4

Jawabannya tergantung pada apa yang Anda miliki sebagai backend HPC. Pertanyaannya mengacu pada sumber daya yang ada tersedia untuk pengguna NREL. Ada Linux Cluster dan Windows Cluster yang berbasis pada Windows Compute Cluster Server.

  1. Untuk menggunakan linux cluster, penulis perlu memastikan rutin simulasi berjalan pada Mono (implementasi platform .NET untuk linux) dan memastikan Mono diinstal pada node.

  2. Pertanyaan selanjutnya adalah apakah pengguna memiliki akun di cluster komputasi dan bisa mendapatkan data ke node. Kasus paling sederhana adalah dengan sistem file tunggal yang dapat diakses dari PC lokal dan dari node.

    Saya tidak yakin apakah sistem file seperti itu tersedia untuk pengguna NREL, oleh karena itu beberapa penyalinan akan terlibat. Ini sudah membuat segalanya menjadi rumit.

  3. Selanjutnya aplikasi harus dapat mengkompilasi skrip deskripsi pekerjaan, mengirimkannya ke kluster masing-masing dan permintaan sistem antrian untuk keadaan simulasi sampai pekerjaan keluar dari antrian.

  4. Akhirnya aplikasi harus dapat mengambil hasilnya.

Semua ini bisa dilakukan meskipun tidak sepele dan akan sangat spesifik untuk pengaturan lab khusus ini.

Aplikasi komersial dari Ansys atau MSC memungkinkan pengguna menyimpan deskripsi pekerjaan simulasi yang nantinya dapat dijalankan dalam mode batch pada cluster jarak jauh.

Solusi yang lebih umum adalah dengan menggunakan infrastruktur Grid jika tersedia.

Berikutnya dapat pergi untuk arsitektur berorientasi layanan di mana layanan Web diatur di suatu tempat untuk menunggu permintaan simulasi dan mengirimkannya ke cluster sehingga memisahkan aplikasi dari pengetahuan tentang spesifik sumber daya yang tersedia.

Ini banyak digunakan misalnya dalam biologi komputasi, di mana alat digunakan untuk menyusun alur kerja simulasi yang seluruhnya terdiri dari permintaan layanan web untuk diproses.

Hanya untuk dicatat bahwa perhitungan pembongkaran sumber daya komputasi jarak jauh umumnya digunakan dalam aplikasi seperti pengenalan suara Google untuk Android.

Dmitri Chubarov
sumber