Анатомия вычислительного ядра
Горячий внутренний цикл, выполняющий работу.
«Анатомия вычислительного ядра» — бесплатный урок Mojo Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Mojo Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Mojo Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
What Is a Kernel?
A compute kernel is the small, focused routine that does the real numerical work, like adding two arrays element by element.
The Hot Inner Loop
Most of a kernel's time lives in one tight inner loop. Speed up that loop and you speed up the whole program.
for i in range(n):
out[i] = a[i] + b[i]Inputs and Outputs
A clean kernel takes its data buffers as parameters, so the same routine can run on any arrays you pass in.
fn add(a: UnsafePointer[Float32], b: UnsafePointer[Float32], out: UnsafePointer[Float32], n: Int):
passUse fn for Strictness
Kernels are written with fn, not def. The strict, typed style lets Mojo compile tight machine code with no surprises.
fn kernel(n: Int):
passKeep the Body Small
The fastest kernels do one thing. A short, predictable inner body is easy for the compiler to optimize aggressively.
No Surprises Inside
Avoid heavy work like allocation or I/O in the hot loop. Each iteration should be cheap and uniform for peak throughput.
Count the Work
Think in terms of total operations. A kernel over n elements does roughly n units of work, so n drives the cost.
Memory Is the Limit
Many kernels are not compute-bound but memory-bound. They wait on data, so how you move bytes often matters most.
Plan to Vectorize
Design the loop so each step can later process many elements with SIMD. A regular access pattern makes vectorizing easy.
A Tiny Saxpy Kernel
A classic kernel is saxpy: out = scale times a plus b. It is small, regular, and a great baseline to optimize.
for i in range(n):
out[i] = scale * a[i] + b[i]Measure Before You Tune
Start with the simple correct version and time it. That number is your baseline for every optimization that follows.
Quick Check
You are about to optimize a kernel. Where does almost all of its time go?
Recap
A kernel is a small fn whose tight inner loop does the work; keep it uniform, mind memory, and measure a baseline first. 🔧
Часто задаваемые вопросы
Урок «Анатомия вычислительного ядра» бесплатный?
Да — полный текст урока «Анатомия вычислительного ядра» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Mojo Academy, подпишись на CoddyKit PRO. Курс Mojo Academy содержит 4 уроков всего.
Чему я научусь в уроке «Анатомия вычислительного ядра»?
Горячий внутренний цикл, выполняющий работу. Ты практикуешь Mojo Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Mojo Academy?
Предыдущий опыт не требуется. Mojo Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Анатомия вычислительного ядра»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Mojo Academy?
Да. Каждый урок Mojo Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Анатомия вычислительного ядра
- Объединение SIMD и циклов
- Снижение трафика памяти
- Тайлинг для локальности кэша