CUDA on non-NVIDIA GPUs
This report summarizes scanner evidence for vosen/ZLUDA, a Rust project with 15,153 GitHub stars. SynthScan examined 365,806 lines of code across 419 source files, recording 377 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 1.1 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 354 finding(s).
Are imports declared and package/API names verified? 2 finding(s).
Are wrappers, guards, and repeated structures necessary? 22 finding(s).
Which changes need focused human review? 377 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 377 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cuda_types/src/nvml.rs | 701 | ///!< Process ID | COMMENT |
| LOW | cuda_types/src/nvml.rs | 1661 | pub struct nvmlUUIDType_t(pub ::core::ffi::c_uint); | COMMENT |
| LOW | cuda_types/src/nvml.rs | 1901 | which is equivalent to NVML_COMPUTEMODE_EXCLUSIVE_THREAD in CUDA 4.0 and beyond.*/ | COMMENT |
| LOW | cuda_types/src/nvml.rs | 2201 | /// Clock offset info. | COMMENT |
| LOW | cuda_types/src/nvml.rs | 2421 | ///!< PID of process | COMMENT |
| LOW | cuda_types/src/nvml.rs | 2461 | ///!< The version number of this struct | COMMENT |
| LOW | cuda_types/src/nvml.rs | 2921 | pub use self::nvmlDeviceVgpuCapability_enum as nvmlDeviceVgpuCapability_t; | COMMENT |
| LOW | cuda_types/src/nvml.rs | 2961 | #[repr(C)] | COMMENT |
| LOW | cuda_types/src/nvml.rs | 2981 | ///!< The version number of this struct | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3021 | ///!< Decoder Util Value | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3061 | ///!< Encoder Util Value | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3101 | ///!< Return only samples with timestamp greater than lastSeenTimeStamp | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3141 | #[repr(C)] | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3221 | /// Structure to store the vGPU scheduler capabilities | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3241 | } | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3301 | ///!< Licensed feature code | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3361 | #[repr(C)] | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3381 | ///!< OUT: Maximum number of vGPU instances per GPU instance | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3401 | #[derive(Copy, Clone)] | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3441 | ///!< OUT: Scheduler policy | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3541 | /// Led color enum. | COMMENT |
| LOW | cuda_types/src/nvml.rs | 3661 | /// nvmlSystemEventSetCreateRequest | COMMENT |
| LOW | cuda_types/src/nvml.rs | 4021 | ///!< ID of the fabric clique to which this GPU belongs | COMMENT |
| LOW | cuda_types/src/nvml.rs | 4141 | /// Struct to represent per device NVLINK information v2 | COMMENT |
| LOW | cuda_types/src/nvml.rs | 4181 | ///!< vGPU virtualization capabilities bitfield | COMMENT |
| LOW | cuda_types/src/nvml.rs | 4281 | #[repr(transparent)] | COMMENT |
| LOW | cuda_types/src/nvml.rs | 5521 | } | COMMENT |
| LOW | cuda_types/src/nvml.rs | 5641 | #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] | COMMENT |
| LOW | cuda_types/src/nvml.rs | 5681 | pub enforcedProfilesMask: nvmlMask255_t, | COMMENT |
| LOW | cuda_types/src/cuda.rs | 3301 | pub type CUaccessPolicyWindow = CUaccessPolicyWindow_v1; | COMMENT |
| LOW | cuda_types/src/cuda.rs | 3361 | pub type CUDA_KERNEL_NODE_PARAMS = CUDA_KERNEL_NODE_PARAMS_v2; | COMMENT |
| LOW | cuda_types/src/cuda.rs | 3401 | ///< Value to be set | COMMENT |
| LOW | cuda_types/src/cuda.rs | 4681 | ///< Destination pitch (ignored when dst is array) | COMMENT |
| LOW | cuda_types/src/cuda.rs | 4801 | ///< Height of 3D memory copy | COMMENT |
| LOW | cuda_types/src/cuda.rs | 5881 | /// External semaphore wait parameters | COMMENT |
| LOW | cuda_types/src/cuda.rs | 6861 | ///< The ownership relationship of the child graph node. | COMMENT |
| LOW | cuda_types/src/cuda.rs | 7201 | #[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] | COMMENT |
| LOW | cuda_types/src/cuda.rs | 7221 | pub struct CUcheckpointCheckpointArgs_st { | COMMENT |
| LOW | ptx/lib/zluda_ptx_impl.cpp | 1461 | #define SULD_COORD_3d v4s32 | COMMENT |
| LOW | ptx/lib/zluda_ptx_impl.cpp | 1481 | COMMENT | |
| LOW | ptx/src/pass/normalize_basic_blocks.rs | 1 | use super::*; | COMMENT |
| LOW | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 661 | apply_global_mode_controls(directives, temp) | COMMENT |
| LOW | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1621 | } | COMMENT |
| LOW | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1641 | // Consider a graph like this: | COMMENT |
| LOW | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1981 | // └────┘ │ | COMMENT |
| LOW | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2001 | // │ k0 │──────────────────────┐ | COMMENT |
| LOW | ptx/src/pass/llvm/emit.rs | 1 | // We use Raw LLVM-C bindings here because using inkwell is just not worth it. | COMMENT |
| LOW | cuda_macros/src/lib.rs | 21 | const CUSPARSE_RS: &'static str = include_str! {"cusparse.rs"}; | COMMENT |
| LOW | zluda/src/impl/device.rs | 321 | //[MAXIMUM TEXTURE1D LAYERED LAYERS], | COMMENT |
| LOW | zluda/src/impl/device.rs | 341 | //[MAXIMUM SURFACE2D LAYERED WIDTH], | COMMENT |
| LOW | zluda/src/impl/device.rs | 381 | //[HANDLE TYPE WIN32 HANDLE SUPPORTED], | COMMENT |
| LOW | zluda/src/impl/graphics.rs | 41 | // ██ ██ | COMMENT |
| LOW | ext/rocm_smi-sys/src/lib.rs | 1181 | currently active.*/ | COMMENT |
| LOW | ext/highs-sys/README.md | 101 | // The scalar n is numcol | COMMENT |
| LOW | ext/highs-sys/README.md | 121 | // * The position in aindex/avalue of the index/value of the first | COMMENT |
| LOW | ext/highs-sys/tests/test_highs_call.rs | 1 | use highs_sys::*; | COMMENT |
| LOW | ext/highs-sys/tests/test_highs_call.rs | 21 | // | COMMENT |
| LOW | ext/highs-sys/tests/test_highs_call.rs | 41 | // The vector x is colvalue | COMMENT |
| LOW | ext/rocblas-sys/src/lib.rs | 1 | // Generated automatically by zluda_bindgen | COMMENT |
| LOW | ext/detours/tests/test_image_api.cpp | 1 | ////////////////////////////////////////////////////////////////////////////// | COMMENT |
| 288 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1642 | // ┌─────┐ ┌─────┐ ┌─────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1644 | // └─────┘ └─────┘ └─────┘ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1647 | // │ ┌──────────────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1648 | // └───────┤ B │ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1649 | // └──────────────┘ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1652 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1654 | // └─────┘ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1980 | // │ k0 │──────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1983 | // ┌──────────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1985 | // └──────────┘ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 1988 | // │ k1 │──────┘ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2001 | // │ k0 │──────────────────────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2004 | // ┌───────────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2006 | // └───────────┘ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2009 | // │ k1 │──────────────────────┘ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2011 | // │ ┌────────────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2012 | // ├─────────>│ bb1: false │ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2013 | // │ └────────────┘ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2014 | // │ ┌────────────┐ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2015 | // └─────────>│ bb2: false │ | COMMENT |
| MEDIUM⚡ | ptx/src/pass/instruction_mode_to_global_mode/mod.rs | 2016 | // └────────────┘ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cuda_types/src/cuda.rs | 8830 | /// Enum for specifying how to leverage floating-point emulation algorithms | COMMENT |
| MEDIUM | cuda_types/src/cuda.rs | 8833 | /// Enum for specifying how to leverage floating-point emulation algorithms | COMMENT |
| MEDIUM | nvapi/src/nvapi.rs | 710 | #[doc = "!< Size(in bytes) of shared system memory that driver is allowed to commit for surfaces across all allocati | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ptx_parser/src/check_args.py | 1 | CODE | |
| LOW | ptx_parser/src/check_args.py | 1 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | zluda/src/impl/library.rs | 55 | // TODO: implement unloading | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cuda_macros/src/cuda.rs | 12236 | function cudaTriggerProgrammaticLaunchCompletion(). A trigger can also be | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ptx_parser/src/check_args.py | 49 | CODE |