Use Python-style version specifiers to resolve to tags. E.g., given
the presence of the tags `v0.1.0`, `v0.1.1`, and `v0.2.0`,
get_kernel("my/kernel", version=">=0.1.0,<0.2.0")
would resolve to `v0.1.1`.
* Add `has_kernel` function
This function checks whether a kernel build exists for the current
environment (Torch version and compute framework).
* Test kernel repo that only contains Torch 2.4
* Support kernels that are not pre-compiled
This change add support for kernels that are not precompiled (such as
Triton-based kernels). For Torch, these kernels are assumed to be in
`build/torch-noarch`. Kernel download functions will filter on both
the expected (CUDA) build variant and the `noarch` variant. If a binary
variant exists, it is used. Otherwise the `noarch` variant is used
when present.
We don't append a Torch version, since in most cases the output for
every `ver` in `build/torch<ver>-noarch` would be the same. If some
kernel needs features that are only available in a specific Torch
version, the capabilities can be checked by the kernel itself at
runtime.
* CI: system Python does not have headers installed
* feat: add workflow and multistage torch docker builder
* feat: add configurable docker builder workflow
* fix: improve file structure
* fix: improve with pytest
* feat: run tests and benches after build
* fix: fix empty exlude in workflow
* fix: specify dockerfile location
* fix: include subset of combinations of ubuntu 18.04 and cuda 11.8
* fix: improve version syntax
* fix: add support for cuda 11.8 in dockerfile
* fix: pin python version in image from workflow
* fix: syntax tweak python version in dockerfile
* fix: adjust build args in dockerfile
* fix: avoid loading the image and ensure building works