Aracılığıyla paylaş


/OpenMP (OpenMP 2.0 desteğini etkinleştir)

Derleyici işlemek neden olan #pragmaomp.

/openmp

Notlar

#pragma ompbelirtmek için kullanılan OpenMP yönergeleri ve OpenMP yan tümceleri. /openmp Belirtilmemiş bir derleme derleyicisinin yoksaydığı OpenMP yan tümceleri ve yönergeleri. OpenMP işlevi çağrıları derleyici bile tarafından işlenen /openmp belirtilmemiş.

Bir uygulama ile derlenmiş /openmp ve OpenMP kitaplıkları yalnızca Windows 2000 veya sonraki işletim sistemleri üzerinde çalışabilir.

Derlenmiş uygulamalar ile /openmp ve /clr yalnızca tek bir uygulama etki alanı işlem; çalıştırılabilir birden çok uygulama etki alanları desteklenmez. Modül Oluşturucu (.cctor) çalıştırdığınızda, diğer bir deyişle, bu işlem ile derlenmiş algılar /openmp ve uygulama varsayılan dışı çalışma zamanı modülü yüklüyse. Daha fazla bilgi için, bkz. AppDomain, /CLR (ortak dil çalışma zamanı derleme) ve Karışık Derlemeleri Başlatma

İle derlenmiş bir uygulama yüklemeye çalışırsanız, /openmp ve /clr bir varsayılan olmayan uygulama etki alanına bir TypeInitializationException özel hata ayıklayıcı durum ve hata ayıklayıcıda bir OpenMPWithMultipleAppdomainsException özel durum.

Bu özel durumlar aşağıdaki durumlarda yükseltilmiş olması:

  • Uygulamanız ile derlendiğinde if /clr, birlikte değil /openmp, bir varsayılan olmayan uygulama etki alanına ancak burada işlem ile derlenen uygulama içerir yüklü olduğu /openmp.

  • Başarılı olursa, /clr regasm.exe gibi bir yardımcı uygulama (Regasm.exe (derleme kayıt Aracı)), varsayılan olmayan uygulama etki alanına hangi yükler, hedef derlemeler.

Ortak dil çalışma zamanı 's kod erişimi güvenliğini OpenMP bölgelerde işe yaramaz. clr kod erişimi güvenlik özniteliği paralel bir bölge dışına uygularsanız, paralel bölgesinde geçerli olmayacaktır.

Microsoft öneren, yazamaz, /openmp kısmen sağlayan uygulamaları kullanarak arayanlar, güvenilir AllowPartiallyTrustedCallersAttribute, ya da herhangi bir clr kod erişimi güvenlik öznitelikleri.

Visual Studio geliştirme ortamındaki bu derleyici seçeneğini ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz. Nasıl yapılır: Proje özellik sayfalarını açın.

  2. Genişletme Yapılandırma özellikleri düğüm.

  3. Genişletme c/C++ düğüm.

  4. Seçin Dil özellik sayfası.

  5. Değiştirmek OpenMP destek özelliği.

Bu derleyici seçeneği programlı olarak ayarlamak için

Örnek

Aşağıdaki örneği yeniden başlatıldıktan sonra havuzu kullanarak karşı havuzu başlangıç etkilerini bazılarını gösterir. X 64, tek çekirdekli varsayarak çift işlemci havuzu başlangıç için yaklaşık 16ms alır. Bundan sonra yine de var. havuzu için çok az maliyet

Ne zaman, derleme ile /openmp, test2 ikinci çağrısı ile derleme'den artık hiçbir zaman çalışır /openmp-, hiçbir havuzu başlangıç olarak. Bir milyon tekrar en /openmp sürüm daha hızlı /openmp- sürümü için ikinci çağrı test2 için ve 25 tekrar /openmp- ve /openmp sürümleri kayıt saati parçalı yapı'dan.

Bunu yalnızca bir döngü uygulamanızda varsa ve küçüktür (yaklaşık yükü makinenizde için ayarlanır), 15ms içinde çalışan /openmp uygun olmayabilir, ancak, çok daha fazla bir şey olduğunu, kullanmayı düşünebilirsiniz /openmp.

// cpp_compiler_options_openmp.cpp
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

volatile DWORD dwStart;
volatile int global = 0;

double test2(int num_steps) {
   int i;
   global++;
   double x, pi, sum = 0.0, step;

   step = 1.0 / (double) num_steps;

   #pragma omp parallel for reduction(+:sum) private(x)
   for (i = 1; i <= num_steps; i++) {
      x = (i - 0.5) * step;
      sum = sum + 4.0 / (1.0 + x*x);
   }

   pi = step * sum;
   return pi;
}

int main(int argc, char* argv[]) {
   double   d;
   int n = 1000000;

   if (argc > 1)
      n = atoi(argv[1]);

   dwStart = GetTickCount();
   d = test2(n);
   printf_s("For %d steps, pi = %.15f, %d milliseconds\n", n, d, GetTickCount() - dwStart);

   dwStart = GetTickCount();
   d = test2(n);
   printf_s("For %d steps, pi = %.15f, %d milliseconds\n", n, d, GetTickCount() - dwStart);
}

Ayrıca bkz.

Başvuru

Derleme Seçenekleri

Derleyici seçeneklerini ayarlama