Udostępnij za pośrednictwem


Migracja z OpenMP na Runtime współbieżności

Runtime współbieżności umożliwia różne modele programowania.Modele te mogą nakładają się lub uzupełniają modeli innych bibliotek.Dokumenty w niniejszej sekcji porównaj OpenMP do Runtime współbieżności i zawierają przykłady o migrowaniu istniejących kod OpenMP używany Runtime współbieżności.

Model programowania OpenMP jest zdefiniowany przez otwarty standard i ma powiązania dobrze zdefiniowanych języków programowania Fortran, C i C++.OpenMP w wersji 2.0 i 2.5, które są obsługiwane przez kompilator Visual C++, są służącej do równoległego algorytmy, które są iteracyjne; oznacza to, że ich wykonywanie iteracji równolegle przez tablicę danych.OpenMP 3.0 obsługuje-iteracyjne zadania i zadania iteracyjne.

OpenMP jest najbardziej efektywne, gdy stopień równoległości prostych jest ustalona, odpowiada dostępnych zasobów w systemie.OpenMP model jest szczególnie pasujący do high-performance computing, gdzie bardzo duże problemy obliczeniowej są rozmieszczane przetwarzania zasobów z jednego komputera.W tym scenariuszu środowiska sprzętowego zazwyczaj jest ustalana i deweloper może racjonalnie oczekiwać mieć wyłączny dostęp do wszystkich zasobów komputerowych, gdy wykonywane jest algorytm.

Jednak mniej ograniczonego środowisk komputerowych nie może pasuje do OpenMP.Na przykład problemy cykliczne (takich jak algorytm sortowanie szybkie lub wyszukiwanie drzewa danych) są trudniejsze do wykonania przy użyciu OpenMP 2.0 i 2.5.Runtime współbieżności uzupełnia możliwości OpenMP, zapewniając Asynchronicznego biblioteki agenci i Równoległych desenie biblioteki (PPL).Asynchroniczne biblioteki agentów obsługuje równoległości prostych zadań coarse-grained; PPL obsługuje więcej szczegółowymi zadania równolegle.Runtime współbieżności zapewnia infrastrukturę, która jest wymagana do wykonywania operacji równolegle, dzięki czemu możesz skupić logiki aplikacji.Jednak ponieważ Runtime współbieżności umożliwiają różne modele programowania, jego planowania napowietrznych może być większa niż inne biblioteki współbieżności, takich jak OpenMP.Dlatego zaleca się przetestowanie wydajności stopniowo po przekonwertowaniu istniejącego kodu OpenMP w taki sposób, aby użyć Runtime współbieżności.

Podczas migracji z OpenMP do Runtime współbieżności

Może być korzystne, aby przeprowadzić migrację istniejącego kodu OpenMP, aby użyć Runtime współbieżności w następujących przypadkach.

Przypadki

Zalety Runtime współbieżności

Wymagane jest rozszerzalną strukturę równoczesnych programowania.

Wiele funkcji w środowisku wykonawczym współbieżności może zostać przedłużony.Można również połączyć istniejące funkcje do redagowania nowych.Ponieważ OpenMP opiera się na dyrektyw kompilatora, nie można łatwo rozszerzyć.

Aplikacja będzie korzystać z blokowanie współpracy.

Gdy zadanie blokuje się, ponieważ wymaga zasobu, który nie jest dostępny, Runtime współbieżności można wykonać inne zadania, gdy pierwsze zadanie oczekuje na zasób.

Aplikacja będzie korzystać z równoważenia obciążenia dynamicznego.

Runtime współbieżności wykorzystuje algorytm planowania, która dostosowuje alokacji zasobów obliczeniowych, zmiany obciążenia pracą.W OpenMP gdy harmonogramu przydziela zasoby obliczeniowe do regionu równolegle, te alokacje zasobów są ustalone w całej obliczeń.

Wymagane jest wsparcie obsługi wyjątków.

PPL pozwala przechwytywać wyjątków, zarówno wewnątrz i na zewnątrz równoległych regionu lub pętli.W OpenMP musi obsługiwać wyjątek wewnątrz regionu równoległych lub pętli.

Wymaga się mechanizm anulowania.

PPL aplikacjom anulować zarówno poszczególnych zadań i równoległych drzew pracy.OpenMP wymaga aplikacji do wdrożenia mechanizmu anulowania.

Wymaga się kod równolegle do zakończenia w innym kontekście, z której uruchamia.

Runtime współbieżności pozwala uruchomić zadanie w kontekście jeden i poczekaj lub anulować zadania w innym kontekście.W OpenMP wszystkie równoległe pracy musi zakończyć się w kontekście, z której uruchamia.

Wymaga się rozszerzoną obsługę debugowania.

Visual Studio zawiera Równoległych stosy i Zadania równolegle systemu windows, dzięki czemu łatwiej można debugować aplikacje wielowątkowe.

Aby uzyskać więcej informacji o debugowaniu obsługę Runtime współbieżności, zobacz Przy użyciu okna zadania równolegle, Za pomocą okna stosy równoległe, i Instruktaż: Debugowanie aplikacji równoległe.

Kiedy nie migracji z OpenMP do Runtime współbieżności

Następujące przypadki opisano, gdy mogą nie być właściwe przeprowadzić migrację istniejącego kodu OpenMP, aby użyć Runtime współbieżności.

Przypadki

Wyjaśnienie

Aplikacja już spełnia Twoje wymagania.

Jeśli jesteś zadowolony z wydajności aplikacji i bieżące obsługę debugowania, migracji, mogą nie być właściwe.

Swoje organy pętli równoległego wykonania pracy mały.

Obciążenie związane z harmonogramu zadań współbieżności Runtime nie może pokonać korzyści wykonywania treści pętli równolegle, szczególnie w przypadku, gdy jednostka pętli jest stosunkowo niewielka.

Aplikacja jest napisany w języku C.

Ponieważ Runtime współbieżności korzysta z wielu funkcji języka C++, to może nie być odpowiednie, gdy nie można pisać kod, który umożliwia aplikacji C w pełni wykorzystać go.

Tematy pokrewne

Zobacz też

Koncepcje

Współbieżność Runtime

Biblioteka desenie równoległe (PPL)

Biblioteka agentów asynchroniczne

Inne zasoby

OpenMP w programie Visual C++