Kaplica jest nowym językiem programowania równoległego rozwijany przez Cray Inc., w ramach prowadzonej przez DARPA programu Computing Systems wysoką wydajność (HPCS). Kaplica ma na celu poprawę wydajności high-end użytkowników komputerów, a także posłużyć jako przenośny model programowania równoległego, które można wykorzystać na klastrach towarowych lub systemów wielordzeniowych pulpitu. Kaplica stara się znacznie poprawić programowania komputerów równoległych dużych dobieranie lub pokonując wydajność i przenośność obecnych modeli programowania takich jak MPI.
Aplikacja Kaplica obsługuje wielowątkowe Model Wykonanie poprzez abstrakcje wysokiego szczebla dla równoległości danych, równoległości zadań, współbieżności i zagnieżdżonej równoległości. & Nbsp; Chapel Typ locale umożliwia użytkownikom określenie i rozum o umieszczenie danych i zadań na docelową architekturę w porządku dostroić do miejscowości. Kaplica obsługuje agreguje dane z widokiem na globalnej implementacji zdefiniowanych przez użytkownika, operacje na rozproszonych struktur danych, pozwalając, aby być wyrażone w sposób naturalny. W przeciwieństwie do wielu poprzednich wyższego poziomu języków równoległych, Kaplica została zaprojektowana wokół filozofii wielorozdzielczej, pozwalając użytkownikom na początku napisać bardzo abstrakcyjne, a następnie stopniowo kod dodać więcej szczegółów, dopóki nie są tak blisko do maszyny, jak ich potrzeby wymagają. Kaplica popiera ponowne wykorzystanie kodu i szybkiego prototypowania poprzez projektowania obiektowego, typ wnioskowania i funkcji programowania generycznego.
Kaplica została zaprojektowana od pierwszych zasad, a nie poprzez rozszerzenie istniejącego języka. Jest to konieczne, język od zbudowane, zaprojektowane tak, aby być łatwy do nauki dla użytkowników C, C ++, Fortran, Java, Perl, Matlab, i innych popularnych językach. Podczas gdy opiera się na koncepcji kaplica i składni języków z wielu poprzednich, jego funkcje są równoległe najbardziej bezpośredni wpływ ZPL, High-Performance Fortran (HPF), a Cray MTA i handlu; / Cray XMT i handlu; rozszerzeń C i Fortran
Co nowego w tym wydaniu:.
- Najważniejsze (szczegóły poniżej)
- Podział "def" keyword proc "w" (procedury) i "iter" (dla iteratory)
- (patrz '$ CHPL_HOME / util / konwersja-DEFS --help' o pomoc aktualizującą istniejące kody)
- dodanej "repliką" dystrybucja i ulepszona "Block-Cykliczny" dystrybucji
- (patrz & quot; Standardowy Dystrybucje & quot; w ciemno i przykłady / starterów / distributions.chpl)
- locale dodaje pojedynczych warstw zadanie dla Nanos ++ (BSC) i Qthreads (Sandia)
- (zobacz doc / README.tasks)
- głównym przeróbką semantyki zasięgu i realizacji
- (patrz & quot; Zmiany semantyczne / Zmiany w Chapel Język & quot; szczegółowo poniżej)
- wstępne wsparcie dla lotnych rodzaje: bool, int, uint, prawdziwy, urojona
- (zobacz doc / noty techniczne / README.volatile)
- wsparcie dla extern consts i klas (wskaźniki typu na elemencie)
- (zobacz doc / noty techniczne / README.extern)
- poprawiona obsługa równoległości danych na Cray XMT
- rozległe ulepszenia kodów próbki w przykładach / katalogu
- (patrz kody '' Przykład poniżej i przykłady / README)
- dodany najwięcej przykładów kodu od specyfikacji do nowego katalogu / przykłady
- (patrz przykłady / niespełniającego / *)
- dodał komentarz techniczny opisujący interfejs map domeny zdefiniowanej przez użytkownika
- (zobacz doc / noty techniczne / README.dsi)
- obszerne aktualizacje specyfikacji języka
- (patrz "Dokumentacja" poniżej)
- kilka ulepszeń zadaniami przydzielonymi wykonawczego i warstwy komunikacji
- (patrz & quot; Runtime Library Zmiany & quot; poniżej)
- Syntactic / Naming zmian
- Podział "def" keyword proc "w" (procedury) i "iter" (dla iteratory)
- (patrz '$ CHPL_HOME / util / konwersja-DEFS --help' o pomoc aktualizującą istniejące kody)
- Zmiana nazw domen '' / tablice arytmetyczne na "prostokątne" Domeny / tablice
- dodano wsparcie dla pływających literały punkcie postaci "1.E ..."
- (wcześniej, tylko "1e ..." i "1.0e ..." były wspierane)
- Zmiany semantyczne / Zmiany w Chapel Język
- kilka ulepszeń w zakresie (patrz "Zakresy" rozdział w specyfikacji języka):
- dodaje koncepcję dostosowania do wskazania modulo wyrównania | krok |
- "align dodał" zapytanie do operatora i zakresów określić / wyrównanie zapytania
- (np, "1..10 przez 3 align 2" = & gt; "2, 5, 8 'od 2 == 5 == 8, mod 3)
- == zdefiniowano w zakresach pod względem sekwencji liczb całkowitych, które generują
- zdefiniowane Ident (R1, R2), aby stwierdzić, czy R1 i R2 są semantycznie identyczne
- zdefiniowane "# k" dla k & lt; 0 w ten sposób & quot; liczyć od końca zakresu & quot;
- dodanej "pierwszy", "ostatni", "alignedLow metody alignedHigh, '' do zakresów
- (np, "1..10 przez -2 '= & gt; pierwsza == 10, ostatnia == 2, alignedLow = 2, alignedHigh = 10),
- dodano wsparcie dla wielu nowych funkcji zapytań Zakres
- (np alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- dodano wsparcie dla lotnych bool, int, uint prawdziwe i typów urojona
- (zobacz doc / noty techniczne / README.volatile)
- dodany sprawdzenie wycofanego z pliku typu pliku
- (np., "Podczas gdy! Infile.eof ...")
- usunięte wsparcie dla leczenia "powrót" w iterator jako "plon",
- (na przykład, zmiana "iter foo () {return x;} 'do' iter foo () {wydajność x; return;} ')
- dodano wsparcie do odwołujących modułów bez pierwszego "use'-nia je
- (na przykład, moduł M1 {var x ...} {... moduł M2 ...} jest M1.x teraz prawna)
- dodał zapytanie callStackSize do rodzaju locale
- (np, "here.callStackSize" zwraca rozmiar stosu wywołań od bieżącej lokalizacji)
- usunięte wcześniej wymagany średnik z końca deklaracji enum
- (np, "enum {czerwone kolory, niebieski, zielony} 'jest legalna; wcześniej potrzebny'; ')
- dodano wsparcie dla jednego spływu przecinek na końcu listy enum
- (np, "enum {czerwone kolory, niebieski, zielony,} 'jest legalna)
- usunięte wsparcie dla domen +/- operatorów na prostokątnych; używać translate ()
- rozbudowywane Cechy
- realizowane == /! = Na prostokątnej, stowarzyszeniowej i nielicznych dziedzin,
- Standardowe Dystrybucje
- dodał pierwszy projekt "replikowane 'dystrybucję do przechowywania danych nadmiarowo
- (patrz przykłady / startery / distributions.chpl)
- ulepszona "Block-Cykliczny", wystarczające do prawidłowego wdrożenia HPCC PTRANS i HPL,
- (patrz przykłady / HPCC / ptrans.chpl, hpl.chpl; przykłady / Startery / distributions.chpl)
- usunąć nadmiarowość w specyfikacji iteratorów lidera między domenami / tablic
- Moduły standardowe
- dodał krawędzi i Nan stałe do modułu Math.chpl
- (patrz "Math" pod & quot; standardowych modułów & quot; w języku specyfikacji)
- dodany isinf () i () isFinite procedury testowe do modułu Math.chpl
- (patrz "Math" pod & quot; standardowych modułów & quot; w języku specyfikacji)
- dodaje pół tuzina więcej procedur do modułu GMP.chpl
- Dokumentacja
- dodał nową notatkę techniczny opisujący interfejs map domeny zdefiniowanej przez użytkownika
- (zobacz doc / noty techniczne / README.dsi)
- poczynili wiele usprawnień w specyfikacji języka
- główne zmiany do działu domen w celu poprawy przejrzystości / dokładność
- lepsze i ujednolicone struktura Records i Ćwiczenia rozdziały
- główne zmiany do rozdziału Domain Maps poprawić jasność / Dokładność
- Kody nazwie przykład, aby zapewnić odsyłacz do przykładów / Spec / programy
- wyjaśnić legalność etykiecie / przerwy / dalej w pętli równoległych
- zaktualizowane opisy czytać [ln] / Zapis [ln]
- poprawiono kilka problemów w dziedzinie plików zamawianiu
- sformatowany specyfikacji jako "książki" w LaTeX
- różne drobne poprawki literówek / błędów
- lepsze definicje / opisy kilku kategoriach,
- dodany dokumentacji locale.name
- i wiele innych zmian ...
- zaktualizowany dokument szybkie odniesienie do obejmują DEF- & gt; proc / iter zmiany, dostosowania op .
- przepisał / zreorganizowane README.extern wyjaśnić wyjaśnień i wychować na bieżąco
- dodał README opisujące "lokalny" oświadczenie (doc / noty techniczne / README.local)
- dodał README opisujące lotnych rodzaje (doc / noty techniczne / README.volatile)
- zaktualizowane README.comm diagnostyki wspomnieć szybko statystyki widelec
- aktualizowane różne README
- Przykładowe kody
- umieszczone najwięcej przykładów kodu od specyfikacji języka. do podkatalogu nowego SPEC /
- poprawiła podkłady / katalogu:
- dodał nowy podkład do stosowania procedur (podkłady / procedures.chpl)
- dodany podstawowy podkład dla domen (podkłady / domains.chpl)
- przemianowany na lokalizacje grunt do locales.chpl i poprawić go
- poprawiła podkład podziały i dodaje Block-cykliczne i replikuje zastosowania
- zaktualizowane podkład Zakres (podkłady / range.chpl)
- poprawiła podkład iteratorów (podkłady / iterators.chpl)
- poprawiła podkład redukcje (podkłady / reductions.chpl)
- () dodaje się getCurrentTime do podkładu timery (podkłady / timers.chpl)
- dodania opisów aliasów typu i rodzajów konfiguracyjnych do zmiennych podkładem
- (patrz starterów / variables.chpl)
- poprawiła katalog HPCC / benchmarki
- dodany pierwszą wersję HPCC PTRANS do HPCC / katalogu (ptrans.chpl)
- dodany czystszą wersję HPCC HPL do HPCC / katalogu (hpl.chpl)
- dodany podkatalogu wariantów / przykładów / HPCC eksponować inne podejścia,
- dodany strumień promoted.chpl pokazać korzystania z promocji w globalnej STREAM Triad
- dodany RA-cleanloop.chpl pokazać czyszczenia (ale obecnie wolniej) jądra RA
- lepsze przykłady najwyższego poziomu:
- przemianowane istniejącym & quot; hello, world & quot; przykłady zaproponować logiczną kolejność czytania
- (patrz przykłady / hello * .chpl)
- dodaniu danych równoległe i rozproszone dane równoległe komentarzy, przykłady świata li>
- (patrz przykłady / hello3-datapar.chpl, przykłady / hello4-datapar-dist.chpl)
- dodania komentarzy do różnych komentarzy, przykłady świata (przykłady / hello * .chpl)
- zaktualizowane wszystkie przykłady aktualnych semantyki języka
- używać 'proc' / 'iter "zamiast" def "
- aktualizacja w celu odzwierciedlenia nowych semantykę zakres
- Notatki danej platformy
- Cray XT / dla Cray XE, poprawiła aprun i PBS-aprun wyrzutnie
- (patrz & quot; specyficzne Launcher notatki & quot; poniżej)
- dla Cray XMT, dodano wsparcie dla pętli równoległych na zakresach
- dla Cray XMT, dodał generacji noalias pragmas do forall zmiennych pętli
- dodano wsparcie dla MareNostrum BSC tym docs i specjalnej wyrzutni
- (zobacz doc / platform / README.marenostrum)
- specyficzne Launcher notatki
- dodaje opcje specyficzne dla programów uruchamiających się --help możliwości
- poprawiła propagacji kodów stanu wyjścia poprzez wyrzutnie
- zmienił wyrzutnie wspierać oparte exec (a nie oparte na systemie) polecenia
- wykonane wyrzutnie używać "unlink", a nie systemu ("rm"), aby usunąć pliki tymczasowe
- dodany wyrzutnię dla BSC MareNostrum
- zmniejszenie liczby plików tymczasowych wykorzystywanych do wychwytywania wyjście 'systemu' polecenia
- aprun ulepszenia launcher:
- dodał --cc flagę, aby określić zadanie procesora w / w węźle
- dodał -q flagę, aby uruchomić wyrzutnię w trybie cichym,
- możliwość debugowania poprzez dodaje zachować tmp CHPL_LAUNCHER_DEBUG pliki całym
- PBS-aprun ulepszenia launcher:
- dodał --cc flagę, aby określić zadanie procesora w / w węźle
- możliwość debugowania poprzez dodaje zachować tmp CHPL_LAUNCHER_DEBUG pliki całym
- oczyścić wyjście, aby pozbyć się jakiegoś obcego druku
- Wsparcie wykonane badanie nasz system wyrzutni
- dodany --walltime i --queue flagi launcher jako alternatywy ENV. Vars.
- Compiler zmiany
- wykonany wydruk kompilatora 'true' / 'false' w podpisach typu, a nie 1/0
- param 'dodaje config ", aby wyłączyć noRefCount liczenia odniesienia (może wyciekać pamięci)
- flag kompilatora
- dodaje flagę --print-callstack na błąd, aby pokazać, co doprowadziło do poważnej rozmowy
- dodaje flagę --no-Codegen pominąć kod generacji i fazy łączącej
- Interoperacyjność zmiany
- dodano wsparcie dla extern C & quot; klas & quot; (Wskaźnik do struktury typu)
- dodano wsparcie dla extern consts (patrz README.extern)
- Usprawnienia Komunikat o błędzie
- dodał ostrzeżenie osierocone "użytkowania" oświadczeń poza zadeklarowanymi modułów
- (np, "używać M1, M2 {} moduł" powinny zazwyczaj być "{wykorzystanie modułu M2 M1;} ')
- parse się komunikat o błędzie w czasie używać standardowego "Nazwa pliku: LINENO:" formatu
- generowany komunikat o błędzie na odnoszące się do nazwy klasy w metodzie podstawowej
- (np, "klasa C {def Cm () {...}} 'teraz generuje komunikat o błędzie),
- Poprawione błędy / Nowe Sprawdza semantyczne (dla starych semantyki)
- zapobiec rodzaje config przed ustawić za pomocą flagi czas realizacji wiersza polecenia
- kompilator stałej zdolności do radzenia sobie związki bez pól
- stałej redukcji minloc / maxloc do obsługi pustych zakresy / podzakresy o wartości
- Naprawiono błąd, w którym "ścieżka" argument konstruktorów plików został zignorowany
- wykonane puste związki działają poprawnie,
- naprawiono błąd przepełnienia w wyrwy się zakresy dystrybucji / zrównoleglania
- Naprawiono błąd, obejmujące wsparcie dla pustych extern typów rekordów,
- Naprawiono błąd z udziałem extern funkcje, które zwracają rekordy
- Naprawiono błąd związany z kopiując rekordy zewnętrznych
- stałe wdrażanie +/- operatorów na stowarzyszeniowej / rzadkie domeny
- Naprawiono błąd odnoszący się do nazwy modułów nazw plików zawierających wiele opartych ''S.
- Wiadomości dodany błędów dla poszerzyć / zewnętrzne / wnętrze o nieregularnych domen
- dodał błąd dla konstruktorów / destruktory z określonego typu powrotnej
- Naprawiono parę błędów dotyczących "na szybko" optymalizacji
- dodany czek przeciwko budowie klasy rodzajowe bez określenia pól
- Zmiany Opakowania
- dodany składni kodu źródłowego Highlighter dla GNU-podświetleniem
- (patrz etc / source-podświetlenia / README)
- ulepszone wsparcie dla kolorowania emacs wersji 22.x
- (patrz etc / emacs / README)
- aktualizacje vim kolorowanie składni w celu odzwierciedlenia nowego "proc" / "ITER słowa kluczowe
- (patrz etc / vim / README)
- dodaje skrypt do konwersji "używania" istniejące kody def "na" iter proc '/' '
- (patrz $ CHPL_HOME / util / konwersja-defs)
- usunięte multirealm przykłady i dokumentację na razie
- Oprogramowanie firm trzecich zmiany
- zaktualizowany do wersji 1.16.1 GASNet
- dodany kopie BSC Nanos ++ i Sandia w Qthreads
- (patrz innych firm / README)
- wykonane po instalacji krok dla GASNet który zmienia ścieżki bezwzględne do względnej
- usunięte PVM na razie ze względu na niestabilność
- Runtime Library zmiany
- locale dodaje pojedynczych warstw zadanie dla Nanos ++ (BSC) i Qthreads (Sandia)
- kilka usprawnień w warstwie Runtime tasking:
- dodano nowy interfejs o chpl_main połączenia warstwy wielozadaniowych ()
- zmienił wielozadaniowych funkcji init wziąć args maxThreadsPerLocale / callStackSize
- wydajność zdolność dodane do interfejsu zadaniem warstwy wielozadaniowych
- Kod czas pracy poprawiła się unikać synchronizacji vars przed inicjowanie wielozadaniowych
- usunąć makro-ized forma wielozadaniowy interfejs; przy użyciu standardowych nazw zamiast
- ujednolicone nazewnictwo wszystkich procedur warstwy zadanie chpl_sync _ * () i chpl_task _ * ()
- usunąć wymóg wdrożenia jednolitego zmiennej interfejs
- przeniósł zakończenie wątków z warstwą kolejka tasking do pthreads wątków
- uprościć wdrożenie zmiennych synchronizacji w warstwie pthread gwintowania
- przeniósł odpowiedzialność za wątku liczy się z fifo zadań jednocześnie wątków Pthread
- kilka usprawnień w warstwie komunikacyjnej czas trwania:
- odnowiony interfejs komunikacyjny do obsługi argumenty długość / typu
- dodany interfejs nieblokującą uzyskać operacje komunikator. Interfejs
- zjednoczony pilot uzyskać wszystkie operacje w użyciu CHPL_COMM_GET makro ()
- Testing System
- znacznie lepsze testy wydajności i możliwości graficzne
- (patrz komentarze na froncie start_test do dokumentacji)
- ulepszone wsparcie układu badawczego dla sprzątania po sobie
- dodano możliwość unikać jakichkolwiek zadnie z stdin
- Dodano opcję, aby zapewnić możliwość prediff całego systemu
- dodaje możliwość korzystania z natywną funkcję limitu czasu wyrzutni, a nie Pythona
- System poprawił, jak badania zabija test, który razy na
- Naprawiono błąd, w którym pliki .preexec pracował tylko wtedy, '.' był w ścieżce
- Wewnętrzne
- dodał --break na flagi kompilatora id dla programistów, aby zlokalizować węzeł AST tworzy
- lepszej organizacji zawartości util / katalogów
- zmienił sposób numery wersji są obliczane / SVN wyświetlane dla użytkowników opartych
- dodano wsparcie dla zadaniowego / kodu specyficznego wątku modułu
- dodał możliwość wypisują liczby AST przydzielone Pomiędzy każdym
- dodał nowy gdb alias do kompilator --gdb: "op" drukuje węzła AST w lokalizacji
- znacznie się poprawiła realizacja pragmas / flagi, aby uniknąć przypadków błędów
- usunąć kilka przypadków zbędnych porównań smyczkowych w kompilator
- usunięte wykorzystanie podatne na błędy z CHPL_TASKS i CHPL_THREADS jako symbole preprocesora
- dodany dokumentacji dla deweloperów (BestPractices nie zawiera w wydaniu)
- zmienił wewnętrznego munging z '=' i '==' do 'Przypisanie' i 'RÓWNOŚCI "odpowiednio
- dodaje flagę programistów --print-id-na-ID błędu AST do wydrukowania na temat błędów,
- poprawiła surowość prototypu C ++ sprawdzania
- dodany zewnętrznych umów specjalista do drzewa SVN (nie w wydaniu)
- dodał pojęcie typów wewnętrznych wykorzystywanych przez kompilator, ale nie przez użytkownika
refactored przemianowana na nagłówki interfejsu komunikacji
Komentarze nie znaleziono