872.marian_s
SPEC CPU®2026 Benchmark Description

Benchmark Name

872.marian_s

Benchmark Program General Category

Neural machine translation for written language

Benchmark Authors

Marian has had many contributors from both academia and industry, notably including Adam Mickiewicz University in Poznań, the University of Edinburgh, and Microsoft. Authors include Marcin Junczys-Dowmunt, Roman Grundkiewicz, Frank Seide, Hieu Hoang, Ulrich Germann, Tomasz Dwojak, Alham Fikri Aji, and Young Jin Kim.

Benchmark Description

Marian is an efficient, free Neural Machine Translation framework written in pure C++ with minimal dependencies. It has been developed by the Microsoft Translator team, the University of Edinburgh, the Adam Mickiewicz University in Poznań and many other commercial and academic contributors. It is currently the engine behind the Microsoft Translator Neural Machine Translation services and has been deployed by many companies, organizations, and research projects. Most notably it is being used in Microsoft Teams' live caption translation feature.

The SPEC CPU benchmark uses the Marian NMT framework to translate source sentences in English to German. The model to translate is based on a distilled transformer architecture with optimizations to achieve real-time latencies across platforms.

Marian was named in honor of the Polish crypotologist Marian Rejewski who reconstructed the German military Enigma cipher machine in 1932.

Input Description

The benchmark is started with a series of arguments that can be found in the control file of each input size. Here is a sample command line:

./marian-decoder -m model.alphas.npz -v vocab.spm vocab.spm --beam-size 1 \
         --mini-batch 32 --maxi-batch 100 --maxi-batch-sort src -w 512 --skip-cost \
         --gemm-type intgemm8 --intgemm-options precomputed-alpha standard-only \
         --quiet --quiet-translation -i newstestwmt21_500ln.en \
         -o newstestwmt21_500ln.out --log newstestwmt21_500ln.log --cpu-threads 1

Following is a brief desciption of some arguments:

Option Description
-m Specifies the file which contains the quantization parameters for the weights in the model to be represented in int8. The model is taken from the efficicency task in Sixth Conference on Machine Translation (WMT21)
-v In neural machine translation, a vocabulary file contains all the unique tokens (like words or subwords) that the model knows and can generate or understand. This file, vocab.spm is generated from sentencepiece and is provided to the framework for inference.
--beam-size Beam search is a greedy algorithm to explore a tree. This specifies a beam size used during search with validating translator.
--mini-batch The number of sentences translated at once.
--maxi-batch The number of sentences loaded before creating a mini-batch, this parameter is a multiple of minibatch size. A maxi batch size of 100 indicates loading 100*mini-batch sentences to then sort and create optimal minibatches with similar sentence lengths.
-i Specifies the input text file in English to be translated.
-o Specifies the output file, containing the translation into the target language.
--cpu-threads This flag is set by the runcpu program. For refrate it is always one. For refspeed, it set to match the user requested thread count, but capped to 24 due to lack of thread level parallelism past that point.

The benchmark has two inputs that come from commonly used translation corpora.

Additionally, the train input is Ivan Sutherland's lecture Technology and Courage. It was included because the SPEC engineers who adapted Marian admire the paper and find inspiration from it. For example, Dr. Sutherland discusses the courage required to start something new. In that light, we honor the courage of our SPEC predecessors who, despite being competitors, came together to pursue a vision of benchmarks that are fair, comparable, and representative. The majority of the users will never see what is being run under the hood, but for those curious and enterprising computer scientists who seek deeper understanding of the workload by reading its inputs, they will discover something wonderful and uplifting. Our hope is to continue to inspire the next generation of inquisitive CPU engineers.

Output Description

The output consists of translations of text files being given to Marian decoder. The vocabulary model supports English to German translation.

Programming Language

C++, C

Threading Model

The SPECrate version is single-threaded; although std::thread is used to create multiple threads, only one has context at any given time through the benchmark run.

The SPECspeed version uses std::thread for parallelism.

Known Portability Issues

GNU/Linux systems implement C++ std::thread using POSIX Threads. Although some systems automatically include the needed support, this is not universal. Surprises have been seen when changing OS versions, or libraries, or compilers; or when FDO is added; or when combining C and C++ modules. Typically, it is safest to add -pthread to all compile and link lines for all SPEC CPU benchmarks that use std::thread. Please see the $SPEC/config directory for Example config files that demonstrate how to conveniently do so.

Users of GCC may encounter slow builds when compiling 872.marian_s with -fprofile-generate due to atomic profile updates for a relatively small inner loop. As noted in the GCC documentation of -fprofile-update=method "The GCC driver automatically selects prefer-atomic when -pthread is present".

Sources and Licensing

The benchmark is based on Marian NMT source code v1.12, available from the upstream github repository at github.com/marian-nmt/marian-dev. Marian is distributed under the MIT license.

The Text similarity program is based on github.com/ra397/Text-Similarity, which is distributed under the BSD-2 license.

The input data comes from the Tilde MODEL Corpus distributed under the CC-BY, and the EuroPat parallel corpora of patents distributed under the CC0 license.

The train input data comes from Ivan Sutherland's lecture entitled "Technology and Courage". Dr.Sutherland has granted SPEC with Permission to Use this text.

SentencePiece is an unsupervised text tokenizer for Neural Network-based text generation. It is based on github.com/google/sentencepiece and is available under the Apache-2.0 license.

Marian comes bundeled with following source directories with their own licenses.

Software components Description License
Pathie-CPP Small C++ library for crossplatform Unicode path management. BSD-2 license
CLI11 C++ based command line parser. CLI license
cnpy Library to read and write .npy / .npz files. MIT license
yaml-cpp C++ based YAML parser. MIT license
spdlog C++ based logging library. MIT license
mio C++ based library for memory-mapped IO. MIT license
phf C++ based library that implements CHD perfect hash algorithm. MIT license
half_float C++ implementation of a 16 bit floating-point type mimicking most of the IEEE 754 behaviour. BSD license

References

Copyright © 2026 Standard Performance Evaluation Corporation (SPEC®)