Aracılığıyla paylaş


OpenMP döngüsünden Eşzamanlılık Çalışma Zamanına geçiş

Eşzamanlılık Çalışma Zamanı çeşitli programlama modellerini etkinleştirir. Bu modeller diğer kitaplıkların modellerini çakışabilir veya tamamlar. Bu bölümdeki belgeler, OpenMP'yi Eşzamanlılık Çalışma Zamanı ile karşılaştırır ve Eşzamanlılık Çalışma Zamanı'nı kullanmak için var olan OpenMP kodunu geçirme hakkında örnekler sağlar.

OpenMP programlama modeli açık bir standartla tanımlanır ve Fortran ve C/C++ programlama dillerine yönelik iyi tanımlanmış bağlamalara sahiptir. Microsoft C++ derleyicisi tarafından desteklenen OpenMP 2.0 ve 2.5 sürümleri yinelemeli paralel algoritmalar için uygundur; başka bir ifadeyle, bir veri dizisi üzerinde paralel yineleme gerçekleştirirler. OpenMP 3.0, yinelemeli görevlere ek olarak yinelemeli olmayan görevleri destekler.

OpenMP, paralellik derecesi önceden belirlendiğinde ve sistemdeki kullanılabilir kaynakla eşleştiğinde en verimli yöntemdir. OpenMP modeli, çok büyük hesaplama sorunlarının tek bir bilgisayarın işlem kaynaklarına dağıtıldığı yüksek performanslı bilgi işlem için özellikle iyi bir eşleşmedir. Bu senaryoda, donanım ortamı genel olarak sabittir ve geliştirici algoritma yürütülürken tüm bilgi işlem kaynaklarına özel erişim sağlamayı makul bir şekilde bekleyebilir.

Ancak, daha az kısıtlanmış bilgi işlem ortamları OpenMP için iyi bir eşleşme olmayabilir. Örneğin, özyinelemeli sorunların (hızlı sıralama algoritması veya veri ağacında arama gibi) OpenMP 2.0 ve 2.5 kullanılarak uygulanması daha zordur. Eşzamanlılık Çalışma Zamanı, Zaman Uyumsuz Aracılar Kitaplığı'nı ve Paralel Desenler Kitaplığı'nı (PPL) sağlayarak OpenMP'nin özelliklerini tamamlar. Zaman Uyumsuz Aracılar Kitaplığı, kaba ayrıntılı görev paralelliğini destekler; PPL daha ayrıntılı paralel görevleri destekler. Eşzamanlılık Çalışma Zamanı, uygulamanızın mantığına odaklanabilmeniz için işlemleri paralel olarak gerçekleştirmek için gereken altyapıyı sağlar. Ancak Eşzamanlılık Çalışma Zamanı çeşitli programlama modellerini etkinleştirdiğinden, zamanlama ek yükü OpenMP gibi diğer eşzamanlılık kitaplıklarından daha fazla olabilir. Bu nedenle, mevcut OpenMP kodunuzu Eşzamanlılık Çalışma Zamanı'nı kullanacak şekilde dönüştürürken performansı artımlı olarak test etmenizi öneririz.

OpenMP'den Eşzamanlılık Çalışma Zamanına Ne Zaman Geçirilmez?

Aşağıdaki durumlarda Eşzamanlılık Çalışma Zamanı'nı kullanmak için mevcut OpenMP kodunu geçirmek avantajlı olabilir.

Servis Talepleri Eşzamanlılık Çalışma Zamanının Avantajları
Genişletilebilir bir eşzamanlı programlama çerçevesine ihtiyacınız vardır. Eşzamanlılık Çalışma Zamanı'ndaki özelliklerin çoğu genişletilebilir. Yeni özellikler oluşturmak için mevcut özellikleri de birleştirebilirsiniz. OpenMP derleyici yönergelerine bağlı olduğundan, kolayca genişletilemez.
Uygulamanız işbirliğine dayalı engellemeden yararlanacak. Bir görev henüz kullanılabilir olmayan bir kaynak gerektirdiğinden bunu engellediğinde, eşzamanlılık çalışma zamanı ilk görev kaynağı beklerken diğer görevleri gerçekleştirebilir.
Uygulamanız dinamik yük dengelemeden yararlanabilir. Eşzamanlılık Çalışma Zamanı, iş yükleri değiştikçe bilgi işlem kaynaklarının ayrılmasını ayarlayan bir zamanlama algoritması kullanır. OpenMP'de zamanlayıcı işlem kaynaklarını paralel bir bölgeye ayırdığında, bu kaynak ayırmaları hesaplama boyunca sabitlenir.
Özel durum işleme desteğine ihtiyacınız vardır. PPL, paralel bölge veya döngünün hem içinde hem de dışında özel durumları yakalamanıza olanak tanır. OpenMP'de özel durumu paralel bölge veya döngü içinde işlemeniz gerekir.
bir iptal mekanizmasına ihtiyacınız vardır. PPL, uygulamaların hem tek tek görevleri hem de paralel iş ağaçlarını iptal etmelerini sağlar. OpenMP, uygulamanın kendi iptal mekanizmasını uygulamasını gerektirir.
Paralel kodun başladığı farklı bir bağlamda tamamlansın. Eşzamanlılık Çalışma Zamanı, bir görevi bir bağlamda başlatmanıza ve ardından bu görevi başka bir bağlamda beklemenize veya iptal etmenizi sağlar. OpenMP'de, tüm paralel çalışmaların başladığı bağlamda bitmelidir.
Gelişmiş hata ayıklama desteğine ihtiyacınız vardır. Visual Studio, çok iş parçacıklı uygulamalarda daha kolay hata ayıklamanız için Paralel Yığınlar ve Paralel Görevler pencereleri sağlar.

Eşzamanlılık Çalışma Zamanı için hata ayıklama desteği hakkında daha fazla bilgi için bkz . Görevler Penceresini Kullanma, Paralel Yığınlar Penceresini Kullanma ve İzlenecek Yol: Paralel Uygulamada Hata Ayıklama.

OpenMP'den Eşzamanlılık Çalışma Zamanına Geçirilmediğinde

Aşağıdaki durumlarda, Eşzamanlılık Çalışma Zamanı'nı kullanmak için mevcut OpenMP kodunun geçirilmesinin uygun olmayabileceği durumlar açıklanmaktadır.

Servis Talepleri Açıklama
Uygulamanız gereksinimlerinizi zaten karşılıyor. Uygulama performansından ve geçerli hata ayıklama desteğiden memnunsanız, geçiş uygun olmayabilir.
Paralel döngü gövdeleriniz çok az iş yapar. Eşzamanlılık Çalışma Zamanı görev zamanlayıcısının yükü, özellikle döngü gövdesi nispeten küçük olduğunda döngü gövdesini paralel olarak yürütmenin avantajlarını aşmayabilir.
Uygulamanız C dilinde yazılır. Eşzamanlılık Çalışma Zamanı birçok C++ özelliği kullandığından, C uygulamasının tam olarak kullanmasını sağlayan kod yazamadığınızda uygun olmayabilir.

Nasıl yapılır: Eşzamanlılık Çalışma Zamanı Kullanmak üzere Döngü için bir OpenMP paralelini Dönüştürme

OpenMP paralelini ve yönergelerini kullanan temel bir döngü göz önünde bulundurulduğunda, bunun Eşzamanlılık Çalışma Zamanı eşzamanlılığı::p arallel_for algoritmasını kullanacak şekilde nasıl dönüştürüldüğünü gösterir.

Nasıl yapılır: Eşzamanlılık Çalışma Zamanı Kullanmak için İptali Kullanan bir OpenMP Döngüsünü Dönüştürme
Tüm yinelemelerin çalıştırılmasını gerektirmeyen bir döngü için OpenMP paraleliverüldüğünde, Eşzamanlılık Çalışma Zamanı iptal mekanizmasını kullanmak için nasıl dönüştürüldüğünü gösterir.

Nasıl yapılır: Eşzamanlılık Çalışma Zamanı Kullanmak için Özel Durum İşleme Kullanan bir OpenMP Döngüsünü Dönüştürme
Özel durum işleme gerçekleştiren bir döngü için OpenMP paraleliverüldüğünde, Eşzamanlılık Çalışma Zamanı özel durum işleme mekanizmasını kullanmak için nasıl dönüştürüldüğünü gösterir.

Nasıl yapılır: Eşzamanlılık Çalışma Zamanı Kullanmak için Azaltma Değişkeni Kullanan bir OpenMP Döngüsünü Dönüştürme
Azaltma yan tümcesini kullanan bir döngü için OpenMP paraleliverüldüğünde, Eşzamanlılık Çalışma Zamanı'nı kullanmak için nasıl dönüştürüldüğünü gösterir.

Ayrıca bkz.

Eşzamanlılık Çalışma Zamanı
OpenMP
Paralel Desen Kitaplığı (PPL)
Zaman Uyumsuz Aracılar Kitaplığı