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 runtime
jadwal . 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
- untuk direktif
- paralel untuk direktif
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
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
- Wilayah paralel
- fungsi omp_set_dynamic
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