Bagikan melalui


E. Perilaku yang ditentukan implementasi di OpenMP C/C++

Lampiran ini meringkas perilaku yang dijelaskan sebagai "ditentukan implementasi" dalam API ini. Setiap perilaku dirujuk silang kembali ke deskripsinya dalam spesifikasi utama.

Keterangan

Implementasi diperlukan untuk menentukan dan mendokumenkan perilakunya dalam kasus ini, tetapi daftar ini mungkin tidak lengkap.

  • Jumlah utas: Jika wilayah paralel ditemui sementara penyesuaian dinamis jumlah utas dinonaktifkan, dan jumlah utas yang diminta untuk wilayah paralel lebih dari jumlah yang dapat disediakan sistem run-time, perilaku program ditentukan implementasi (lihat halaman 9).

    Di Visual C++, untuk wilayah paralel yang tidak berlapis, 64 utas (maksimum) akan disediakan.

  • Jumlah prosesor: Jumlah prosesor fisik yang benar-benar menghosting utas pada waktu tertentu ditentukan implementasi (lihat halaman 10).

    Di Visual C++, angka ini tidak konstan, dan dikontrol oleh sistem operasi.

  • Membuat tim utas: Jumlah utas dalam tim yang menjalankan wilayah paralel berlapis ditentukan implementasi (lihat halaman 10).

    Di Visual C++, angka ini ditentukan oleh sistem operasi.

  • schedule(runtime): Keputusan tentang penjadwalan ditangguhkan hingga run time. Jenis jadwal dan ukuran gugus dapat dipilih pada waktu proses dengan mengatur OMP_SCHEDULE variabel lingkungan. Jika variabel lingkungan ini tidak diatur, jadwal yang dihasilkan ditentukan implementasi (lihat halaman 13).

    Di Visual C++, jenis static jadwal tidak memiliki ukuran gugus.

  • Penjadwalan default: Dengan tidak adanya klausul jadwal, jadwal default ditentukan implementasi (lihat halaman 13).

    Di Visual C++, jenis jadwal default tidak static memiliki ukuran gugus.

  • ATOMIC: Ini ditentukan implementasi apakah implementasi menggantikan semua atomic arahan dengan critical arahan yang memiliki nama unik yang sama (lihat halaman 20).

    Di Visual C++, jika data yang dimodifikasi oleh atom tidak pada perataan alami atau jika panjangnya satu atau dua byte, semua operasi atom yang memenuhi properti tersebut akan menggunakan satu bagian penting. Jika tidak, bagian penting tidak akan digunakan.

  • omp_get_num_threads: Jika jumlah utas belum ditetapkan secara eksplisit oleh pengguna, defaultnya ditentukan implementasi (lihat halaman 9).

    Di Visual C++, jumlah utas default sama dengan jumlah prosesor.

  • omp_set_dynamic: Default untuk penyesuaian utas dinamis ditentukan implementasi.

    Di Visual C++, defaultnya adalah FALSE.

  • omp_set_nested: Ketika paralelisme berlapis diaktifkan, jumlah utas yang digunakan untuk menjalankan wilayah paralel berlapis ditentukan implementasi.

    Di Visual C++, jumlah utas ditentukan oleh sistem operasi.

  • OMP_SCHEDULE variabel lingkungan: Nilai default untuk variabel lingkungan ini ditentukan implementasi.

    Di Visual C++, jenis static jadwal tidak memiliki ukuran gugus.

  • OMP_NUM_THREADS variabel lingkungan: Jika tidak ada nilai yang ditentukan untuk OMP_NUM_THREADS variabel lingkungan, atau jika nilai yang ditentukan bukan bilangan bulat positif, atau jika nilainya lebih besar dari jumlah maksimum utas yang dapat didukung sistem, jumlah utas yang akan digunakan ditentukan implementasi.

    Di Visual C++, jika nilai yang ditentukan adalah nol atau kurang, jumlah utas sama dengan jumlah prosesor. Jika nilai lebih besar dari 64, jumlah utas adalah 64.

  • OMP_DYNAMIC variabel lingkungan: Nilai default ditentukan implementasi.

    Di Visual C++, defaultnya adalah FALSE.