O usłudze
PrzetłumaczoneRozwijam kod o wysokiej wydajności w Chapel, języku zaprojektowanym specjalnie do produktywnego obliczania naukowego na dużą skalę. Jeśli Twój model, solver lub pipeline przetwarzania danych utknął na jednym rdzeniu, przeniosę obliczenia na wszystkie dostępne rdzenie, a następnie na cały klaster. Moim głównym zadaniem jest przekształcenie zwykłego kodu numerycznego w program, który utrzymuje tysiące wątków zajętych, nie zmuszając Cię do ręcznego przepisywania wszystkiego. Używam równoległych pętli forall, rozproszonych domen i modelu lokalnego do rozprzestrzeniania tablic po węzłach, a tam, gdzie algorytm wymaga dokładniejszej kontroli, stosuję równoległość zadań poprzez begin, cobegin i zmienne synchronizujące. Typowe zadania, które wykonuję: portowanie sekwencyjnego jądra C lub Fortran do Chapel, równoleglenie operacji na szablonach i macierzach, budowanie rozproszonych tabel haszujących i przeszukiwanie grafów oraz profilowanie, dlaczego obliczenia są wstrzymane na ruchu danych, a nie na arytmetyce. Mierzę wszystko. Zanim uznam pracę za zakończoną, pokazuję krzywe skalowania silnego i słabego, abyś zobaczył, jak kod zachowuje się w miarę wzrostu liczby rdzeni i rozmiaru problemu, oraz wyjaśniam, skąd pochodzą ograniczenia. Wyniki obejmują czysty skomentowany kod źródłowy, przepis na budowanie pod Twoim kompilatorem i uruchamiaczem, krótki raport o skalowaniu i pamięci oraz instrukcje uruchamiania na Twoim sprzęcie lub harmonogramie. Napisałem kod Chapel dla metod Monte Carlo, zadań N-ciał, kroków hydrodynamiki obliczeniowej i dużej rzadkiej algebry liniowej. Najpierw poprawność, potem prędkość: dodaję powtarzalne testy i sprawdzam wyniki w porównaniu do zaufanej bazy przed dostrajaniem. Podaj liczbę węzłów, typ połączenia i rdzeń, który jest wąskim gardłem, a ja podam szczere oszacowania przyspieszenia i wysiłku.