Bagikan melalui


4. Variabel lingkungan

Bab ini menjelaskan variabel lingkungan OpenMP C dan C++ API (atau mekanisme khusus platform serupa) yang mengontrol eksekusi kode paralel. Nama variabel lingkungan harus huruf besar. Nilai yang ditetapkan untuk nilai tersebut tidak peka huruf besar/kecil dan mungkin memiliki spasi kosong di depan dan di belakangnya. Modifikasi pada nilai setelah program dimulai diabaikan.

Variabel lingkungan adalah sebagai berikut:

  • OMP_SCHEDULE mengatur jenis jadwal run-time dan ukuran gugus.
  • OMP_NUM_THREADS mengatur jumlah utas yang akan digunakan selama eksekusi.
  • OMP_DYNAMIC memungkinkan atau menonaktifkan penyesuaian dinamis jumlah utas.
  • OMP_NESTED mengaktifkan atau menonaktifkan paralelisme berlapis.

Contoh dalam bab ini hanya menunjukkan bagaimana variabel ini dapat diatur di lingkungan shell (csh) Unix C. Di lingkungan Korn shell dan DOS, tindakannya serupa:

csh:
setenv OMP_SCHEDULE "dynamic"

Ksh:
export OMP_SCHEDULE="dynamic"

DOS:
set OMP_SCHEDULE="dynamic"

4.1 OMP_SCHEDULE

OMP_SCHEDULE hanya berlaku untuk for arahan dan parallel for yang memiliki jenis runtimejadwal . Jenis jadwal dan ukuran gugus untuk semua perulangan tersebut dapat diatur pada waktu proses. Atur variabel lingkungan ini ke jenis jadwal yang dikenali dan ke chunk_size opsional.

Untuk for arahan dan parallel for yang memiliki jenis jadwal selain runtime, OMP_SCHEDULE diabaikan. Nilai default untuk variabel lingkungan ini ditentukan implementasi. Jika chunk_size opsional diatur, nilainya harus positif. Jika chunk_size tidak diatur, nilai 1 diasumsikan, kecuali ketika jadwalnya adalah static. static Untuk jadwal, ukuran gugus default diatur ke ruang iterasi perulangan dibagi dengan jumlah utas yang diterapkan ke perulangan.

Contoh:

setenv OMP_SCHEDULE "guided,4"
setenv OMP_SCHEDULE "dynamic"

Referensi silang

4.2 OMP_NUM_THREADS

Variabel OMP_NUM_THREADS lingkungan mengatur jumlah default utas yang akan digunakan selama eksekusi. OMP_NUM_THREADS diabaikan jika nomor tersebut diubah secara eksplisit dengan memanggil omp_set_num_threads rutinitas pustaka. Ini juga diabaikan jika ada klausul eksplisit num_threads pada arahan parallel .

Nilai variabel lingkungan harus berupa bilangan OMP_NUM_THREADS bulat positif. Efeknya tergantung pada apakah penyesuaian dinamis jumlah utas diaktifkan. Untuk serangkaian aturan komprehensif tentang interaksi antara OMP_NUM_THREADS variabel lingkungan dan penyesuaian utas dinamis, lihat bagian 2.3.

Jumlah utas yang akan digunakan ditentukan implementasinya jika:

  • OMP_NUM_THREADS variabel lingkungan tidak ditentukan,
  • nilai yang ditentukan bukan bilangan bulat positif, atau
  • nilai lebih besar dari jumlah maksimum utas yang dapat didukung sistem.

Contoh:

setenv OMP_NUM_THREADS 16

Referensi silang

  • klausa num_threads
  • fungsi omp_set_num_threads
  • fungsi omp_set_dynamic

4.3 OMP_DYNAMIC

Variabel OMP_DYNAMIC lingkungan memungkinkan atau menonaktifkan penyesuaian dinamis jumlah utas yang tersedia untuk eksekusi wilayah paralel. OMP_DYNAMIC diabaikan ketika penyesuaian dinamis diaktifkan secara eksplisit atau dinonaktifkan dengan memanggil omp_set_dynamic rutinitas pustaka. Nilainya harus TRUE atau FALSE.

Jika OMP_DYNAMIC diatur ke TRUE, jumlah utas yang digunakan untuk mengeksekusi wilayah paralel dapat disesuaikan oleh lingkungan runtime untuk menggunakan sumber daya sistem dengan sebaik-baiknya. Jika OMP_DYNAMIC diatur ke FALSE, penyesuaian dinamis dinonaktifkan. Kondisi default ditentukan implementasi.

Contoh:

setenv OMP_DYNAMIC TRUE

Referensi silang

4.4 OMP_NESTED

Variabel OMP_NESTED lingkungan memungkinkan atau menonaktifkan paralelisme berlapis kecuali paralelisme berlapis diaktifkan atau dinonaktifkan dengan memanggil omp_set_nested rutinitas pustaka. Jika OMP_NESTED diatur ke TRUE, paralelisme berlapis diaktifkan. Jika OMP_NESTED diatur ke FALSE, paralelisme berlapis dinonaktifkan. Nilai defaultnya adalah FALSE.

Contoh:

setenv OMP_NESTED TRUE

Referensi

  • fungsi omp_set_nested