O usłudze
PrzetłumaczoneJestem programistą Fortran specjalizującym się w obliczeniach naukowych i wysokowydajnych, a przez wiele lat pracowałem z kodem numerycznym, którego inni boją się dotknąć. Moja codzienna praca polega na pisaniu szybkich i poprawnych symulacji, rozwiązań i potoków przetwarzania danych w nowoczesnym Fortran (od F77 do 2008/2018) oraz na sprawnym uruchamianiu ich na maszynach wielordzeniowych i klastrach. W przeciwieństwie do tych, którzy z przyzwyczajenia sięgają po Julię, MATLAB lub C++, świadomie pozostaję w świecie Fortran: dla gęstych pętli numerycznych, algebry liniowej i oprogramowania naukowego z przeszłości, pozostaje to najuczciwszym i najbardziej przewidywalnym narzędziem. Zależy mi na stabilności numerycznej, reprodukowalności i poprawnej fizyce, a nie tylko na tym, że kod się kompiluje.
Duża część mojej pracy to ratowanie i modernizacja. Grupy badawcze i zespoły inżynieryjne często mają kod Fortran sprzed dziesięcioleci: nadal produkuje wyniki, na których wszyscy polegają, ale nikt nie pamięta, jak to działa. Starannie refaktoryzuję taki kod, dodaję testy i dokumentację, zastępuję spaghetti w formacie stałym czystymi modułami, integruję go w systemy budowania i CI bez zmiany nauki. Gdy celem jest prędkość, równolegle przetwarzam przez OpenMP i MPI, dostosowuję dostęp do pamięci i wektoryzację oraz szczerze profiluję, aby zobaczyć, gdzie naprawdę ucieka czas. W razie potrzeby łączę rdzenie Fortran z Pythonem lub C w celu narzędzi i wizualizacji.
Jeśli masz solver, który jest zbyt wolny, symulację, która potrzebuje skalowania, lub stary program naukowy, który ma przed sobą jeszcze wiele lat, mogę pomóc. Wyjaśniam kompromisy w prostym języku, utrzymuję wyniki weryfikowalne na każdym etapie i przekazuję kod, który twój zespół może utrzymywać bez mojej pomocy.
— Rozwój w nowoczesnym Fortranie (F77 do 2008/2018), moduły i czyste interfejsy
— HPC i obliczenia równoległe za pomocą OpenMP i MPI na klastrach
— Metody numeryczne: algebra liniowa, solwery ODE/PDE, całkowanie, optymalizacja
— Symulacje i modelowanie dla fizyki, inżynierii i matematyki stosowanej
— Ratowanie kodu dziedziczonego: refaktoryzacja, testowanie, budowanie, dokumentacja
— Profilowanie wydajności, wektoryzacja i dostosowywanie pamięci
— Łączenie Fortranu z Pythonem i C w celu tworzenia narzędzi i wizualizacji
Duża część mojej pracy to ratowanie i modernizacja. Grupy badawcze i zespoły inżynieryjne często mają kod Fortran sprzed dziesięcioleci: nadal produkuje wyniki, na których wszyscy polegają, ale nikt nie pamięta, jak to działa. Starannie refaktoryzuję taki kod, dodaję testy i dokumentację, zastępuję spaghetti w formacie stałym czystymi modułami, integruję go w systemy budowania i CI bez zmiany nauki. Gdy celem jest prędkość, równolegle przetwarzam przez OpenMP i MPI, dostosowuję dostęp do pamięci i wektoryzację oraz szczerze profiluję, aby zobaczyć, gdzie naprawdę ucieka czas. W razie potrzeby łączę rdzenie Fortran z Pythonem lub C w celu narzędzi i wizualizacji.
Jeśli masz solver, który jest zbyt wolny, symulację, która potrzebuje skalowania, lub stary program naukowy, który ma przed sobą jeszcze wiele lat, mogę pomóc. Wyjaśniam kompromisy w prostym języku, utrzymuję wyniki weryfikowalne na każdym etapie i przekazuję kod, który twój zespół może utrzymywać bez mojej pomocy.
— Rozwój w nowoczesnym Fortranie (F77 do 2008/2018), moduły i czyste interfejsy
— HPC i obliczenia równoległe za pomocą OpenMP i MPI na klastrach
— Metody numeryczne: algebra liniowa, solwery ODE/PDE, całkowanie, optymalizacja
— Symulacje i modelowanie dla fizyki, inżynierii i matematyki stosowanej
— Ratowanie kodu dziedziczonego: refaktoryzacja, testowanie, budowanie, dokumentacja
— Profilowanie wydajności, wektoryzacja i dostosowywanie pamięci
— Łączenie Fortranu z Pythonem i C w celu tworzenia narzędzi i wizualizacji