igneum/proto-cuda/nvrtc/THIRD-PARTY.md
igneum-labs f535abb59d One-click CUDA worker: driver API + NVRTC loaded at run time, pack read at run time, Mac emulation check
proto-cuda/nvrtc/worker.cpp serves igneum-miner's worker protocol with nothing installed but the NVIDIA driver:
nvcuda.dll and the redistributable nvrtc64_120_0.dll are opened with LoadLibrary (cuda_api.h), the pack's kernel.cu
and kernel_bound.cu are handed to NVRTC byte for byte up to the host launch wrappers with program.h and memhard.h as
named headers, every pack is self-tested against its vectors.h (cache head, last line, FNV-1a 64, dataset head, last
word, 64 samples, 96 vector lanes) before it serves a job, prepare runs on a thread for the hourly swap, and a job on
seeds without a pair makes the worker find the miner's pack by seeds.txt and build it. packfile.h (C99) reads a pack
directory. fetch-redist.sh verifies and stages the NVIDIA 12.8.93 redistributables and the Khronos headers
(THIRD-PARTY.md records URLs, hashes and the EULA clause); build-windows.sh cross-compiles with mingw (static,
KERNEL32 + Universal CRT only). emu/: the two libraries as host functions, the pack kernels on host threads, the NVRTC
source compared with the pack files; test.sh PASS on the Mac (two real packs, swap, self-heal, 17 sampled hashes equal
igneum-pow hash-bound). Not run here: the real NVRTC compile and driver load (RTX 5090 PC).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 09:55:05 +00:00

4.8 KiB

Third-party pieces of the one-click Windows workers

Recorded 4 October 2026. Nothing listed here is committed to this repository; fetch-redist.sh downloads every file into ~/.cache/igneum/, checks its SHA-256 against the values below and stages it under proto-cuda/nvrtc/redist/ (gitignored). build-windows.sh compiles against the headers; windows-app/make-package.sh ships the two NVRTC DLLs and the two licence texts in the zip. Nothing else third-party is in the package.

Shipped in the package

File in the zip Source Version Size (bytes) SHA-256
nvrtc64_120_0.dll NVIDIA CUDA redistributable, package cuda_nvrtc (NVIDIA Runtime Compilation Library) 12.8.93 (CUDA 12.8 Update 1, released 2025-03-06) 86,728,192 02d2d7ef4690bf1a (first 16 hex; the archive's hash is below)
nvrtc-builtins64_128.dll same package 12.8.93 6,356,480 a7afa2a40cbd3f92 (first 16 hex)
LICENSE-NVIDIA-CUDA-EULA.txt the LICENSE file inside the same archive (NVIDIA Software License Agreement and CUDA Supplement) 63,021 e2c71babfd18a8e6 (first 16 hex)
LICENSE-Khronos-OpenCL-Headers.txt Khronos OpenCL-Headers LICENSE (Apache License 2.0); the headers themselves are build-only v2026.05.29 11,358 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30

Archive the two DLLs come from (verified by fetch-redist.sh):

Archive URL SHA-256 (from NVIDIA's redistrib_12.8.1.json)
cuda_nvrtc-windows-x86_64-12.8.93-archive.zip (305,588,898 bytes) https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-12.8.93-archive.zip a63302a077f0248a743a1a7caa7dbd80d0fac56c6cfa9c41fa05fac9b7e5eda5

The archive also holds nvrtc64_120_0.alt.dll and static libraries; they are not shipped and not used.

Why the two DLLs may be redistributed

The NVIDIA Software License Agreement (the LICENSE file above, section 2.2 "Distribution": "The portions of the SDK that are distributable under the Agreement are listed in Attachment A") lists in Attachment A, under "NVIDIA Runtime Compilation Library and Header":

All: nvrtc.h Windows: nvrtc.dll, nvrtc-builtins.dll

and the preamble of Attachment A covers the versioned file names ("including certain variations of these files that have version number or architecture specific information embedded in the file name"), which is what nvrtc64_120_0.dll and nvrtc-builtins64_128.dll are. Section 2.1 limits the licence to applications "for use in systems with NVIDIA GPUs", which is the case: the worker runs on NVIDIA GPUs only. The DLLs are shipped unmodified next to the exe. The licence text is in the package so the user can read it.

Build-only (compiled against, never shipped)

File Source Version SHA-256
cuda.h (the driver API header) NVIDIA CUDA redistributable, package cuda_cudart, archive cuda_cudart-windows-x86_64-12.8.90-archive.zip (3,037,735 bytes) at https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-12.8.90-archive.zip, archive SHA-256 4a39058fd8519444a81cfc7ae055d136f48d1a31ffa41ae255b35b2edd61e13b 12.8.90 167e383a3791226c (first 16 hex)
nvrtc.h the cuda_nvrtc archive above (Attachment A lists it as redistributable too) 12.8.93 85d79ff186392c1b (first 16 hex)
CL/cl.h https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/v2026.05.29/CL/cl.h v2026.05.29 16d09614cd7eef73b4094089cc4ce2af777181d3ffe9613473fb6d552234a4d1
CL/cl_platform.h same tag b125cece6fe41f2e6690d88b24652c151cb6654da13b42180d69d5bd9ed526d7
CL/cl_version.h same tag 1e571dd68566330dd066cf778e07909a3cabeb2b969c5578c60f14baba7df1af
CL/cl_ext.h same tag (fetched for completeness; host.c includes cl.h only) fe8916fd98b739cbc47ecab387bee2d258fa939c1bd2e10415c6f8f8b7055968

cuda.h is not in Attachment A, so it is used only to compile the worker on the Mac and is not in the package. The worker never links a CUDA import library: nvcuda.dll (installed by every NVIDIA driver) and nvrtc64_120_0.dll are opened with LoadLibrary and their entry points fetched with GetProcAddress (cuda_api.h, worker.cpp). The OpenCL worker does the same with OpenCL.dll, the Khronos ICD loader that the AMD, NVIDIA and Intel drivers install (proto-opencl/cl_dynamic.h).

What the user's PC needs

An NVIDIA driver (for the CUDA worker; the driver API is in nvcuda.dll, and the driver must be new enough for CUDA 12.x) or an AMD, NVIDIA or Intel driver with OpenCL (for the OpenCL worker). Windows 10 or 11 (the exes import only KERNEL32.dll and the Universal CRT api-ms-win-crt-* libraries, which both carry). No CUDA Toolkit, no Visual Studio, no SDK.