A way to squeeze the compute and/or memory performance out of your Apple product.
- GEMM: compute-bound workload evaluating the compute performance of the AMX subsystem
- STREAM: memory-bound workload evaluating the memory performance of the M-series memory subsystem
- Apple M-series processor
I've intentionally kept the prerequisites minimal to potentially enable more folks to be able to easily run these benchmarks.
- Operating System: macOS Sequoia. Older versions may work, just not tested.
- AppleClang installed (default C++ compiler as part of Developer Tools on macOS)
- Another compiler may work; however, prelimary C++23 support is required for
std::print
- Another compiler may work; however, prelimary C++23 support is required for
- Homebrew with
libomp
package installed to the default location (/opt/homebrew
)
- Clone the repository:
git clone https://www.github.com/willkill07/apple-juicer.git
- Switch to the repository directory:
cd apple-juicer
- Build the executable files:
make
- Invoke your executable of choice (either
./gemm
or./stream
)
./stream
./gemm
Feel free to open any issues or PRs. Contributions are welcome.