OpenMP Consortium wydało specyfikację OpenMP 4.0, wieloplatformowego interfejsu programowania aplikacji (API), który umożliwia tworzenie programów komputerowych dla systemów wieloprocesorowych ze współdzieloną pamięcią. Dodano wsparcie dla akceleratorów, gdzie dane do obliczania mogą zostać przeniesione z jednego urządzenia liczącego na inne.
Pojawiło się programowanie z użyciem instrukcji SIMD, co ma pozwolić na uruchamianie wielu iteracji pętli z ich wykorzystaniem, a także tworzenie konkretnej wersji funkcji, która zostanie wywołana przez instrukcje SIMD.
Dodano obsługę błędów, dobrze zdefiniowaną w API OpenMP 4.0, aby ulepszyć odporność na awarie i stabilność aplikacji OpenMP. Rozdzielono specyficzne dla platformy dane oraz specyficzne ustawienia algorytmu, oferując deterministyczne zachowanie i prostotę użytkowania.
Pojawiła się obsługa języka Fortran 2003 ze wsparciem dla obliczeń równoległych. OpenMP 4.0 API zapewnia także kilka rozszerzeń do wsparcia obliczeń równoległych, opartych o zadania. Dodano obsługę redukcji, zdefiniowanych przez użytkownika. Pojawiły się sekwencyjnie zgodne operacje atomowe.
Michał Olber liked this on Facebook.
Dobra wiadomość, bo napisany raz kod dla SIMD będzie działać na SSE/AVX/NEON/AltiVec. Szkoda, że tak późno, bo ze względu na wersję 2.0 OpenCL – w nim są gotowe typy wektorowe i działania na nich więc załatwia to kod dla SIMD, jest już Dynamic Parallelism, więc można pisać bardziej naturalnie, powstał format OpenCL SPIR dzięki czemu można kompilować i optymalizować offline przez co kod może być tak wydajny jak natywny (kompilacja runtime nie pozwala na długotrwałą kompilację co oznacza słabsze optymalizacji)… dodatkowo jest wsparcie dla GPU, więc SIMD w OpenMP nie cieszy mnie tak, jak ucieszyłby mnie 5 lat temu (bo zanim wejdzie do kompilatorów to OpenCL 2 będzie już wszędzie i nie będzie najmniejszego sensu w OpenMP).
[…] GCC 4.9.1, w którym naprawiono 88 znalezionych błędów. Pojawiło się wsparcie dla OpenMP 4.0 w Fortranie, C i […]