W skrócie
- Zadania: Twórz i wdrażaj zaawansowane rozwiązania do monitorowania wydajności w systemach Windows.
- Firma: AMD - lider w technologii zabezpieczeń sprzętowych.
- Benefity: Atrakcyjne wynagrodzenie, możliwość pracy zdalnej oraz rozwój zawodowy.
- Pozostałe informacje: Możliwość rozwoju kariery w ekscytującym zespole inżynierów.
- Dlaczego ta praca: Pracuj nad innowacyjnymi projektami w dynamicznym środowisku technologicznym.
- Kwalifikacje: Doświadczenie w programowaniu systemów Windows i umiejętności w C/C++.
Przewidywane wynagrodzenie mieści się w przedziale 135000 - 165000 zł za rok.
AMD buduje platformę zabezpieczeń wspomaganą sprzętowo, która wykorzystuje liczniki monitorowania wydajności (PMC) na poziomie krzemu oraz uczenie maszynowe na chipie do wykrywania zaawansowanych zagrożeń końcowych, w tym ransomware, złośliwego oprogramowania bezplikowego i cryptojacking, na poziomie procesora, poniżej poziomu OS. Platforma zbiera telemetrię behawioralną CPU, klasyfikuje ją za pomocą silnika wnioskowania ML i udostępnia sygnały zagrożenia partnerom oprogramowania zabezpieczającego poprzez ustandaryzowane API. Projekt obejmuje pełną ścieżkę inżynieryjną od telemetrii krzemu i generacji danych przez szkolenie i walidację ML, wnioskowanie w czasie rzeczywistym, kwalifikację laboratoryjną i integrację z partnerami.
Programista Real-Time będzie prowadzić strumień pracy związany z uruchamianiem i integracją, w tym niskolatencyjny pipeline danych Windows, integrację z runtime wnioskowania ML oraz rozwój warstwy SDK/API używanej przez partnerów oprogramowania zabezpieczającego. Jest to rola skoncentrowana na Windows, wymagająca regularnej pracy na miejscu w Gdańsku. Dodatkowe szczegóły dotyczące wdrożenia zostaną przekazane podczas procesu rekrutacji zgodnie z obowiązującymi wymaganiami poufności.
Obowiązki:
- Projektowanie i wdrażanie wysokoprzepustowych, niskolatencyjnych pipeline'ów danych, które przesyłają telemetrię CPU z komponentu w trybie jądra Windows do runtime wnioskowania ML w przestrzeni użytkownika.
- Rozwój niezawodnych mechanizmów komunikacyjnych między komponentami w trybie jądra Windows a komponentami w przestrzeni użytkownika.
- Rozwój i utrzymanie warstwy integracji wnioskowania w czasie rzeczywistym, w tym ładowanie modeli, przygotowanie wejść, wykonanie wnioskowania, obsługę wyników i odzyskiwanie błędów.
- Integracja produkcyjnych runtime'ów wnioskowania ML, takich jak ONNX Runtime, OpenVINO lub równoważne technologie.
- Projektowanie i wdrażanie stabilnej warstwy SDK/API do dostarczania zatwierdzonych sygnałów zagrożenia partnerom oprogramowania zabezpieczającego.
- Wsparcie kwestii cyklu życia API, takich jak rejestracja konsumentów, zgodność, wersjonowanie, obsługa błędów i dokumentacja integracyjna.
- Implementacja dokładnej atrybucji telemetrii i wyników wnioskowania na poziomie procesu i wątku.
- Profilowanie i optymalizacja przepustowości pipeline'u, latencji, użycia pamięci, synchronizacji i obciążenia CPU.
- Projektowanie pod kątem współbieżności i przewidywalnej wydajności przy użyciu odpowiednich mechanizmów, takich jak pamięć dzielona, bufory pierścieniowe, kolejki bezblokujące, przetwarzanie asynchroniczne lub równoważne techniki.
- Rozwój testów jednostkowych, integracyjnych, regresyjnych, obciążeniowych i stresowych dla pipeline'u runtime i warstwy integracji z partnerami.
- Wsparcie weryfikacji sprzętu w pętli na odpowiednich platformach Windows i konfiguracjach systemowych.
- Współpraca z inżynierami laboratorium i ML w celu odtworzenia przechwyconej telemetrii, walidacji integracji modelu i badania zachowania end-to-end.
- Diagnozowanie i rozwiązywanie problemów w komponentach w trybie jądra, usługach w przestrzeni użytkownika, runtime'ach wnioskowania i interfejsach skierowanych do partnerów.
- Dokumentowanie architektury runtime, protokołów komunikacyjnych, specyfikacji API, charakterystyk wydajności, procedur integracyjnych i znanych ograniczeń.
- Regularna praca na miejscu w Gdańsku i bliska współpraca z środowiskiem walidacji sprzętu.
Wymagane umiejętności:
- Doświadczenie w rozwijaniu sterowników w trybie jądra Windows i/lub ściśle powiązanych komponentów niskopoziomowych Windows.
- 4+ lata doświadczenia zawodowego w programowaniu systemowym w języku C lub C++. Doświadczenie w Rust również jest istotne, gdy jest wspierane przez silne doświadczenie w systemach niskopoziomowych.
- Praktyczne doświadczenie z koncepcjami programowania jądra Windows i mechanizmami komunikacji między sterownikiem a przestrzenią użytkownika.
- Doświadczenie w budowaniu oprogramowania w czasie rzeczywistym, bliskim rzeczywistemu, o wysokiej przepustowości lub niskiej latencji.
- Praktyczna wiedza na temat jednego lub więcej mechanizmów komunikacji o wysokiej wydajności lub współbieżności, takich jak pamięć dzielona, pamięć mapowana I/O, bufory pierścieniowe, kolejki bezblokujące, asynchroniczne I/O lub wielowątkowe pipeline'y.
- Silne zrozumienie współbieżności, synchronizacji, zarządzania pamięcią, zachowania procesów i wątków oraz projektowania oprogramowania wrażliwego na wydajność.
- Silne umiejętności debugowania i profilowania w komponentach jądra i przestrzeni użytkownika Windows.
- Doświadczenie w rozwijaniu niezawodnego oprogramowania produkcyjnego z wyraźnym zarządzaniem błędami, diagnostyką, testowaniem i utrzymywaniem.
- Doświadczenie w rozwijaniu testów jednostkowych, integracyjnych, regresyjnych, obciążeniowych lub stresowych dla oprogramowania systemowego.
- Umiejętność analizy i redukcji latencji, obciążenia CPU, użycia pamięci, kontencji i innych wąskich gardeł wydajności w czasie działania.
- Umiejętność pracy z specyfikacjami technicznymi i dokumentowania architektury, interfejsów, protokołów i procedur integracyjnych.
- Umiejętność regularnej pracy na miejscu w Gdańsku.
- Wykształcenie wyższe w dziedzinie informatyki, inżynierii elektrycznej, inżynierii komputerowej lub pokrewnej dziedzinie.
Umiejętności dodatkowe:
- Doświadczenie w integracji runtime'ów wnioskowania ML, takich jak ONNX Runtime, OpenVINO, TensorRT, DirectML lub równoważne technologie.
- Doświadczenie w rozwijaniu SDK, bibliotek lub API używanych przez zewnętrznych partnerów lub wielu niezależnych konsumentów.
- Doświadczenie z wersjonowaniem API, zgodnością wsteczną, projektowaniem schematów, zarządzaniem subskrybentami lub wsparciem integracyjnym dla partnerów.
- Znajomość monitorowania wydajności sprzętu x86-64, telemetrii CPU, PMC, PMU, śledzenia systemu lub profilowania procesora.
- Doświadczenie z Windows Driver Frameworks, Windows Driver Kit, WinDbg, ETW/ETL tracing, KMDF, UMDF, IOCTLs lub pokrewnymi technologiami Windows.
- Doświadczenie z testowaniem sprzętu w pętli, walidacją platformy lub integracją w różnych konfiguracjach sprzętowych.
- Doświadczenie w optymalizacji oprogramowania dla GPU, NPU, DSP lub innych akceleratorów sprzętowych.
- Znajomość technologii obliczeniowych AMD GPU, przyspieszenia AI w Windows lub porównywalnych modeli programowania GPU/NPU.
- Doświadczenie z atrybucją telemetrii na poziomie procesu lub wątku.
- Tło w zakresie bezpieczeństwa końcowego, oprogramowania EDR, monitorowania systemu, oprogramowania antywirusowego lub innych systemów wrażliwych na bezpieczeństwo.
- Zrozumienie przygotowania wejść modelu, pakowania, wykonania wnioskowania, interpretacji wyników i obsługi błędów w czasie działania.
- Znajomość procesów podpisywania sterowników lub certyfikacji sterowników Windows. Doświadczenie z WHQL jest pomocne, ale nie jest wymagane w fazie Proof-of-Concept.
- Doświadczenie w pracy w różnych obszarach firmware, sterowników, usług systemowych, platform sprzętowych i interfejsów na poziomie aplikacji.
Real-Time Developer in Gdańsk – pracodawca: Luxoft
Nasza firma to doskonały pracodawca, który oferuje dynamiczne środowisko pracy w sercu innowacji technologicznych. Wspieramy rozwój zawodowy naszych pracowników poprzez mentoring oraz dostęp do najnowszych technologii, a także promujemy kulturę współpracy i otwartości. Pracując z nami, będziesz miał okazję uczestniczyć w projektach, które mają realny wpływ na branżę, a lokalizacja w centrum miasta zapewnia wygodny dostęp do licznych udogodnień.