typestar

Parámetros y SIMD

22 pasos en 5 series de Mojo.

Mojo parte cada función en dos mitades: lo que el compilador puede resolver y lo que le toca hacer a la máquina. Los corchetes llevan los parámetros de compilación, así que un tamaño o un tipo queda fijado antes de que el programa arranque y al código generado no le queda nada por revisar. SIMD es la otra mitad — un tipo vector que cae sobre un registro real del hardware, donde una sola instrucción suma cuatro carriles a la vez.

Juntos son la razón de ser de Mojo. Este tour va de las vinculaciones `comptime` y los structs paramétricos a las máscaras, los casts y las reducciones, baja después a los punteros crudos y los spans, y termina con el render de mandelbrot que hizo famoso al lenguaje.

Empieza este tour

Mojo en tiempo de compilación

SIMD

  • Vectores SIMDSIMD es un vector de ancho fijo que cae directo sobre un registro del hardware.
  • Aritmética SIMDLa aritmética sobre SIMD toca todos los carriles a la vez, en una sola instrucción.
  • Reducciones SIMDLas reducciones colapsan un vector entero a un solo escalar en pasos de profundidad logarítmica.
  • Máscaras SIMDComparar da una máscara por carril, y select la usa para mezclar dos vectores.
  • El cast de los carriles SIMDcast convierte cada carril a otro DType sin salir del vector.
  • Difundir un escalarDarle un solo valor al constructor de SIMD lo difunde a todos los carriles.

Números y tiempo

  • Funciones matemáticasstd.math trae las funciones escalares de siempre y las aplica carril por carril a SIMD.
  • Números aleatoriosSembrar primero hace reproducible una corrida aleatoria, que es lo que pide un benchmark.
  • Cronometrar un bucleperf_counter_ns encierra un bloque de trabajo para medir cuánto tardó de verdad.
  • Operaciones bit a bitLos desplazamientos y las máscaras son como se manejan banderas, hashes y formatos empacados.
  • Float32 frente a Float64Los floats más angostos son más rápidos y más chicos, pero cargan menos dígitos.

Memoria

Bis

Los otros tours de Mojo