O usłudze
PrzetłumaczoneRozwijam wysokowydajne numeryczne rdzenie w Futhark — czysto funkcyjnym języku równoległym, który kompiluje się do CUDA i OpenCL. Jeśli masz gorącą pętlę, symulację lub dużą ilość operacji na tablicach, które osiągają limit CPU, przepiszę to, aby działało na GPU i nie będziesz musiał pisać ani jednej linii niskopoziomowego kodu urządzenia ręcznie. Futhark zapewnia silne gwarancje: brak efektów ubocznych, brak niespodzianek związanych z aliasingiem, a sam kompilator łączy operacje map, reduce, scan i segmentowane w zwarte rdzenie. Typowy proces roboczy wygląda tak. Najpierw profiluję twoją obecną linię przetwarzania i znajduję sekcje, które są naprawdę równoległe. Następnie wyrażam je w Futhark za pomocą czysto funkcyjnych kombinatorów, zachowując czytelność i deterministyczność. Porównuję wynik z twoją wersją bazową, dostosowuję rozmiary bloków i wzorce dostępu do pamięci oraz iteruję, aż liczby będą przekonujące. Na koniec wbudowuję wszystko z powrotem do twojego stosu: Futhark generuje bibliotekę C, a ja ją opakowuję, abyś mógł ją wywołać z Pythona za pomocą ctypes lub małego rozszerzenia, lub bezpośrednio połączyć z programem hosta w C lub C++. Na przestrzeni lat przyspieszyłem wycenę opcji Monte Carlo, filtry obrazów i sygnałów, fizyczne szablony, procedury algebry liniowej oraz wstępne przetwarzanie dla uczenia maszynowego. Otrzymujesz czysty kod źródłowy, skrypt budujący, zestaw testów, który sprawdza wyjście GPU w porównaniu z wersją bazową, wyniki benchmarków i krótką notatkę na temat tego, jak odbudować i rozszerzyć kod. Opisz zadanie i docelowy sprzęt — a oszacuję rzeczywiste przyspieszenie przed rozpoczęciem.