Saya menggunakan Intel MKL untuk BLAS dan menggunakan Intel MKL Link Line Advisor untuk bantuan dengan opsi baris perintah.
Penasihat menyediakan opsi untuk Static, Dynamic, dan Single Dynamic Library. Apa arti dari istilah-istilah ini?
Ada banyak posting di SO mengenai hal ini tetapi semuanya telah difokuskan pada pengembangan perangkat lunak daripada kode ilmiah / matematika. ( Yang ini sangat berguna)
- Bagaimana istilah-istilah ini relevan dengan Komputasi Paralel?
- Apakah yang satu "lebih baik" dari yang lain? (Saya tahu bahwa lebih baik perlu didefinisikan lebih tepat tetapi saya tidak tahu bagaimana sampai sekarang)
- Apa yang digunakan lebih umum dan mengapa?
- Apa yang perlu dipertimbangkan oleh programmer saat menautkan?
-mkl
tanda yang harus menghapus kebutuhan untuk menggunakan penasihat jalur tautan untuk sebagian besar kasus.-static
dan secara dinamis menghubungkannya jika Anda tidak. Ini jelas jauh lebih baik dari sudut pandang kemudahan penggunaan, dalam hal apa pun.Jawaban:
Istilah tautan statis dan tautan dinamis tidak secara langsung terkait dengan komputasi paralel, meskipun telah diketahui selama beberapa waktu bahwa pemuatan dinamis (tidak seperti pemuatan yang dapat dieksekusi secara statis) tidak berskala baik pada sistem file jaringan karena beratnya metadata load disebabkan oleh loader dinamis yang mencari jalur pemuatan untuk pustaka target.
Sulit untuk membuat pernyataan umum tentang apakah perpustakaan statis atau dinamis lebih baik dalam komputasi kinerja tinggi. Tentu saja untuk sebagian besar aplikasi superkomputer, ini lebih sederhana dan lebih disukai daripada tautan statis. Kenapa ini? Pada generasi superkomputer saat ini, biasanya hanya ada satu pekerjaan yang berjalan per node, yang sangat mengurangi manfaat dari pengurangan konsumsi memori karena shared library. Selain itu, kode komputasi ilmiah cenderung tidak terlalu canggih dalam hal fitur bahasa atau desain program, dan mereka jarang menggunakan fitur bahasa yang memerlukan pemuatan dinamis (seperti modul plugin). Perpustakaan dinamis memiliki kesulitan tambahan menjadi jauh lebih portabel di seluruh sistem operasi daripada perpustakaan statis.
Sebagai konsekuensi dari semua ini, sebagian besar sistem HPC menggunakan kompilasi statis ketika tersedia. Perpustakaan statis dipandang lebih cepat, lebih mudah untuk menginstal dan memelihara, dan umumnya lebih kuat. Kode HPC berdasarkan Python adalah salah satu pengecualian untuk ini, tetapi mereka masih mengalami masalah kinerja yang terkait dengan pemuatan dinamis (beberapa pengguna di scicomp sebenarnya sedang mengerjakan masalah ini sekarang!).
Ketika Anda memilih tautan statis vs dinamis, Anda perlu mempertimbangkan bagaimana dan di mana kode Anda akan digunakan, apakah pustaka yang mendasarinya cenderung berubah atau dipindahkan, dan karakteristik kinerja sistem file jaringan Anda. Anda juga harus mengevaluasi apakah Anda memerlukan tautan dinamis, baik melalui ketergantungan perpustakaan atau untuk beroperasi dengan bahasa skrip dinamis seperti Python.
Single Dynamic Library adalah istilah khusus Intel. Ini merujuk pada pengemasan perpustakaan dinamis mereka menjadi satu meta-library untuk menyederhanakan proses penautan. Jika Anda akan menggunakan tautan dinamis dengan perpustakaan Intel, formulir ini mungkin lebih disukai kecuali jika Anda melakukan sesuatu yang rumit.
sumber
Dynamic : 0:42.92
Static : 0:42.93
Single Dynamic : 0:42.97
rata-rata lebih dari 1000 nilai.