왜 소스가 아닌 빌드를 제공합니까?
최적화 방법은 저희 노하우이므로, C 헤더와 얇은 Rust 래퍼가 포함된 정적 또는 동적 라이브러리를 제공합니다. 연결은 Cargo.toml에 한 줄을 추가하면 됩니다. 정확성은 동등성 테스트로, 출처는 서명과 출처 증명(provenance)으로 확인합니다.
코드를 변경하면 어떻게 되나요?
Rust 라이브러리 통합과 원본으로의 전환은 납품 시 합의합니다. 최적화 핵심이 바뀌면 새 버전과 측정이 필요하며 CI는 별도로 수락한 주문으로 제공합니다. 사업 연속성을 위한 소스 에스크로는 결제 전에 약정에 따른 검증된 박스로 요청할 수 있습니다.
전략을 보내야 하나요?
예비 범위만 원하시면 필요 없습니다. 무료 하네스가 소스 코드 없이 측정 데이터 패키지를 만듭니다. 빌드에는 핫 루프에서 실행되는 코드만 필요합니다. 보통 시뮬레이터, 지표, 포트폴리오 상태입니다. 이 코드는 NDA의 적용을 받고, 다른 고객 작업에 사용하지 않으며, 정해진 일정에 따라 삭제합니다. 데이터 일부는 검수 때까지 고객이 보관할 수 있습니다. 비공개 입력은 암호화해서 보내고, 빌드가 준비되면 키를 전달해 주시면 됩니다.
그냥 코어를 늘리면 되지 않나요?
둘 다 하세요. 탐색의 독립 실행은 여러 코어에 잘 분산되고, 저희 빌드는 추가한 모든 코어에서 각 실행을 더 빠르게 만듭니다. 하지만 각 단계가 이전 단계에 의존하는, 하나의 이력을 따라가는 단일 시뮬레이션은 코어를 늘려도 빨라지지 않으며, 저희가 가속하는 것이 바로 이런 코드입니다. 같은 탐색에 드는 코어 시간이 줄면 클라우드 비용도 줄어듭니다.
약속한 가속이 나오지 않으면 어떻게 됩니까?
레벨 1은 이미 측정된 결과에 대해 지불하므로 그런 일이 생기지 않습니다. 레벨 2는 보증 최솟값을 제시하며, 이에 미달하면 계약서의 표에 따라 금액을 잔액으로 돌려드리고, 충전 잔액은 요청 시 환급합니다.
줄 수는 어떻게 계산합니까?
패스포트와 같은 프로필, 같은 플랫폼으로 -C instrument-coverage를 적용해 고객 코드를 빌드하고, 공개 입력으로 패스포트 벤치마크를 실행합니다. llvm-cov 기준으로 한 번 이상 실행된 Rust 줄을 셉니다. 빈 줄과 주석, 실행되지 않은 코드, 테스트와 벤치마크용 보조 코드, 작업 범위 밖의 서드파티 의존성, 어셈블리는 제외하며, 제네릭 함수는 한 번만 셉니다. 이 수치는 결제 전에 패스포트에 기록됩니다. 데이터는 세지 않고 코드만 셉니다. 참고로 bzip2-rs로 Silesia 코퍼스를 압축 해제할 때 실행되는 코드는 598줄이고, rav1e로 Xiph 클립 5개를 인코딩할 때는 55,419줄 중 12,809줄이 실행됩니다.
어떤 플랫폼을 지원합니까?
공개 데모는 AVX2/FMA를 갖춘 Linux x86-64를 대상으로 합니다. TA-Lib와 vn.py는 AMD Zen 3 및 Zen 4에서 측정했습니다. 유료 빌드의 CPU 기능, OS, ABI와 인수 하드웨어는 주문별로 정하며 Intel, ARM 및 다른 환경은 별도 평가가 필요합니다.
가속이 잘 되지 않는 코드는 무엇입니까?
오랜 기간 최적화된 C 라이브러리가 이미 있는 포맷의 디코더(LZ4, zstd, deflate)는 아직 넘어서지 못했습니다. 수작업 SIMD와 어셈블리로 작성된 성숙한 코덱(x264, x265), SHA-256, ChaCha20 같은 암호 프리미티브, 압축 불가능한 무작위 데이터 처리, 시간 대부분이 오버헤드에 쓰이는 매우 짧은 호출도 마찬가지입니다. 이런 경우 무료 평가에서 작은 이득을 있는 그대로 보여 드리며, 비용을 지불하실 필요가 없습니다.
직접 측정한 사이클 수가 TAKT의 수치와 다릅니다. 이유가 무엇입니까?
사이클은 CPU 모델, 주파수, 터보, 메모리, 입력 데이터에 따라 달라집니다. 계약 수치는 측정 패스포트에 따라 측정 장비에서 측정합니다. 하네스는 같은 카운터를 읽으므로, CPU 모델과 설정이 같다면 고객의 수치는 저희 수치에 가까워야 합니다. 명령어 수는 머신의 영향을 훨씬 덜 받으니 먼저 비교해 보세요.
부동소수점은 어떻게 처리합니까?
기본적으로 출력은 비트 단위로 일치하며, Rust가 서로 다른 payload를 허용하는 경우에 한해 부동소수점 연산으로 생긴 NaN의 payload만 제한적으로 예외입니다. 명시적으로 보존된 NaN 인코딩과 그 밖의 모든 출력은 측정 패스포트에서 달리 합의하지 않는 한 정확히 일치합니다. 측정 패스포트에서 NaN payload의 완전한 일치를 요구할 수도 있습니다. 그 밖에 합의한 편차는 측정 패스포트에 정하고 테스트로 확인합니다.
빌드를 구형 서버에서 실행하면 크래시가 발생하지 않습니까?
각 패키지의 CPU 요구사항을 확인하세요. 공개 바이너리는 AVX2/FMA가 필요할 수 있어 구형 CPU에서 실행되지 않습니다. 유료 빌드의 지원 기능과 폴백은 측정 명세에서 합의합니다. 모든 바이너리에 폴백이 있다고 가정하지 않습니다.
실거래 지연 시간이 줄어드나요?
프로파일링에서 계산이 병목으로 나타날 때만 그렇습니다. 실거래 경로는 함수 하나가 아니라 시장 이벤트부터 주문까지 전체 경로를 측정합니다(예: 고객 서버에서의 p99). 대개 시간의 대부분은 네트워크와 거래소에서 소요됩니다. 저희의 가장 강한 결과는 배치 계산, 즉 백테스트, 학습, 파라미터 탐색입니다.
C, C++, Python도 다루나요?
네, 개별 주문으로 진행합니다. C와 C++에는 같은 ABI의 교체 라이브러리를 납품하므로 고객의 프로그램과 이 라이브러리를 호출하는 Python 코드가 수정 없이 동작합니다(TA-Lib 사례 참고). Python 코드에는 같은 출력을 내는 네이티브 프로그램이나 모듈을 납품합니다(vn.py 사례 참고). 레벨 2 엔지니어링 작업이며 가격은 개별 산정합니다. 대시보드의 셀프서비스는 현재 Rust crate를 받습니다.