Acabamos de lanzar. El sitio y el servicio aún se están puliendo: le pedimos disculpas de antemano por posibles imprecisiones o fallos. ¿Ha visto un error o algo no funciona como esperaba? Escríbanos y lo corregiremos enseguida.

ES
Iniciar sesión Estimación gratuita
Backtests · entrenamiento de modelos · barridos de parámetros

Cálculos repetidos más rápidos, el mismo resultado

Envíe el núcleo de cálculo de un backtest, simulador o modelo. Los crates de Rust usan nuestro panel de autoservicio; C, C++ y Python empiezan con una evaluación técnica individual. Puede comprobar las versiones publicadas. La mejora y los criterios de aceptación se acuerdan para su tarea y plataforma.

1 h → 11 minbarrido de indicadores con el 5,7× medido, nivel 2 frente al nivel 0 gratuito
1 h → 4 minbarrido de entrenamiento de una red de impulsos con el 14,2× medido, nivel 2 frente al nivel 0 gratuito
0 bitsde diferencia con el código original
Cómo funciona evaluación inicial gratuita
  1. Envíe el código caliente

    Solo el núcleo de cálculo, sin lógica de negocio. ¿Aún no quiere compartir código? Empiece con un paquete de lecturas de nuestro harness gratuito.

  2. Acordar la comprobación

    Para Rust medimos los ajustes de compilación y la optimización automática antes de la compra. El trabajo individual de nivel 2 tiene alcance, mínimo medible y procedimiento de aceptación acordados.

  3. Elegir el trabajo de pago

    No cobramos el nivel 1 si la mejora medida es inferior al 10 %. El precio, cualquier anticipo y la aceptación del nivel 2 se acuerdan en un pedido separado. Comprobamos la equivalencia de la salida en la plataforma acordada.

Justo debajo, casos medidos que puede descargar y ejecutar ↓
Ya medido

Benchmarks estándar, salida idéntica al original hasta el último bit

Código público y conjuntos de datos de uso extendido: el corpus de compresión Silesia, los clips de video de Xiph, los conjuntos ETT de predicción de series temporales y los indicadores de análisis técnico. Cada medición es una ejecución secuencial real del conjunto completo frente al original sin modificar, y todas las salidas se comparan byte a byte. Las demostraciones de corrección de los códecs superaron una revisión independiente.

Los tres niveles · binarios publicados

Indicadores ADX, ATR y PSAR de la biblioteca ta de Python

Una adaptación a Rust de la biblioteca ta 0.11 que coincide con Python bit a bit. Un barrido de parámetros sobre un millón de barras: ATR, ADX y ±DI para cinco ventanas, y Parabolic SAR en cuatro configuraciones. Cada nivel está compilado, medido en el banco y publicado; la salida de todos los niveles es idéntica byte a byte, incluso con entradas en las que el programa entra en pánico.

5,7×nivel 2 frente al nivel 0 gratuito, tiempo de la ejecución completa
18×frente a Numba en el cálculo
< 48 hde trabajo de ingeniero en el nivel 2

El mismo algoritmo en Numba (también bit a bit): 335 ms de cálculo y 201 ms de pandas.read_csv. Nivel 2: 18 ms de cálculo y 20 ms de análisis del CSV, 81 ms el programa completo. Python ta: 20,5 s por cada 100 mil barras.

Línea base, ciclos por ejecución (M1, mediana) 1.376,9 M 503 ms
Nivel 0LTO, codegen-units, target-cpu · gratis 1.248,6 M463 ms · referencia
Nivel 1optimización automática con corrección demostrada 791,4 M342 ms · 1,58× ciclos · 1,35× tiempo
Nivel 2un ingeniero: un nuevo esquema de cálculo 143,3 M81 ms · 8,7× ciclos · 5,7× tiempo
Medido en el banco: Zen 3, ciclos vPMU, 9 rondas intercaladas; el tiempo es el programa completo, incluida la lectura de datos. Los niveles 1 y 2 se comparan con el nivel 0 gratuito. Se midieron exactamente los archivos publicados. En este caso la optimización automática por sí sola da 1,58× en ciclos; la mayor ganancia viene del nivel 2.
Descarga · MIT · Linux x86-64 paquete completo1 MB: programas de todos los niveles, código fuente de la línea base, generador de datos, mediciones línea base nivel 0 nivel 1 nivel 2 cómo verificarlo SHA256SUMS
Los tres niveles · binarios publicados

Barrido de entrenamiento de una red neuronal de impulsos (un modelo de BindsNET)

Un reservorio de 128 neuronas leaky integrate-and-fire con conexiones recurrentes; los pesos de entrada se entrenan en línea con STDP (PostPre de BindsNET). El barrido entrena 24 redes sobre el umbral, la constante de tiempo de membrana y la tasa de aprendizaje en un flujo sintético de tipo mercado de 5.000 pasos. El programa en Rust imprime exactamente lo mismo que el script de BindsNET, bit a bit, en la entrada principal y en 54 conjuntos generados.

15,8×nivel 2 frente al nivel 0 gratuito, ciclos (14,2× en tiempo)
395×frente al mismo barrido en BindsNET, un núcleo
0 bitsde diferencia con BindsNET

BindsNET 0.3.3 sobre PyTorch (CPU, un hilo, el mismo núcleo): 24,0 s para el barrido, sobre todo sobrecarga de Python y de despacho en cada paso. Nivel 2: 60,9 ms en ese núcleo. Aquí el ajuste de la compilación por sí solo es un 6 % más lento que la compilación normal; la optimización automática da 3,89× sobre el nivel 0 en ciclos, y el nivel 2, 15,8×.

Línea base, ciclos por ejecución (M1, mediana) 3.525,0 M 805 ms
Nivel 0LTO, codegen-units, target-cpu · gratis 3.742,6 M865 ms · referencia
Nivel 1optimización automática con corrección demostrada 962,4 M222 ms · 3,89× ciclos · 3,90× tiempo
Nivel 2un ingeniero: un nuevo esquema de cálculo 237,0 M60,7 ms · 15,8× ciclos · 14,2× tiempo
Medido en el banco: Zen 3, ciclos vPMU en una VM aislada, 9 rondas intercaladas; el CCX estaba reservado para la medición (2 de sus 16 CPU lógicas quedaban fuera de nuestro control). Los niveles 1 y 2 se comparan con el nivel 0 gratuito. Se midieron exactamente los archivos publicados.
Descarga · MIT · Linux x86-64 paquete completo0,8 MB: programas de todos los niveles, código fuente de la línea base, script de BindsNET, generador de datos, mediciones línea base nivel 0 nivel 1 nivel 2 cómo verificarlo SHA256SUMS
16–20×frente a un port nativo competente
≈12.000×frente al optimizador del propio vn.py
Optimización de estrategias · vn.py · binarios publicados

Optimización de parámetros en vn.py: el mismo top 10, un orden de magnitud más rápido

El optimizador de fuerza bruta de vn.py sobre 600 conjuntos de parámetros de su estrategia de medias móviles incluida. Nuestro programa imprime los mismos diez mejores conjuntos con los mismos ratios de Sharpe, rentabilidades, drawdowns y número de operaciones, bit a bit en máquinas AVX2. Es 16–20× más rápido que un port nativo competente que calcula cada media móvil una sola vez, y unas 12.000× más rápido que el propio vn.py, sobre todo por dejar Python. Medido en AMD Zen 3 y Zen 4.

Descarga · MIT · Linux x86-64 paquete completo60 KB: nuestro programa, los dos ports nativos, el driver de vn.py, el generador de datos, mediciones en dos plataformas qué se midió
2,3–7,4×siete indicadores, C
2,0–6,0×desde Python, sin cambios
Biblioteca C · sustitución directa · binarios publicados

Indicadores técnicos de TA-Lib: una biblioteca sustituta más rápida

Un reemplazo de la biblioteca C TA-Lib 0.8.1 con la misma ABI: los programas en C y el wrapper de Python de TA-Lib la usan sin cambios, y cada salida coincide bit a bit con la biblioteca oficial (4,59 millones de llamadas verificadas). En un barrido de parámetros sobre un millón de barras, siete indicadores (CCI, SAR, DX, ADX, EMA, STOCH, RSI) son 2,3–7,4× más rápidos que la más rápida entre la compilación oficial y la de -march=native, medido en AMD Zen 3 y Zen 4. A través del wrapper de Python sin cambios, el mismo barrido es 2,0–6,0× más rápido.

Descarga · BSD-3 · Linux x86-64 paquete completo3,2 MB: la biblioteca, los programas de benchmark, la herramienta de verificación bit a bit, mediciones en dos plataformas qué se midió
5,6–5,9×frente al Rust original
2,3–3,6×frente a PyTorch + Inductor en todos los núcleos

Predicción de series temporales en Rust

DLinear con los pesos del entrenamiento oficial en los cuatro conjuntos ETT, todas las ventanas de la partición de prueba, frente a la implementación original en Rust. Con todos los núcleos es entre 2,3 y 3,6 veces más rápido que PyTorch con el compilador Inductor. PatchTST: 2,2–2,5×.

1,29–1,36×

rav1e 0.8: codificación AV1

Cinco clips de Xiph elegidos al azar antes de medir: Elephants Dream, Park Joy, Johnny, Bus, Stefan. El ciclo completo de codificación en los modos speed 6 y 10. Todos los clips se codifican más rápido, y los flujos de bits coinciden byte a byte.

3,4×frente al Rust original
4,0×frente a libbz2 en C

Descompresión bzip2

El crate bzip2-rs, escrito íntegramente en Rust, con los 12 archivos del corpus Silesia, 212 MB. Todos los archivos se descomprimen más rápido, entre 2,8 y 4,2 veces. En 400.000 flujos de prueba, 360.000 de ellos corruptos, coinciden tanto los datos como los mensajes de error.

Banco: AMD Threadripper PRO 5975WX (Zen 3, AVX2). Cociente de medianas de ejecuciones reales sobre el conjunto completo: siete rondas para los códecs, cinco repeticiones para los modelos. En un solo hilo, PyTorch sigue siendo más rápido en estos modelos: reordena las sumas, mientras que nosotros mantenemos la salida idéntica bit a bit a la del código original. Son resultados sobre un código concreto, no una promesa para el suyo: para su crate damos cifras después de medir.

Precios

Pague por una aceleración que ya ha visto

El precio del nivel 1 depende del tamaño del código caliente y de la aceleración alcanzada. Usted ve el resultado antes de pagar, así que solo paga por lo que obtiene.

Nivel 0
$0
  • Perfiles de compilación: LTO, codegen-units, target-cpu, PGO
  • Una receta de flags que usted mismo aplica
  • Código caliente de hasta 2 mil líneas
  • Listo en minutos

La cifra se mide en el banco; no es una previsión.

Nivel 2 · ingeniero
según presupuesto 30 % por adelantado
  • Ante todo, un cambio de paradigma de cálculo; después, la disposición de los datos, SIMD y todo lo demás
  • De un par de horas a un par de días
  • El resto, tras la aceptación según las métricas

Si no se alcanza el mínimo garantizado, el importe vuelve a su saldo según la tabla del contrato.

Precios del nivel 1

Aceleración sobre el nivel 0hasta mil líneas1–3 mil líneas3–10 mil líneasmás de 10 mil líneas
10–25 %$290$490$890a consultar
25–100 %$790$1.190$2.390a consultar
100–200 %$1.190$1.790$3.590a consultar
más del 200 %$1.990$2.990$5.990a consultar

La aceleración indica cuántas veces es más rápida la nueva compilación que el nivel 0, menos uno: 100 % significa el doble de rápida; 200 %, el triple. En ciclos equivale a −20 % con un 25 %, −50 % con un 100 % y −67 % con un 200 %. El nivel 0 gratuito cubre código caliente de hasta 2 mil líneas; por encima de esa cifra, se incluye en el nivel 1. Plataforma adicional: +30 %. Las líneas se cuentan con llvm-cov: solo el código que ejecuta el benchmark del pasaporte (detalles en la pregunta «¿Cómo se cuentan las líneas?»).

Cuánto le ahorra

Indique cuánto dura hoy una ejecución y con qué frecuencia la lanza. Tome la aceleración de su estimación gratuita; 5,7× es el caso ta medido.

Tiempo de espera ahorrado al mes—
Cómputo ahorrado al mes—

Aritmética simple con sus datos: tiempo ahorrado = ejecuciones × duración × (1 − 1/aceleración). La aceleración para su código se mide antes de que pague.

Suscripción de CI: la aceleración se mantiene en cada nueva versión

PlanAl mes, con facturación anualQué incluye
Crate$149Código caliente de hasta 2 mil líneas, hasta 4 versiones al mes, una plataforma
Equipo$399Hasta 10 mil líneas, hasta 20 versiones al mes, dos plataformas
Enterprisedesde $1.500Varios crates, SLA, aceptación en su hardware

La suscripción es anual; la cuota anual ($1.788, $4.788 o desde $18.000) se carga a su saldo al inicio. Cada nueva versión se vuelve a optimizar y se verifica su equivalencia. Si una versión no pudo llevarse al nivel del contrato, usted recibe la fracción del mes que representan esas versiones, a su elección: esa fracción de la cuota mensual en su saldo o una prórroga de la suscripción por esa fracción del mes. Si de cuatro versiones en un mes falló una: un cuarto de la cuota mensual o un cuarto de mes.

Todos los pagos pasan por el saldo del panel de cliente. Puede recargarlo con tarjeta a través de Stripe (tarjetas, Apple Pay, Google Pay y métodos de pago locales), por transferencia bancaria o con un código promocional; cada servicio se carga al contratarlo. Los fondos pagados no utilizados se reembolsan si los solicita; los fondos de bonificación procedentes de códigos promocionales y bonificaciones sirven para pagar servicios.

Para quién

Dónde la aceleración es mayor

Hoy trabajamos en x86-64 (AMD Zen 3, AVX2). Lo que más gana son los cálculos iterativos densos con retroalimentación, en los que cada paso depende del anterior: indicadores recurrentes, simulación de estrategias a lo largo de un histórico, entrenamiento de redes de impulsos y otros modelos recurrentes, y barridos sobre muchos conjuntos de parámetros. También gana mucho el código que espera largo tiempo a la memoria o analiza datos bit a bit.

Backtesting y simulación de estrategias

Motores de trading, reproducción de datos de mercado, búsqueda y evolución de parámetros. Un caso privado de cliente: 2,5–10,5× de forma automática, hasta 33,7× con un ingeniero. Un caso público: los indicadores ta, 5,7× en tiempo de la ejecución completa frente al nivel 0 gratuito.

Entrenamiento de modelos y búsqueda de parámetros

Modelos con fuerte retroalimentación, como redes de impulsos (al estilo de BindsNET) y otros modelos recurrentes, en el entrenamiento y en barridos sobre muchos conjuntos de parámetros. En el nivel 2 portamos un modelo de Python a Rust bit a bit. Caso público: un barrido de entrenamiento STDP de un modelo de BindsNET, 15,8× frente al nivel 0 gratuito y 395× frente al propio BindsNET, con salida idéntica.

Archivos comprimidos y pipelines de datos

Descompresión de archivos, volcados de Wikipedia y OpenStreetMap, datos científicos y genómicos, almacenamiento de logs. bzip2: 3,4× frente al Rust original y 4,0× frente a C.

Video y AV1

Plataformas de video y transcodificación en la nube con rav1e. 1,29–1,36× en la codificación completa: en un clúster, eso equivale a alrededor de una cuarta parte de los servidores.

Inferencia de ML en CPU

Modelos de series temporales en Rust sin Python: predicción de carga, demanda y consumo energético. 5,6–5,9× frente al Rust original, más rápido que PyTorch con todos los núcleos.

Tipo de códigoAceleración medidaDónde se midió
Simulaciones con estado, búsqueda de candidatos sobre una misma historia2,5–34×motor de trading
Redes de impulsos: entrenamiento STDP, barridos de parámetros3,9–15,8×BindsNET: LIF + STDP
Indicadores de análisis técnico, barridos de parámetros1,6–8,7×ta: ADX, ATR, PSAR
Optimizadores de estrategias: búsqueda en rejilla de parámetros16–20×vn.py: DoubleMaStrategy
Bibliotecas de indicadores en C, llamadas desde C o Python2,0–7,4×TA-Lib 0.8.1
Decodificadores con recorrido de tablas y análisis a nivel de bit2,5–4×bzip2, Silesia
Inferencia de modelos pequeños con todos los núcleos2,2–5,9×DLinear, PatchTST, ETT
Codificadores con búsqueda de modos1,3–1,4×rav1e, Xiph
Primitivas criptográficas, códecs con SIMD escrito a mano, formatos con una biblioteca en C muy optimizadaningunaSHA-256, ChaCha20, x264, LZ4

Para ta y la red de impulsos: frente al nivel 0 gratuito, en ciclos. Resto de filas: frente al programa original o, donde el caso lo indica, a la biblioteca C de referencia.

Cómo funciona

De la primera medición a una compilación firmada

Mídalo usted mismo

El harness gratuito registra ciclos, instrucciones, fallos de caché y de predicción de saltos y el tiempo real. Puede enviarnos el paquete de lecturas sin código fuente, y le daremos un rango preliminar.

Envíe el código caliente

Una medición real, y no una estimación, requiere el código fuente. Le ayudamos a extraer solo el núcleo de cálculo, sin lógica de negocio, y tomamos su línea base en el banco de referencia.

Fijamos el pasaporte

La plataforma, la carga de trabajo, las versiones de las herramientas y el protocolo se registran antes de empezar. El resultado se calcula a partir de estas cifras.

Vea tres cifras

Los niveles 0 y 1 se miden en el banco por adelantado. El nivel 2 se presenta como un rango, un plazo y un mínimo garantizado.

Reciba la compilación

Tras el pago: una biblioteca firmada, un archivo de cabecera, un SBOM y un informe de las mediciones y de la verificación de equivalencia.

Para ingenieros

Las pruebas

Qué firmamos, cómo medimos y qué puede comprobar usted mismo: el pasaporte de medición, el harness abierto, el aislamiento de su código y una comparación con las opciones habituales.

Garantía

Prometemos cifras concretas en hardware concreto

Antes de empezar fijamos el pasaporte de medición: el modelo y la frecuencia de la CPU, la carga de trabajo con los hashes de los datos de entrada, las versiones de rustc y de las herramientas, y el protocolo de medición. El contrato se refiere únicamente a estas métricas.

M1Ciclos en una CPU realEl contador PMU del banco de referencia a frecuencia fija, con la línea base y la nueva versión intercaladas. Esta es la promesa.
M2Ciclos e instrucciones deterministasSimulación de una versión fijada. La misma cifra para nosotros y para usted, para verificaciones cruzadas y CI.
M3Tiempo p50 / p99En cargas sensibles a la latencia, la promesa puede darse sobre p99.
M4Memoria picoRestricción: no empeorar respecto a la línea base más allá de un porcentaje acordado.
M5CorrecciónPruebas diferenciales y fuzzing, incluso con entradas ocultas que el optimizador nunca ha visto.
Redacción en el contrato

«En la plataforma P, según el protocolo del pasaporte de medición, la mediana de M1 bajará al menos un X % respecto a la línea base, siempre que se cumplan M4 y M5».

Por qué ciclos en una CPU real. Un simulador da una cifra repetible, pero no siempre correcta: no ve la bajada de frecuencia con SIMD ancho, el prefetcher ni el multihilo. Por eso el contrato se basa en hardware real, y la simulación sirve para verificaciones cruzadas.

Entradas ocultas. Una parte de sus datos se reserva hasta la aceptación, para que la aceleración no pueda ajustarse al benchmark. Usted nos envía esos datos cifrados y nos entrega la clave cuando el binario está listo.

Harness

Mídalo usted mismo

Una herramienta de línea de comandos gratuita y de código abierto (MIT) toma el mismo tipo de lecturas que nuestro banco: ciclos e instrucciones en modo usuario, de los contadores de hardware. Envíenos las lecturas sin código y acepte el trabajo usted mismo.

run

Ciclos, instrucciones, fallos de caché y de predicción de saltos, tiempo real y memoria. Mediana, dispersión, intervalo de confianza del 95% y una calificación de calidad.

:::

Varias compilaciones en rondas intercaladas, para que la deriva de temperatura y de carga les afecte a todas por igual.

compare

Antes y después: el factor de aceleración con su intervalo, según la definición de nuestras Condiciones, y la verificación de que las salidas coinciden. El código de salida puede detener un trabajo de CI.

show

Revise el paquete antes de enviarlo: sin código, sin salida y sin contenido de archivos, solo hashes y datos de la máquina. --redact sustituye también rutas y argumentos por hashes.

$ TAKT_INPUTS=data taskset -c 44 takt-harness run --input data \
    -- bin/ta-bench-base ::: bin/ta-bench-level2
machine   AMD Ryzen Threadripper PRO 5975WX 32-Cores · x86-64-v3
checks    pinned to CPU 44 · governor performance · SMT on
protocol  9 rounds after 1 warm-up · CI: percentile bootstrap

metric          baseline       new   factor   95% CI of factor
cycles:u         1.370 G   141.3 M   9.695×   9.582 – 9.927
instructions:u   3.156 G   391.7 M   8.057×   8.057 – 8.057
wall time      484.7 ms  66.90 ms   7.245×   6.983 – 7.346
stdout    match · sha256 ada682c61e5e… · 973 B
quality   good · 9 runs, typical deviation 0.06% / 0.73% (MAD)

verdict   outputs identical · cycles:u speed-up factor 9.695×
bundle    readings.json  # se puede enviar sin código fuente

Salida real abreviada de nuestra demostración ta-indicators (1 millón de barras): la compilación original frente a la de nivel 2. El paquete de lecturas contiene los datos de la máquina, los hashes de los programas, de las entradas y de la salida, y las métricas con su dispersión y una calificación de calidad.

Código fuente y binario listo para Linux: github.com/rdmitry0911/takt-harness (MIT).

Seguridad

Su código se ejecuta solo dentro de un perímetro aislado y sin red

Aislamiento

Cada compilación se realiza en una microVM desechable sin acceso a la red. Un nodo de benchmark atiende a un solo cliente a la vez.

Cifrado y borrado

Una clave independiente por proyecto. A los 30 días, o con solo pulsar un botón, la clave se destruye junto con los datos.

Su código sigue siendo suyo

El código y los datos no se comparten con terceros, no se usan en trabajos para otros clientes y se eliminan en el plazo previsto. Los métodos matemáticos generales que descubrimos al acelerar su algoritmo amplían nuestra biblioteca sin su código, sus datos ni sus nombres. Así lo establecen las cláusulas del contrato y del NDA que se firma antes de la carga.

Paquete firmado

SHA-256 de cada archivo, firmados con nuestra clave publicada; el SBOM de los componentes; el informe de medición y la cadena de herramientas con la que se compiló.

Limpieza verificable

La compilación no usa la red, no inicia otros programas y no escribe archivos. Un script del paquete lo demuestra con sus propios datos: ejecución sin red alguna, más strace.

Solo el módulo caliente

Puede enviar solo el núcleo de cálculo, sin lógica de negocio. La documentación explica cómo extraerlo.

Entregamos un binario optimizado y pruebas de medición y equivalencia; el método sigue siendo nuestro know-how. El depósito del código fuente se solicita por escrito antes del pago mediante una caja específica del pedido según el anexo de escrow. La plataforma y el procedimiento de preparación y transferencia deben calificarse y registrarse en el pedido. El modo sombra requiere estado aislado reproducible; puede comprobar la seguridad por su cuenta o con contratistas.

Cómo funciona la entrega y qué puede comprobar usted mismo

Comparación

En qué se diferencia de las opciones habituales

Un agente de IA por su cuentaServicios de benchmarking en CIUn consultorTAKT
Acelera el códigosíno, detecta regresionessísí
Resultado conocido antes de pagarno—nosí, niveles 0–1
Garantía en el contratonononormalmente nosí, sobre M1
Protección contra el ajuste al benchmarkdepende de usted—depende de la personaentradas ocultas
Demostración de corrección de cada cambiono, solo sus pruebas—rara vezsí, con revisión independiente
Métodos de optimización propiosel conocimiento general del modelo—la experiencia de una personauna biblioteca de métodos demostrados que crece con cada proyecto
Una negativa honesta cuando no hay nada que acelerarun agente siempre cambia algo—no siempresí, antes del pago
Hardware de referenciael suyosíel suyosí
Modelo de preciostokenspor usuariopor horapor resultado
Preguntas frecuentes

Lo que se suele preguntar

¿Por qué entregan una compilación y no el código fuente?

El método de optimización es nuestro know-how, por eso entregamos una biblioteca estática o dinámica con una cabecera C y un envoltorio fino en Rust. Integrarla requiere una sola línea en Cargo.toml. La corrección se confirma con pruebas de equivalencia; el origen, con la firma y la procedencia (provenance).

¿Qué pasa si cambio mi código?

La integración Rust y la vuelta al original se acuerdan para la biblioteca. Un cambio del núcleo requiere nueva versión y medición; CI necesita un pedido separado aceptado. El escrow se puede solicitar antes del pago mediante una caja calificada según el anexo.

¿Tengo que enviarles mi estrategia?

Para un rango preliminar, no: el harness gratuito genera un paquete de lecturas sin código fuente. Para la compilación necesitamos el código que se ejecuta en el bucle caliente, y solo ese: normalmente el simulador, los indicadores y el estado de la cartera. Está cubierto por el NDA, no se usa en trabajos para otros clientes y se elimina en el plazo previsto. Parte de sus datos puede quedarse con usted hasta la aceptación: las entradas ocultas se envían cifradas y usted entrega la clave cuando la compilación está lista.

¿Por qué no añadir simplemente más núcleos?

Haga ambas cosas. Las ejecuciones independientes de un barrido se reparten bien entre núcleos, y nuestra compilación acelera cada una de ellas en cada núcleo que añada. Más núcleos no ayudan a una única simulación a lo largo de un histórico, donde cada paso depende del anterior, y ese es justo el código que aceleramos. Menos horas-núcleo para el mismo barrido también significan una factura de nube menor.

¿Y si la aceleración prometida no se materializa?

En el nivel 1 usted paga por un resultado ya medido, así que esto no puede ocurrir. En el nivel 2 fijamos un mínimo garantizado; si no se alcanza, el importe vuelve a su saldo según la tabla del contrato, y los fondos pagados del saldo se reembolsan si los solicita.

¿Cómo se cuentan las líneas?

Compilamos su código con -C instrument-coverage con el mismo perfil y para la misma plataforma que en el pasaporte, y ejecutamos el benchmark del pasaporte con las entradas abiertas. Contamos las líneas de Rust que se ejecutaron al menos una vez según llvm-cov. No se cuentan las líneas en blanco ni los comentarios, el código que nunca se ejecutó, las pruebas y el andamiaje del benchmark, las dependencias de terceros fuera del alcance del trabajo ni el ensamblador; una función genérica cuenta una sola vez. Esta cifra se incluye en el pasaporte antes del pago. Los datos no cuentan, solo su código. Como referencia: al descomprimir el corpus Silesia, bzip2-rs ejecuta 598 líneas de su código, y al codificar cinco clips de Xiph, rav1e ejecuta 12.809 líneas de 55.419.

¿Qué plataformas se admiten?

Las demos públicas requieren Linux x86-64 con AVX2/FMA. TA-Lib y vn.py se midieron en AMD Zen 3 y Zen 4. Funciones de CPU, SO, ABI y hardware de aceptación se fijan por pedido; Intel, ARM y otros entornos requieren evaluación propia.

¿Qué código apenas se acelera?

Decodificadores de formatos que ya cuentan con bibliotecas en C optimizadas durante años (LZ4, zstd, deflate): todavía no las hemos superado. Códecs maduros con SIMD y ensamblador escritos a mano (x264, x265), primitivas criptográficas como SHA-256 y ChaCha20, el procesamiento de datos aleatorios incompresibles y las llamadas muy cortas, en las que todo el tiempo se va en sobrecarga. En esos casos, la estimación gratuita muestra con honestidad una ganancia pequeña, y no tendrá que pagar.

Mis ciclos no coinciden con los suyos. ¿Por qué?

Los ciclos dependen del modelo de CPU, la frecuencia, el turbo, la memoria y los datos de entrada. Las cifras del contrato se toman en el banco según el pasaporte de medición. El harness lee los mismos contadores, así que con el mismo modelo de CPU y la misma configuración sus cifras deberían quedar cerca de las nuestras. El número de instrucciones depende mucho menos de la máquina: compárelo primero.

¿Y la coma flotante?

Por defecto, las salidas coinciden bit a bit, con una excepción limitada para los payloads de NaN producidos por la aritmética de coma flotante cuando Rust permite payloads distintos. Las codificaciones de NaN conservadas explícitamente y las demás salidas siguen siendo exactas, salvo que usted acuerde otra cosa en el pasaporte. El pasaporte también puede exigir payloads de NaN exactos. Cualquier otra desviación acordada se define en el pasaporte y se comprueba con pruebas.

¿Fallará la compilación en un servidor antiguo?

Revise los requisitos de CPU de cada paquete. Los binarios públicos pueden requerir AVX2/FMA y no ejecutarse en CPU antiguas. Las funciones y cualquier alternativa de un binario pagado se acuerdan en su ficha; no se supone una alternativa en todos los binarios.

¿Reducirá la latencia de mi trading en vivo?

Solo si el perfilado muestra que el cálculo es el cuello de botella. Para una ruta en vivo medimos todo el recorrido desde el evento de mercado hasta la orden, por ejemplo su p99 en su servidor, no una sola función: a menudo la mayor parte del tiempo se va en la red y la bolsa. Nuestros mejores resultados son los cálculos por lotes: backtests, entrenamiento y barridos de parámetros.

¿Trabajan con C, C++ y Python?

Sí, como encargos individuales. Para C y C++ entregamos una biblioteca sustituta con la misma ABI, de modo que sus programas, y el código Python que llama a la biblioteca, funcionan sin cambios (vea el caso de TA-Lib). Para código Python entregamos un programa o módulo nativo con la misma salida (vea el caso de vn.py). Es trabajo de ingeniería de nivel 2 con precio individual; el autoservicio del panel acepta por ahora crates de Rust.

Más allá de TAKT

Nuestros otros proyectos

Software de sistemas del mismo equipo: desbloqueo de una raíz ZFS cifrada en el arranque, reconfiguración de RAIDZ in situ, una consola de navegador para Proxmox VE y conexión en caliente Thunderbolt en QEMU. Cada tarjeta abre una breve descripción; el código está en GitHub. También incluimos la custodia condicional de secretos en una máquina virtual con TPM.

escrow-box

Prototipo de depósito condicional de secretos en una máquina virtual con TPM. El código fuente se verifica recompilándolo antes de su entrega.

  • TPM 2.0
  • UKI
  • Clevis

zbm-openwrt-clevis

Un entorno de arranque OpenWrt medido que desbloquea una raíz ZFS cifrada con Clevis y el TPM y luego arranca el sistema a través de ZFSBootMenu.

  • OpenWrt
  • ZFS
  • TPM 2.0
  • Clevis

zfs

Un fork de OpenZFS con un prototipo de reconfiguración de RAIDZ in situ: cambiar la paridad entre raidz1, raidz2 y raidz3 sin exportar el pool.

  • OpenZFS
  • RAIDZ
  • C

qsm-rd

QSM Direct: una consola gráfica WebRTC para máquinas virtuales y contenedores LXC de Proxmox VE, con codificación por hardware donde el nodo dispone de codificador.

  • Proxmox VE
  • WebRTC
  • LXC

qemu-thunderbolt

Una capa de conexión en caliente PCIe al estilo Thunderbolt para QEMU: añadir y quitar dispositivos en invitados como macOS que no admiten su conexión en caliente directa.

  • QEMU
  • Thunderbolt
  • PCIe
  • macOS
Empezar

Evaluar una tarea

¿Un crate de Rust? Abra el panel ahora. Para C, C++ o Python describa abajo una ejecución lenta: duración, frecuencia y plataforma. No necesita enviar código ni instalar el harness en este paso.

En este paso no se necesita código. Al enviar la solicitud, acepta el tratamiento de sus datos de contacto.