cpufp  by pigirons

CPU tool for benchmarking peak floating-point performance

created 9 years ago
557 stars

Top 58.4% on sourcepulse

GitHubView on GitHub
Project Summary

This tool benchmarks peak floating-point and AI instruction set performance across various CPU architectures. It's designed for hardware engineers and performance analysts needing to evaluate CPU capabilities for AI and scientific computing workloads. The project offers automatic detection and compilation for local SIMD/DSA ISAs, simplifying cross-platform benchmarking.

How It Works

The tool leverages C++ and auto-vectorization to generate highly optimized code for specific SIMD (Single Instruction, Multiple Data) and DSA (Data Streaming Accelerator) instruction sets. It dynamically compiles kernels tailored to the detected CPU features, ensuring maximum utilization of available hardware capabilities like AVX, AVX512, AMX, NEON, and RISC-V Vector extensions for various data types (FP32, FP64, FP16, BF16, INT8).

Quick Start & Requirements

  • Build x64: ./build_x64.sh
  • Build arm64: ./build_arm64.sh
  • Build riscv64: ./build_riscv64.sh
  • Build loongarch64: ./build_loongarch64.sh
  • Build e2k: ./build_e2k.sh
  • Benchmark: ./cpufp --thread_pool=[xxx]
  • Requires a C++ compiler.

Highlighted Details

  • Supports a wide range of architectures: x86-64, arm64, riscv64, loongarch64, and e2k.
  • Extensive ISA coverage including SSE, AVX, AVX512, AMX, NEON, RISC-V V, LASX, LSX, and e2k specific instructions.
  • Benchmarks various data types: fp32, fp64, fp16, bf16, and int8.
  • Includes latency and throughput metrics for specific architectures like Elbrus.

Maintenance & Community

The project is maintained by pigirons. No community links or roadmap are provided in the README.

Licensing & Compatibility

The README does not specify a license.

Limitations & Caveats

Windows support is explicitly stated as "no" for arm64, and not mentioned for other architectures. The "Todo list" indicates planned support for armv9 (SVE, SVE2 & SME). The e2k ISA section mentions "Unknown" for AVX_VNNI_INT8 feature.

Health Check
Last commit

3 weeks ago

Responsiveness

1+ week

Pull Requests (30d)
0
Issues (30d)
1
Star History
19 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.