Skip to content

exo-lang/exo-sgemm

Repository files navigation

exo-sgemm

Example application for Exo: AVX-512 SGEMM

This repository contains submodules. Please be sure to clone with them:

$ git clone --recursive https://github.com/ChezJrk/exo-sgemm.git

If you forgot to do this, or if you have recently pulled the repository, run:

$ git submodule update --init --recursive

Building

To build this project, you will need to manually install:

The remaining dependencies can be acquired via vcpkg, which is included as a submodule. These will be downloaded and installed in an isolated location during the build (more below).

These may also be built on your own, with Conan, or some other mechanism, as long as you configure the project such that CMake can find them.

Assuming you have the first set of dependencies installed, run:

dev@host:exo-sgemm$ python -m venv $HOME/.venv/exo-sgemm
dev@host:exo-sgemm$ source $HOME/.venv/exo-sgemm/bin/activate
(exo-sgemm) dev@host:exo-sgemm$ python -m pip install -U pip setuptools wheel
(exo-sgemm) dev@host:exo-sgemm$ python -m pip install -r requirements.txt
(exo-sgemm) dev@host:exo-sgemm$ cmake --preset vcpkg-gcc
...
(exo-sgemm) dev@host:exo-sgemm$ cmake --build build
...
(exo-sgemm) dev@host:exo-sgemm$ ctest --test-dir build

When using this preset, vcpkg will install its dependencies into a subdirectory of the build folder. It will also store caches of the dependencies in a platform-specific location. To completely remove everything created by the build command, you will need to remove these folders as well. If you wish to disable this caching behavior, set the environment variable VCPKG_BINARY_SOURCES=clear. For more information, see the vcpkg documentation here: https://vcpkg.io/en/docs/users/binarycaching.html

We strongly recommend setting the CC and CXX environment variables to point to Clang 13 for maximum performance. However, you may use any compatible compiler you wish. To ease building with MSVC, use the vcpkg-msvc preset instead of vcpkg-gcc. If you do not wish to use the presets, be sure to set CMAKE_{C,CXX}_FLAGS (either at the command line or in a toolchain file) such that AVX-512 code will compile.

About

Example application for Exo: AVX512 SGEMM

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published