Acabamos de lançar. O site e o serviço ainda estão sendo aprimorados — pedimos desculpas desde já por eventuais imprecisões ou falhas. Encontrou um erro ou algo não funciona como esperado? Escreva para nós e corrigiremos rapidamente.

PT
Entrar Estimativa gratuita
Backtests · treinamento de modelos · varreduras de parâmetros

Cálculos repetidos mais rápidos, o mesmo resultado

Envie o núcleo de cálculo de um backtest, simulador ou modelo. Crates Rust usam nosso painel de autoatendimento; C, C++ e Python começam com uma avaliação técnica individual. Você pode verificar as builds publicadas. O ganho e os critérios de aceitação são acordados para sua tarefa e plataforma.

1 h → 11 minvarredura de indicadores com os 5,7× medidos, nível 2 frente ao nível 0 gratuito
1 h → 4 minvarredura de treinamento de uma rede de impulsos com os 14,2× medidos, nível 2 frente ao nível 0 gratuito
0 bitsde diferença em relação ao código original
Como funciona avaliação inicial gratuita
  1. Envie o código quente

    Só o núcleo computacional, sem lógica de negócio. Ainda não quer compartilhar código? Comece com um pacote de leituras do nosso harness gratuito.

  2. Acordar a verificação

    Para Rust, medimos os ajustes de compilação e a otimização automática antes da compra. O trabalho individual de nível 2 tem escopo, mínimo mensurável e procedimento de aceitação acordados.

  3. Escolher o trabalho pago

    O nível 1 não é cobrado abaixo de 10% de aceleração medida. Preço, eventual adiantamento e aceitação do nível 2 são acordados em um pedido separado. A equivalência da saída é verificada na plataforma acordada.

Logo abaixo, casos medidos para baixar e executar ↓
Já medidos

Benchmarks padrão, saída idêntica à do original até o último bit

Código público e conjuntos de dados amplamente usados: o corpus de compressão Silesia, clipes de vídeo da Xiph, os conjuntos ETT de previsão de séries temporais, indicadores de análise técnica. Cada medição é uma execução sequencial real do conjunto inteiro contra o original sem modificações, e todas as saídas são comparadas byte a byte. As provas de correção dos codecs passaram por revisão independente.

Os três níveis · binários publicados

Indicadores ADX, ATR e PSAR da biblioteca Python ta

Um port para Rust da biblioteca ta 0.11 que coincide com o Python bit a bit. Uma varredura de parâmetros sobre um milhão de barras: ATR, ADX e ±DI para cinco janelas e o Parabolic SAR em quatro configurações. Cada nível foi compilado, medido na bancada e publicado; a saída de todos os níveis é idêntica byte a byte, inclusive nas entradas em que o programa termina com panic.

5,7×nível 2 frente ao nível 0 gratuito, tempo da execução completa
18×vs. Numba no cálculo
< 48 hde trabalho do engenheiro no nível 2

O mesmo algoritmo em Numba (também bit a bit): 335 ms de cálculo e 201 ms de pandas.read_csv. Nível 2: 18 ms de cálculo e 20 ms de parsing do CSV, 81 ms para o programa inteiro. Python ta: 20,5 s por 100 mil barras.

Linha de base, ciclos por execução (M1, mediana) 1.376,9 mi 503 ms
Nível 0LTO, codegen-units, target-cpu · gratuito 1.248,6 mi463 ms · referência
Nível 1otimização automática comprovada 791,4 mi342 ms · 1,58× ciclos · 1,35× tempo
Nível 2um engenheiro: um novo esquema de cálculo 143,3 mi81 ms · 8,7× ciclos · 5,7× tempo
Medido na bancada: Zen 3, ciclos vPMU, 9 rodadas intercaladas; o tempo é o programa inteiro, incluindo a leitura dos dados. Os níveis 1 e 2 são comparados com o nível 0 gratuito. Foram medidos exatamente os arquivos publicados. Neste caso a otimização automática sozinha dá 1,58× em ciclos; o maior ganho vem do nível 2.
Download · MIT · Linux x86-64 pacote completo1 MB: programas de todos os níveis, código-fonte da linha de base, gerador de dados, medições linha de base nível 0 nível 1 nível 2 como verificar SHA256SUMS
Os três níveis · binários publicados

Varredura de treinamento de uma rede neural de impulsos (um modelo BindsNET)

Um reservatório de 128 neurônios leaky integrate-and-fire com conexões recorrentes; os pesos de entrada são treinados online por STDP (PostPre do BindsNET). A varredura treina 24 redes sobre o limiar, a constante de tempo de membrana e a taxa de aprendizado em um fluxo sintético semelhante ao mercado com 5.000 passos. O programa em Rust imprime exatamente o mesmo que o script do BindsNET, bit a bit, na entrada principal e em 54 conjuntos gerados.

15,8×nível 2 frente ao nível 0 gratuito, ciclos (14,2× em tempo)
395×frente à mesma varredura no BindsNET, um núcleo
0 bitsde diferença em relação ao BindsNET

BindsNET 0.3.3 sobre PyTorch (CPU, uma thread, o mesmo núcleo): 24,0 s para a varredura, sobretudo sobrecarga de Python e de despacho a cada passo. Nível 2: 60,9 ms nesse núcleo. Aqui o ajuste da compilação sozinho é 6% mais lento que a compilação comum; a otimização automática dá 3,89× sobre o nível 0 em ciclos, e o nível 2 dá 15,8×.

Linha de base, ciclos por execução (M1, mediana) 3.525,0 mi 805 ms
Nível 0LTO, codegen-units, target-cpu · gratuito 3.742,6 mi865 ms · referência
Nível 1otimização automática comprovada 962,4 mi222 ms · 3,89× ciclos · 3,90× tempo
Nível 2um engenheiro: um novo esquema de cálculo 237,0 mi60,7 ms · 15,8× ciclos · 14,2× tempo
Medido na bancada: Zen 3, ciclos vPMU em uma VM isolada, 9 rodadas intercaladas; o CCX estava reservado para a medição (2 das suas 16 CPUs lógicas ficavam fora do nosso controle). Os níveis 1 e 2 são comparados com o nível 0 gratuito. Foram medidos exatamente os arquivos publicados.
Download · MIT · Linux x86-64 pacote completo0,8 MB: programas de todos os níveis, código-fonte da versão base, script do BindsNET, gerador de dados, medições linha de base nível 0 nível 1 nível 2 como verificar SHA256SUMS
16–20×vs. um port nativo competente
≈12.000×vs. o otimizador do próprio vn.py
Otimização de estratégias · vn.py · binários publicados

Otimização de parâmetros no vn.py: o mesmo top 10, uma ordem de grandeza mais rápido

O otimizador de força bruta do vn.py sobre 600 conjuntos de parâmetros da sua estratégia de médias móveis incluída. O nosso programa imprime os mesmos dez melhores conjuntos com os mesmos índices de Sharpe, retornos, drawdowns e número de operações, bit a bit em máquinas AVX2. É 16–20× mais rápido do que um port nativo competente que calcula cada média móvel uma só vez, e cerca de 12.000× mais rápido do que o próprio vn.py, sobretudo por sair do Python. Medido em AMD Zen 3 e Zen 4.

Download · MIT · Linux x86-64 pacote completo60 KB: o nosso programa, os dois ports nativos, o driver do vn.py, o gerador de dados, medições em duas plataformas o que foi medido
2,3–7,4×sete indicadores, C
2,0–6,0×do Python, inalterado
Biblioteca C · substituição direta · binários publicados

Indicadores técnicos do TA-Lib: uma biblioteca substituta mais rápida

Uma substituta da biblioteca C TA-Lib 0.8.1 com a mesma ABI: programas em C e o wrapper Python do TA-Lib a usam sem alterações, e cada saída coincide bit a bit com a da biblioteca oficial (4,59 milhões de chamadas verificadas). Numa varredura de parâmetros sobre um milhão de barras, sete indicadores (CCI, SAR, DX, ADX, EMA, STOCH, RSI) são 2,3–7,4× mais rápidos do que a mais rápida entre a compilação oficial e a -march=native, medido em AMD Zen 3 e Zen 4. Pelo wrapper Python sem alterações, a mesma varredura é 2,0–6,0× mais rápida.

Download · BSD-3 · Linux x86-64 pacote completo3,2 MB: a biblioteca, os programas de benchmark, a ferramenta de verificação bit a bit, medições em duas plataformas o que foi medido
5,6–5,9×vs. o Rust original
2,3–3,6×vs. PyTorch + Inductor em todos os núcleos

Previsão de séries temporais em Rust

DLinear com os pesos treinados oficiais nos quatro conjuntos ETT, em todas as janelas do conjunto de teste, contra a implementação original em Rust. Usando todos os núcleos, é 2,3–3,6× mais rápido que o PyTorch com o compilador Inductor. PatchTST: 2,2–2,5×.

1,29–1,36×

rav1e 0.8: codificação AV1

Cinco clipes da Xiph escolhidos ao acaso antes da medição: Elephants Dream, Park Joy, Johnny, Bus, Stefan. O ciclo completo de codificação nas velocidades 6 e 10. Todos os clipes ficam mais rápidos, e os bitstreams coincidem byte a byte.

Download · BSD-2 · Linux x86-64 pacote completo linha de base TAKT como verificar SHA256SUMS
3,4×vs. o Rust original
4,0×vs. libbz2 em C

Descompressão bzip2

O crate bzip2-rs, escrito em Rust puro, com todos os 12 arquivos do corpus Silesia, 212 MB. Todos os arquivos ficam mais rápidos, de 2,8× a 4,2×. Em 400 mil fluxos de teste, 360 mil deles corrompidos, tanto os dados quanto as mensagens de erro coincidem.

Bancada: AMD Threadripper PRO 5975WX (Zen 3, AVX2). Razão entre as medianas de execuções reais sobre o conjunto inteiro: sete rodadas para os codecs, cinco repetições para os modelos. Em uma única thread, o PyTorch ainda é mais rápido nesses modelos: ele reordena as somas, enquanto nós mantemos a saída idêntica bit a bit à do código original. São resultados em código específico, não uma promessa para o seu: para o seu crate, damos números depois de medir.

Preços

Pague por uma aceleração que você já viu

O preço do Nível 1 depende do tamanho do código quente e da aceleração obtida. Você vê o resultado antes de pagar, então paga apenas pelo que recebe.

Nível 0
US$ 0
  • Perfis de build: LTO, codegen-units, target-cpu, PGO
  • Uma receita de flags que você mesmo aplica
  • Código quente de até 2 mil linhas
  • Pronto em minutos

O número é medido na bancada, não é uma previsão.

Nível 2 · engenheiro
por orçamento 30% adiantado
  • Antes de tudo, uma mudança de paradigma computacional; depois, layout de dados, SIMD e todo o resto
  • De algumas horas a alguns dias
  • O restante após o aceite pelas métricas

Mínimo garantido não atingido: o valor volta para o seu saldo conforme a tabela do contrato.

Preços do Nível 1

Aceleração sobre o nível 0até 1 mil linhas1–3 mil linhas3–10 mil linhasmais de 10 mil linhas
10–25%US$ 290US$ 490US$ 890sob consulta
25–100%US$ 790US$ 1.190US$ 2.390sob consulta
100–200%US$ 1.190US$ 1.790US$ 3.590sob consulta
acima de 200%US$ 1.990US$ 2.990US$ 5.990sob consulta

A aceleração indica quantas vezes o novo build é mais rápido que o nível 0, menos um: 100% significa duas vezes mais rápido, 200%, três vezes; em ciclos, isso equivale a −20% com 25%, −50% com 100% e −67% com 200%. O nível 0 gratuito cobre código quente de até 2 mil linhas; acima disso, ele está incluído no nível 1. Plataforma adicional: +30%. As linhas são contadas com o llvm-cov: apenas o código executado pelo benchmark do passaporte (detalhes na pergunta “Como as linhas são contadas?”).

Quanto você economiza

Informe quanto dura hoje uma execução e com que frequência você a roda. Use a aceleração da sua estimativa gratuita; 5,7× é o caso ta medido.

Espera economizada por mês—
Computação economizada por mês—

Aritmética simples com os seus dados: tempo economizado = execuções × duração × (1 − 1/aceleração). A aceleração do seu código é medida antes de você pagar.

Assinatura de CI: a aceleração se mantém a cada nova versão

PlanoPor mês, com cobrança anualO que está incluído
CrateUS$ 149Código quente de até 2 mil linhas, até 4 versões por mês, uma plataforma
EquipeUS$ 399Até 10 mil linhas, até 20 versões por mês, duas plataformas
Enterprisea partir de US$ 1.500Vários crates, SLA, aceite no seu hardware

A assinatura vale por um ano; a anuidade (US$ 1.788, US$ 4.788 ou a partir de US$ 18.000) é debitada do seu saldo no início. Cada nova versão é otimizada de novo e verificada quanto à equivalência. Se uma versão não puder ser levada ao nível do contrato, você recebe a fração do mês que essas versões representam, à sua escolha: essa fração da mensalidade no seu saldo ou a assinatura estendida por essa fração do mês. Se uma de quatro versões do mês falhou: um quarto da mensalidade ou um quarto de mês.

Todos os pagamentos passam pelo saldo no painel do cliente. Faça a recarga com cartão via Stripe (cartões, Apple Pay, Google Pay e meios de pagamento locais), por transferência bancária ou com um código promocional; cada serviço é debitado no momento da contratação. O saldo pago não utilizado é devolvido mediante solicitação; o saldo de bônus, vindo de códigos promocionais e bônus, paga serviços.

Para quem é

Onde a aceleração é maior

Hoje trabalhamos em x86-64 (AMD Zen 3, AVX2). Os maiores ganhos vêm de cálculos iterativos densos com realimentação, em que cada passo depende do anterior: indicadores recorrentes, simulação de estratégias ao longo de um histórico, treinamento de redes de impulsos e de outros modelos recorrentes e varreduras sobre muitos conjuntos de parâmetros. Também ganha muito o código que espera longamente pela memória ou analisa dados bit a bit.

Backtesting e simulação de estratégias

Motores de negociação, reprodução de dados de mercado, busca e evolução de parâmetros. Um caso privado de cliente: 2,5–10,5× no modo automático, até 33,7× com um engenheiro. Um caso público: os indicadores ta, 5,7× no tempo da execução completa frente ao nível 0 gratuito.

Treinamento de modelos e busca de parâmetros

Modelos com forte realimentação, como redes de impulsos (no estilo do BindsNET) e outros modelos recorrentes, no treinamento e em varreduras sobre muitos conjuntos de parâmetros. No nível 2 portamos um modelo Python para Rust bit a bit. Caso público: uma varredura de treinamento STDP de um modelo BindsNET, 15,8× frente ao nível 0 gratuito e 395× frente ao próprio BindsNET, com saída idêntica.

Arquivos compactados e pipelines de dados

Descompactação de arquivos, dumps da Wikipédia e do OpenStreetMap, dados científicos e genômicos, armazenamento de logs. bzip2: 3,4× vs. o Rust original e 4,0× vs. C.

Vídeo e AV1

Plataformas de vídeo e transcodificação em nuvem com rav1e. 1,29–1,36× na codificação completa: em um cluster, isso equivale a cerca de um quarto dos servidores.

Inferência de ML em CPU

Modelos de séries temporais em Rust, sem Python: previsão de carga, de demanda e de energia. 5,6–5,9× vs. o Rust original, mais rápido que o PyTorch em todos os núcleos.

Classe de códigoAceleração medidaOnde foi medido
Simulações com estado, busca de candidatos ao longo de um único histórico2,5–34×motor de negociação
Redes de impulsos: treinamento STDP, varreduras de parâmetros3,9–15,8×BindsNET: LIF + STDP
Indicadores de análise técnica, varreduras de parâmetros1,6–8,7×ta: ADX, ATR, PSAR
Otimizadores de estratégias: busca em grade de parâmetros16–20×vn.py: DoubleMaStrategy
Bibliotecas de indicadores em C, chamadas a partir de C ou Python2,0–7,4×TA-Lib 0.8.1
Decodificadores com percurso de tabelas e parsing em nível de bit2,5–4×bzip2, Silesia
Inferência de modelos pequenos em todos os núcleos2,2–5,9×DLinear, PatchTST, ETT
Codificadores com busca de modos1,3–1,4×rav1e, Xiph
Primitivas criptográficas, codecs com SIMD escrito à mão, formatos com uma biblioteca C consolidadanenhumaSHA-256, ChaCha20, x264, LZ4

Para ta e a rede de impulsos: frente ao nível 0 gratuito, em ciclos. Demais linhas: frente ao programa original ou, quando o caso indica, à biblioteca C de referência.

Como funciona

Da primeira medição ao build assinado

Meça você mesmo

O harness gratuito registra ciclos, instruções, falhas de cache e de previsão de desvios e o tempo real. Você pode nos enviar o pacote de leituras sem o código-fonte, e informamos uma faixa preliminar.

Envie a parte quente

Uma medição real, e não uma estimativa, exige o código-fonte. Ajudamos você a extrair apenas o núcleo computacional, sem a lógica de negócio, e medimos a linha de base dele na bancada de referência.

Fixamos o passaporte

Plataforma, carga de trabalho, versões das ferramentas e protocolo são registrados antes do início do trabalho. O resultado é calculado a partir desses números.

Veja três números

Os níveis 0 e 1 são medidos na bancada com antecedência. O nível 2 vem como uma faixa, um prazo e um mínimo garantido.

Receba o build

Após o pagamento: uma biblioteca assinada, um arquivo de cabeçalho, um SBOM, um relatório de medições e a verificação de equivalência.

Para engenheiros

As provas

O que assinamos, como medimos e o que você pode conferir por conta própria: o passaporte de medição, o harness aberto, o isolamento do seu código e uma comparação com as opções usuais.

Garantia

Prometemos números concretos em hardware concreto

Antes do início do trabalho, fixamos o passaporte de medição: o modelo e a frequência da CPU, a carga de trabalho com hashes dos dados de entrada, as versões do rustc e das ferramentas, o protocolo de medição. O contrato trata apenas dessas métricas.

M1Ciclos em uma CPU realO contador da PMU na bancada de referência, com frequência fixa, linha de base e nova versão intercaladas. Esta é a promessa.
M2Ciclos e instruções determinísticosSimulação de uma versão fixada. O mesmo número para nós e para você, para verificações cruzadas e CI.
M3Tempo p50 / p99Para cargas sensíveis à latência, a promessa pode ser dada em p99.
M4Pico de memóriaRestrição: não pode ser pior que a linha de base além de um percentual acordado.
M5CorreçãoTestes diferenciais e fuzzing, inclusive em entradas ocultas que o otimizador nunca viu.
Redação no contrato

“Na plataforma P, sob o protocolo do passaporte de medição, a mediana de M1 cairá pelo menos X% em relação à linha de base, desde que M4 e M5 sejam atendidas.”

Por que ciclos em uma CPU real. Um simulador dá um número reproduzível, mas nem sempre o correto: ele não enxerga a queda de frequência com SIMD largo, o prefetcher nem o multithreading. Por isso o contrato usa hardware real, e a simulação serve para verificações cruzadas.

Entradas ocultas. Parte dos seus dados fica retida até o aceite, para que a aceleração não possa ser ajustada ao benchmark. Você nos envia esses dados criptografados e entrega a chave quando o binário estiver pronto.

Harness

Meça você mesmo

Uma ferramenta de linha de comando gratuita e de código aberto (MIT) registra o mesmo tipo de leituras que a nossa bancada: ciclos e instruções em modo usuário, lidos dos contadores de hardware. Envie-nos as leituras sem o código e faça você mesmo o aceite do trabalho.

run

Ciclos, instruções, falhas de cache e de previsão de desvios, tempo real e memória. Mediana, dispersão, intervalo de confiança de 95% e uma nota de qualidade.

:::

Vários builds em rodadas intercaladas, para que as variações de temperatura e de carga afetem todos igualmente.

compare

Antes e depois: o fator de aceleração com o seu intervalo, conforme a definição dos nossos Termos, e a verificação de que as saídas coincidem. O código de saída pode barrar um job de CI.

show

Revise o pacote antes de enviá-lo: sem código, sem saída, sem conteúdo de arquivos, apenas hashes e dados da máquina. --redact também substitui caminhos e 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  # pode ser enviado sem o código-fonte

Saída real resumida da nossa vitrine ta-indicators (1 milhão de barras): o build original contra o build de nível 2. O pacote de leituras contém os dados da máquina, hashes dos programas, das entradas e da saída, e as métricas com sua dispersão e uma nota de qualidade.

Código-fonte e binário pronto para Linux: github.com/rdmitry0911/takt-harness (MIT).

Segurança

Seu código roda apenas dentro de um perímetro isolado, sem rede

Isolamento

Cada build é uma microVM descartável, sem acesso à rede. Um nó de benchmark atende um cliente por vez.

Criptografia e exclusão

Uma chave separada por projeto. Após 30 dias, ou com um clique, a chave é destruída junto com os dados.

Seu código continua sendo seu

Código e dados não são compartilhados com terceiros, não são usados em trabalhos para outros clientes e são excluídos no prazo. Os métodos matemáticos gerais que descobrimos ao acelerar o seu algoritmo ampliam a nossa biblioteca sem o seu código, os seus dados ou os seus nomes. Isso consta das cláusulas do contrato e do NDA assinado antes do envio do código.

Pacote assinado

SHA-256 de cada arquivo, assinados com a nossa chave publicada; o SBOM dos componentes; o relatório de medição e a toolchain usada no build.

Limpeza verificável

O build não acessa a rede, não inicia outros programas e não grava arquivos. Um script no pacote mostra isso com os seus próprios dados: execução sem rede alguma, mais strace.

Apenas o módulo quente

Você pode enviar apenas o núcleo computacional, sem a lógica de negócio. A documentação explica como extraí-lo.

Entregamos um binário otimizado e evidências de medição e equivalência; o método permanece nosso know-how. O escrow do código-fonte é solicitado por escrito antes do pagamento, em uma box específica do pedido conforme o rider de escrow. Plataforma e procedimento de preparação e transferência devem ser qualificados e registrados no pedido. O modo shadow exige estado isolado reproduzível; testes de segurança próprios ou por contratados são permitidos.

Como funciona a entrega e o que você mesmo pode verificar

Comparação

Em que isso difere das opções habituais

Um agente de IA por conta própriaServiços de benchmarking em CIUm consultorTAKT
Acelera o códigosimnão, detecta regressõessimsim
Resultado conhecido antes do pagamentonão—nãosim, níveis 0–1
Garantia em contratonãonãogeralmente nãosim, em M1
Proteção contra ajuste ao benchmarkdepende de você—depende da pessoaentradas ocultas
Prova de correção para cada mudançanão, apenas os seus testes—raramentesim, com revisão independente
Métodos próprios de otimizaçãoo conhecimento geral do modelo—a experiência de uma pessoauma biblioteca de métodos comprovados que cresce a cada projeto
Recusa honesta quando não há o que acelerarum agente sempre muda alguma coisa—nem sempresim, antes do pagamento
Hardware de referênciao seusimo seusim
Modelo de preçotokenspor usuáriopor horapor resultado
FAQ

O que costumam perguntar

Por que vocês entregam um build e não o código-fonte?

O método de otimização é o nosso know-how, por isso entregamos uma biblioteca estática ou dinâmica com um cabeçalho C e um wrapper Rust enxuto. A integração exige uma linha no Cargo.toml. A correção é confirmada por testes de equivalência; a origem, pela assinatura e pela proveniência.

O que acontece quando eu altero meu código?

A integração Rust e o retorno ao original são combinados para a biblioteca. Alterar o núcleo exige nova versão e medição; CI precisa de pedido separado aceito. O escrow pode ser solicitado antes do pagamento por uma box qualificada conforme o rider.

Preciso enviar a minha estratégia?

Não para uma faixa preliminar: o harness gratuito gera um pacote de leituras sem código-fonte. Para o build precisamos do código que roda no laço quente, e só dele: em geral o simulador, os indicadores e o estado da carteira. Ele fica coberto pelo NDA, não é usado em trabalhos para outros clientes e é excluído no prazo. Parte dos seus dados pode ficar com você até o aceite: as entradas ocultas são enviadas criptografadas, e você entrega a chave quando o build estiver pronto.

Por que não simplesmente usar mais núcleos?

Faça as duas coisas. As execuções independentes de uma varredura se distribuem bem entre núcleos, e o nosso build deixa cada uma delas mais rápida em cada núcleo que você adicionar. Mais núcleos não ajudam uma única simulação ao longo de um histórico, em que cada passo depende do anterior, e é exatamente esse o código que aceleramos. Menos horas-núcleo para a mesma varredura também significam uma conta de nuvem menor.

E se a aceleração prometida não se concretizar?

No nível 1, você paga por um resultado já medido, então isso não pode acontecer. No nível 2, informamos um mínimo garantido; se ele não for atingido, o valor volta para o seu saldo conforme a tabela do contrato, e o saldo pago é devolvido mediante solicitação.

Como as linhas são contadas?

Compilamos o seu código com -C instrument-coverage no mesmo perfil e para a mesma plataforma do passaporte e executamos o benchmark do passaporte nas entradas abertas. Contamos as linhas de Rust executadas pelo menos uma vez segundo o llvm-cov. Não entram na contagem: linhas em branco e comentários, código que nunca foi executado, testes e a estrutura de suporte do benchmark, dependências de terceiros fora do escopo do trabalho e assembly; uma função genérica conta uma única vez. Esse número entra no passaporte antes do pagamento. Os dados não contam, apenas o seu código. Como referência: descompactar o corpus Silesia com o bzip2-rs executa 598 linhas do código dele, e codificar cinco clipes da Xiph com o rav1e executa 12.809 de 55.419 linhas.

Quais plataformas são suportadas?

As demos públicas exigem Linux x86-64 com AVX2/FMA. TA-Lib e vn.py foram medidos em AMD Zen 3 e Zen 4. Recursos de CPU, SO, ABI e hardware de aceitação são fixados por pedido; Intel, ARM e outros ambientes exigem avaliação própria.

Que tipo de código acelera pouco?

Decodificadores de formatos que já têm bibliotecas C otimizadas há muito tempo (LZ4, zstd, deflate): ainda não conseguimos superá-las. Codecs maduros com SIMD e assembly escritos à mão (x264, x265), primitivas criptográficas como SHA-256 e ChaCha20, processamento de dados aleatórios incompressíveis e chamadas muito curtas, em que todo o tempo vai para o overhead. Nesses casos, a estimativa gratuita mostra honestamente um ganho pequeno, e você não precisará pagar nada.

As minhas contagens de ciclos diferem das suas. Por quê?

Os ciclos dependem do modelo e da frequência da CPU, do turbo, da memória e dos dados de entrada. Os números do contrato são obtidos na bancada, conforme o passaporte de medição. O harness lê os mesmos contadores; por isso, com o mesmo modelo de CPU e as mesmas configurações, seus números devem ficar próximos dos nossos. O número de instruções depende muito menos da máquina: compare-o primeiro.

E quanto a ponto flutuante?

Por padrão, as saídas coincidem bit a bit, com uma exceção limitada para os payloads de NaN produzidos pela aritmética de ponto flutuante quando o Rust permite payloads diferentes. Codificações de NaN preservadas explicitamente e as demais saídas continuam exatas, salvo acordo diferente no passaporte. O passaporte também pode exigir payloads de NaN exatos. Qualquer outro desvio acordado é definido no passaporte e verificado por testes.

O build vai falhar em um servidor antigo?

Confira os requisitos de CPU de cada pacote. Binários públicos podem exigir AVX2/FMA e não funcionar em CPUs antigas. Recursos e eventual fallback da build paga são combinados no passaporte; nem todo binário tem fallback.

Isso vai reduzir a latência do meu trading ao vivo?

Só se o perfilamento mostrar que o cálculo é o gargalo. Para um caminho ao vivo medimos todo o percurso do evento de mercado até a ordem, por exemplo o seu p99 no seu servidor, e não uma única função: muitas vezes a maior parte do tempo vai para a rede e a bolsa. Nossos melhores resultados são cálculos em lote: backtests, treinamento e varreduras de parâmetros.

Trabalham com C, C++ e Python?

Sim, como encomendas individuais. Para C e C++ entregamos uma biblioteca substituta com a mesma ABI, de modo que os seus programas, e o código Python que chama a biblioteca, funcionam sem alterações (veja o caso TA-Lib). Para código Python entregamos um programa ou módulo nativo com a mesma saída (veja o caso vn.py). É trabalho de engenharia de nível 2 com preço individual; o autoatendimento do painel aceita por enquanto crates Rust.

Além do TAKT

Nossos outros projetos

Software de sistemas da mesma equipe: desbloqueio de uma raiz ZFS criptografada no boot, reconfiguração in loco do RAIDZ, um console no navegador para o Proxmox VE e hotplug Thunderbolt no QEMU. Cada card abre uma descrição breve; o código está no GitHub. Também incluímos a custódia condicional de segredos em uma máquina virtual com TPM.

escrow-box

Protótipo de custódia condicional de segredos em uma máquina virtual com TPM. O código-fonte pode ser verificado por recompilação antes da entrega.

  • TPM 2.0
  • UKI
  • Clevis

zbm-openwrt-clevis

Um ambiente de boot OpenWrt medido que desbloqueia uma raiz ZFS criptografada com o Clevis e o TPM e depois inicia o sistema pelo ZFSBootMenu.

  • OpenWrt
  • ZFS
  • TPM 2.0
  • Clevis

zfs

Um fork do OpenZFS com um protótipo de reconfiguração in loco do RAIDZ: mudar a paridade entre raidz1, raidz2 e raidz3 sem exportar o pool.

  • OpenZFS
  • RAIDZ
  • C

qsm-rd

QSM Direct: um console gráfico WebRTC para máquinas virtuais e contêineres LXC do Proxmox VE, com codificação por hardware onde o nó tem um encoder.

  • Proxmox VE
  • WebRTC
  • LXC

qemu-thunderbolt

Uma camada de hotplug PCIe no estilo Thunderbolt para o QEMU: adicionar e remover dispositivos em guests como o macOS, que não fazem hotplug deles diretamente.

  • QEMU
  • Thunderbolt
  • PCIe
  • macOS
Comece

Avaliar uma tarefa

Um crate Rust? Abra o painel agora. Para C, C++ ou Python, descreva abaixo uma execução lenta: duração, frequência e plataforma. Não é necessário enviar código nem instalar o harness nesta etapa.

Nenhum código é necessário nesta etapa. Ao enviar a solicitação, você concorda com o tratamento dos seus dados de contato.