Kernels
flashinfer-draft / generated.patch
drbh
feat: generate and vendor flashinfer kernels
57c3a10
Raw
History Blame Contribute Delete
2.76 kB
diff --git a/flashinfer/aot.py b/flashinfer/aot.py
index 2e2885a..981879f 100644
--- a/flashinfer/aot.py
+++ b/flashinfer/aot.py
@@ -378,15 +378,29 @@ def gen_all_modules(
jit_specs.append(gen_vllm_comm_module())
if add_misc:
- jit_specs += [
+ misc_modules = [
gen_cascade_module(),
gen_norm_module(),
- gen_nvshmem_module(),
+ ]
+
+ # Only add nvshmem module if nvidia.nvshmem is available or env paths are set
+ if (os.environ.get("NVSHMEM_INCLUDE_PATH") or
+ os.environ.get("NVSHMEM_LIBRARY_PATH")):
+ misc_modules.append(gen_nvshmem_module())
+ else:
+ try:
+ import nvidia.nvshmem
+ misc_modules.append(gen_nvshmem_module())
+ except ImportError:
+ pass # Skip nvshmem module if not available
+
+ misc_modules += [
gen_page_module(),
gen_quantization_module(),
gen_rope_module(),
gen_sampling_module(),
]
+ jit_specs += misc_modules
if has_sm90:
jit_specs.append(get_trtllm_utils_spec())
@@ -657,12 +671,12 @@ def main():
)
print("Total ops:", len(jit_specs))
- # Build
- build_jit_specs(jit_specs, verbose=True, skip_prebuilt=False)
+ # # Build
+ # build_jit_specs(jit_specs, verbose=True, skip_prebuilt=False)
- # Copy built kernels
- copy_built_kernels(jit_specs, out_dir)
- print("AOT kernels saved to:", out_dir)
+ # # Copy built kernels
+ # copy_built_kernels(jit_specs, out_dir)
+ # print("AOT kernels saved to:", out_dir)
if __name__ == "__main__":
diff --git a/flashinfer/jit/env.py b/flashinfer/jit/env.py
index 24104ee..5732a8f 100644
--- a/flashinfer/jit/env.py
+++ b/flashinfer/jit/env.py
@@ -73,10 +73,12 @@ def get_nvshmem_include_dirs():
if paths is not None:
return [pathlib.Path(p) for p in paths.split(os.pathsep) if p]
- import nvidia.nvshmem
-
- path = pathlib.Path(nvidia.nvshmem.__path__[0]) / "include"
- return [path]
+ try:
+ import nvidia.nvshmem
+ path = pathlib.Path(nvidia.nvshmem.__path__[0]) / "include"
+ return [path]
+ except ImportError:
+ return []
def get_nvshmem_lib_dirs():
@@ -84,7 +86,9 @@ def get_nvshmem_lib_dirs():
if paths is not None:
return [pathlib.Path(p) for p in paths.split(os.pathsep) if p]
- import nvidia.nvshmem
-
- path = pathlib.Path(nvidia.nvshmem.__path__[0]) / "lib"
- return [path]
+ try:
+ import nvidia.nvshmem
+ path = pathlib.Path(nvidia.nvshmem.__path__[0]) / "lib"
+ return [path]
+ except ImportError:
+ return []