Anatomia jądra obliczeniowego
Główna pętla wewnętrzna wykonująca pracę.
Anatomia jądra obliczeniowego to bezpłatna lekcja Mojo Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Mojo Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Mojo Academy zawiera 4 lekcji w sumie.
Czym jest kernel?
Obliczeniowy kernel to mała, wyspecjalizowana procedura wykonująca właściwe obliczenia numeryczne, na przykład dodająca do siebie dwa arraye element po elemencie.
Gorąca pętla wewnętrzna
Większość czasu kernela przypada na jedną zwartą pętlę wewnętrzną. Przyspiesz tę pętlę, a przyspieszysz cały program.
for i in range(n):
out[i] = a[i] + b[i]Dane wejściowe i wyjściowe
Czysty kernel przyjmuje bufory danych jako parametry, dzięki czemu ta sama procedura może działać na dowolnych przekazanych arrayach.
fn add(a: UnsafePointer[Float32], b: UnsafePointer[Float32], out: UnsafePointer[Float32], n: Int):
passUżywaj fn dla ścisłości
Kerneli zapisuje się za pomocą fn, a nie def. Ścisły, typowany styl pozwala Mojo kompilować zwarty kod maszynowy bez niespodzianek.
fn kernel(n: Int):
passUtrzymuj małe ciało
Najszybsze kernele robią jedną rzecz. Krótkie, przewidywalne ciało wewnętrzne łatwo jest kompilatorowi agresywnie optymalizować.
Bez niespodzianek wewnątrz
Unikaj ciężkich operacji, takich jak alokacja lub operacje wejścia-wyjścia, w gorącej pętli. Każda iteracja powinna być tania i jednorodna, aby zapewnić maksymalną przepustowość.
Policz wykonywaną pracę
Myśl w kategoriach całkowitej liczby operacji. Kernel przetwarzający n elementów wykonuje w przybliżeniu n jednostek pracy, więc n decyduje o koszcie.
Pamięć jest ograniczeniem
Wiele kerneli nie jest ograniczonych mocą obliczeniową, lecz pamięcią. Czekają na dane, dlatego sposób przenoszenia bajtów często ma największe znaczenie.
Planuj wektoryzację
Zaprojektuj pętlę tak, aby później można było przetwarzać wiele elementów naraz za pomocą SIMD. Regularny wzorzec dostępu ułatwia wektoryzację.
Mały kernel Saxpy
Klasycznym kernelem jest saxpy: out = scale times a plus b. Jest mały, regularny i stanowi świetny punkt odniesienia do optymalizacji.
for i in range(n):
out[i] = scale * a[i] + b[i]Mierz przed optymalizacją
Zacznij od prostej, poprawnej wersji i zmierz jej czas. Ten wynik jest Twoim punktem odniesienia dla każdej kolejnej optymalizacji.
Szybkie sprawdzenie
Za chwilę zoptymalizujesz kernel. Na co przypada prawie cały jego czas działania?
Podsumowanie
Kernel to mała funkcja fn, której zwarta pętla wewnętrzna wykonuje pracę; utrzymuj ją jednorodną, pamiętaj o pamięci i najpierw zmierz punkt odniesienia. 🔧
Ucz się Mojo dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Anatomia jądra obliczeniowego” jest bezpłatna?
Tak — pełny tekst „Anatomia jądra obliczeniowego” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Mojo Academy, przejdź na CoddyKit PRO. Kurs Mojo Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Anatomia jądra obliczeniowego”?
Główna pętla wewnętrzna wykonująca pracę. Ćwiczysz Mojo Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Mojo Academy?
Nie wymagamy żadnego doświadczenia. Mojo Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Anatomia jądra obliczeniowego”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Mojo Academy?
Tak. Każda lekcja Mojo Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Anatomia jądra obliczeniowego
- Łączenie SIMD z pętlami
- Ograniczanie ruchu danych w pamięci
- Blokowanie dla lokalności pamięci podręcznej