Go 1.27 introduced the experimental simd package, which provides portable, vector-width-independent SIMD types and operations for integers and floating-point numbers. To accelerate vector computations during model training and inference, Gorse has used GoAT to convert SIMD instructions compiled from C into Go assembly. The simd package makes it possible to run the same Go code across different instruction sets, but can its performance approach the assembly generated by GoAT with LLVM?
8/28/26About 6 min
AVX512 is the latest generation of SIMD instructions released by Intel, which can process 512 bits of data in one instruction cycle, equivalent to 16 single-precision floating point numbers or 8 double-precision floating point numbers. The training and inference process of recommendation models in Gorse requires a lot of vector computation, and AVX512 can theoretically bring some acceleration effect. Unfortunately, the Go compiler does not automatically generate SIMD instructions.
3/1/23About 12 min
