OMP – Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP – Initializing libiomp5md.dll, but found libiomp5md.dll already initialized merupakan pesan error ketika menggunakan matplotlib untuk visualisasi data. Ternyata library Matplotlib menggunakan OpenMP untuk melakukan perhitungan pararelnya.
OpenMP (Open Multi-Processing) adalah sebuah spesifikasi yang digunakan untuk membangun dan mengelola pemrograman paralel di lingkungan komputasi shared-memory. OpenMP memungkinkan pengembang perangkat lunak untuk memanfaatkan potensi paralelisme dalam aplikasi mereka dengan cara membagi tugas ke dalam beberapa thread eksekusi yang dapat berjalan secara simultan di beberapa core prosesor dalam satu sistem.
Berikut adalah beberapa poin penting yang perlu dipahami tentang OpenMP:
- Model pemrograman: OpenMP menyediakan model pemrograman paralel yang relatif sederhana. Ini menggunakan paradigma fork-join, di mana satu thread (biasanya thread utama) berfungsi sebagai master dan membagi tugas ke dalam beberapa thread kerja yang berjalan secara paralel. Setelah tugas selesai dieksekusi, thread-thread tersebut bergabung kembali ke thread utama.
- Anotasi direktif: OpenMP menggunakan direktif pra-kompiler yang ditambahkan ke dalam kode sumber program. Direktif ini memberikan petunjuk kepada kompiler untuk melakukan paralelisasi pada bagian-bagian tertentu dari kode. Direktif-direktif tersebut ditandai dengan simbol “#pragma omp”.
- Shared-memory: OpenMP dirancang untuk sistem komputasi shared-memory, di mana beberapa core prosesor dapat mengakses memori yang sama. Ini berarti variabel dan data dapat dibagi secara langsung antara thread-thread yang berjalan secara paralel. Hal ini memungkinkan thread untuk berkomunikasi dan berbagi data melalui variabel bersama.
- Skala dari paralelisme: Dalam OpenMP, tingkat paralelisme dapat disesuaikan dengan mudah. Anda dapat mengontrol jumlah thread yang digunakan, membagi loop iterasi ke dalam potongan-potongan yang lebih kecil, atau menunjuk bagian-bagian tertentu dari kode yang dapat dieksekusi secara paralel.
- Portabilitas: OpenMP didukung oleh berbagai kompiler dan platform. Ini memungkinkan pengembang untuk menulis kode OpenMP yang dapat berjalan di berbagai arsitektur dan sistem operasi tanpa perubahan yang signifikan.
- Fitur-fitur OpenMP: OpenMP menyediakan sejumlah fitur untuk pengembangan aplikasi paralel, seperti paralelisme loop, paralelisme sektional, sinkronisasi thread, pembaruan atomik, pembaruan kritis, reduksi, pengaturan jadwal, dan lainnya. Ini memberikan fleksibilitas dalam mengoptimalkan kode untuk kinerja yang lebih baik.
OpenMP sangat berguna dalam mempercepat eksekusi program yang dapat dibagi menjadi tugas-tugas yang independen secara logika. Dengan memanfaatkan potensi paralelisme dalam perangkat keras modern, OpenMP memungkinkan pengembang untuk meningkatkan kinerja aplikasi mereka dalam mengolah data atau melakukan perhitungan intensif secara paralel.
Berikut error mesage lengkap ketika error itu terjadi
OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.Fatal Python error: Aborted
Cara yang paling mudah yaitu kita menggunakan baris perintah sesuai petunjuk diatas
import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
yang artinya mengijinkan program untuk meng include *.dll tersebut kedalam program