diff --git a/docker/Dockerfile.dev b/docker/Dockerfile.dev index 6faa6ffe2..20f99c8ff 100644 --- a/docker/Dockerfile.dev +++ b/docker/Dockerfile.dev @@ -21,6 +21,7 @@ RUN apt-get update && apt-get install -y \ pkg-config \ libssl-dev \ bear \ + ccache \ && apt install -y rdma-core infiniband-diags openssh-server perftest ibverbs-providers libibumad3 libibverbs1 libnl-3-200 libnl-route-3-200 librdmacm1 \ && rm -rf /var/lib/apt/lists/* \ && apt-get clean @@ -44,6 +45,7 @@ RUN python3 -m pip install --no-cache-dir \ black \ isort \ icdiff \ + uv \ pre-commit # Install diff-so-fancy diff --git a/sgl-kernel/CMakeLists.txt b/sgl-kernel/CMakeLists.txt index 259baee50..d1292edc9 100644 --- a/sgl-kernel/CMakeLists.txt +++ b/sgl-kernel/CMakeLists.txt @@ -58,6 +58,14 @@ FetchContent_Declare( ) FetchContent_Populate(repo-flash-attention) +# ccache option +option(ENABLE_CCACHE "Whether to use ccache" ON) +find_program(CCACHE_FOUND ccache) +if(CCACHE_FOUND AND ENABLE_CCACHE AND DEFINED ENV{CCACHE_DIR}) + message(STATUS "Building with CCACHE enabled") + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "ccache") + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "ccache") +endif() include_directories( ${PROJECT_SOURCE_DIR}/include diff --git a/sgl-kernel/README.md b/sgl-kernel/README.md index 9f3a9e1c3..73a7a0756 100644 --- a/sgl-kernel/README.md +++ b/sgl-kernel/README.md @@ -144,6 +144,18 @@ Note: The `sgl-kernel` is rapidly evolving. If you experience a compilation failure, try using `make rebuild`. +#### Build with [ccache](https://github.com/ccache/ccache) +```bash +# or `yum install -y ccache`. +apt-get install -y ccache +# Building with ccache is enabled when ccache is installed and CCACHE_DIR is set. +export CCACHE_DIR=/path/to/your/ccache/dir +export CCACHE_BACKEND="" +export CCACHE_KEEP_LOCAL_STORAGE="TRUE" +unset CCACHE_READONLY +python -m uv build --wheel -Cbuild-dir=build --color=always . +``` + ### Testing & Benchmarking 1. Add pytest tests in [tests/](https://github.com/sgl-project/sglang/tree/main/sgl-kernel/tests)