Skip to content

Add Windows support#354

Open
mfranzrebsal wants to merge 17 commits into
NVIDIA:mainfrom
mfranzrebsal:windows-support
Open

Add Windows support#354
mfranzrebsal wants to merge 17 commits into
NVIDIA:mainfrom
mfranzrebsal:windows-support

Conversation

@mfranzrebsal
Copy link
Copy Markdown

@mfranzrebsal mfranzrebsal commented May 7, 2026

I made the necessary changes for NVBench to build and the tests to pass. I also tested that it works when using NVBench inside of my own project, and made sure that the scripts ci/build_nvbench.sh and ci/test_nvbench.sh work. How should support testing be enabled for the CI? I have a local commit with some changes, but did not want to add them here and possibly trip the CI run.

Here is a summary of the changes, disclaimer that they were made by Claude and verified by me, but I am in no way a CMake expert:

#: 1
File: CMakeLists.txt
Change: CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON
Failure without it: Link error LNK1181: cannot open input file 'lib\nvbench.lib'. MSVC only generates a .lib import library when the DLL exports symbols. NVBench has no
__declspec(dllexport) annotations, so without this CMake flag, no import library is produced and all downstream targets fail to link.

#: 2
File: cmake/NVBenchCUPTI.cmake
Change: IMPORTED_IMPLIB instead of IMPORTED_LOCATION on Win32
Failure without it: CMake generate error IMPORTED_IMPLIB not set for imported target "nvbench::cupti". On Windows, find_library locates .lib import libraries. A SHARED IMPORTED
target
on Windows requires the .lib path via IMPORTED_IMPLIB (the import library), not IMPORTED_LOCATION (which expects the .dll).

#: 3
File: cmake/NVBenchConfigTarget.cmake
Change: FMT_UNICODE=0, -Xcompiler=/utf-8, --diag_suppress=27
Failure without it: Build errors in every .cu file. (a) fmtlib 11 static-asserts that /utf-8 mode is active — MSVC's host compiler satisfies this with -Xcompiler=/utf-8, but cudafe
evaluates the check independently and always fails, requiring FMT_UNICODE=0 for CUDA. (b) fmtlib's lookup tables use out-of-range char32_t sentinel values that cudafe rejects,
requiring --diag_suppress=27.

#: 4
File: cmake/NVBenchConfigTarget.cmake
Change: AND NOT WIN32 on INSTALL_RPATH
Failure without it: No failure. INSTALL_RPATH is a Unix/ELF concept silently ignored on Windows. The guard is purely a hygiene fix.

#: 5
File: nvbench/config.cuh.in
Change: MSVC_LANG instead of _cplusplus
Failure without it: Build error #error: "NVBench requires a C++17 compiler." in every .cxx file. MSVC reports __cplusplus as 199711L (C++98) regardless of actual standard, unless
/Zc:__cplusplus is passed. _MSVC_LANG always reflects the real standard level.

#: 6
File: testing/axes_metadata.cu
Change: #include
Failure without it: Build error namespace "std" has no member "back_inserter". MSVC's STL doesn't transitively include from like GCC's libstdc++ does.

#: 7
File: testing/cmake/CMakeLists.txt
Change: Forward CMAKE_CUDA_HOST_COMPILER, CMAKE_LINKER, CMAKE_RC_COMPILER, CMAKE_MT
Failure without it: Test failure CUDA_ARCHITECTURES is set to "native", but no NVIDIA GPU was detected. The sub-project cmake configure can't compile/link the GPU query program

#: 8
File: testing/cmake/CMakeLists.txt
Change: ENVIRONMENT "PATH=..." with nvbench bin + CUPTI lib dirs
Failure without it: No failure when run via the build script (which pre-sets PATH). Needed for robustness when ctest is invoked directly — the Windows equivalent of the
LD_LIBRARY_PATH setup the sub-project already has for Unix.

#: 9
File: testing/cmake/test_export/CMakeLists.txt
Change: Add Windows PATH setup for sub-project tests (parallel to existing Unix LD_LIBRARY_PATH)
Reason: The original code only set LD_LIBRARY_PATH on Unix and did nothing on Windows. The sub-project's test_bench.exe and nvbench-ctl.exe need
nvbench.dll and CUPTI DLLs at runtime. On Unix the build tree embeds RUNPATH into the binary so the executable finds libnvbench.so without environment
help; only CUPTI and the install tree need LD_LIBRARY_PATH. Windows has no RUNPATH equivalent — DLL lookup always goes through PATH — so the
sub-project
must set PATH for both tree types. Previously this worked only because the outer test in testing/cmake/CMakeLists.txt set an ENVIRONMENT property on
the ctest --build-and-test process, which the inner CTest happened to inherit. This fix makes the sub-project self-sufficient: it reads the nvbench DLL and CUPTI library locations from imported target properties and sets PATH itself. The shared code resolves the imported configuration once, then
branches only for the CUPTI property name (IMPORTED_IMPLIB on Windows vs IMPORTED_LOCATION on Unix, since find_library locates .lib import libraries on Windows) and the environment variable format.

@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot Bot commented May 7, 2026

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@mfranzrebsal mfranzrebsal marked this pull request as draft May 7, 2026 07:52
@mfranzrebsal mfranzrebsal marked this pull request as ready for review May 7, 2026 08:27
Comment thread testing/axes_metadata.cu
@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

Regarding #1, we should review the list of symbols we intend to be public, export them (i.e., add __declspec(dllexport) annotation for MSVC) and hide the rest (i.e. add __attribute__((visibility("hidden"))) for GCC/Clang).

Incidentally, doing this review would unblock #323

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test dd1ffc9

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 13, 2026

✅ Actions performed

Full review triggered.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 13, 2026

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Automatic CUDA profiler API installer for Windows builds.
  • Chores

    • Improved Windows build support: automatic symbol exporting for shared libs, MSVC+CUDA compatibility tweaks, and more accurate C++ dialect detection.
    • Ensure MSVC link propagation to retain main symbol.
    • Re-enabled Windows CI job and added CUDA toolchain wiring.
  • Bug Fixes

    • More robust cross-platform test runtime/library-path and CUPTI handling; reduced MSVC+CUDA build warnings.

suggestion:

Walkthrough

Adds Windows build/test support: enables Windows symbol export and MSVC link option, adds a CUDA profiler API installer and CI invocation, re-enables Windows PR job, makes CUPTI import platform-aware, adjusts CUDA/MSVC compile options and C++ detection, and configures cross-platform test runtime library paths.

Changes

Windows build and test support

Layer / File(s) Summary
Windows DLL symbol export configuration
CMakeLists.txt, nvbench/CMakeLists.txt
CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS set ON for WIN32 AND BUILD_SHARED_LIBS; add MSVC-only target_link_options(nvbench.main INTERFACE "/INCLUDE:main").
CUDA profiler API installation script
ci/windows/install_cuda_profiler_api.ps1
Adds installer script with -cudaVersion param, version detection from CUDA_PATH, download with retry, Authenticode validation, silent install, timeout/cleanup, and post-install verification.
Windows CI workflow wiring
.github/workflows/build-windows.yml, .github/workflows/pr.yml
Expose NVBENCH_WINDOWS_CUDA to build step, invoke install_cuda_profiler_api.ps1 in the devcontainer before the build, and remove if: false to enable nvbench-windows in PR workflow.
Platform-specific CUPTI importing
cmake/NVBenchCUPTI.cmake
nvbench_add_cupti_dep documents the found library as a CUDA Toolkit import library and sets IMPORTED_IMPLIB on Windows, IMPORTED_LOCATION on non-Windows.
CUDA/MSVC compile/link configuration and C++ detection
cmake/NVBenchConfigTarget.cmake, nvbench/config.cuh.in
Add MSVC-only FMT_UNICODE=0; forward -Xcompiler=/utf-8 and suppress specific cudafe diagnostics for MSVC+nvcc; restrict CUPTI INSTALL_RPATH to non-Windows; prefer _MSVC_LANG for NVBENCH_CPLUSPLUS on MSVC.
Test runtime environment configuration
testing/cmake/CMakeLists.txt, testing/cmake/test_export/CMakeLists.txt, testing/axes_metadata.cu
On Windows, forward toolchain vars to test invocations and prepend non-empty NVBench/CUPTI lib dirs to PATH; on Unix set LD_LIBRARY_PATH per-test from non-empty components; add join_nonempty_paths and prepend_runtime_path helpers and add #include <iterator> in a test.
  • Possibly related PRs

  • Suggested labels: only: cmake

  • Suggested reviewers

    • alliepiper
    • gevtushenko

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: ffe8731a-1bea-4fe3-bd00-ae6f639bb863

📥 Commits

Reviewing files that changed from the base of the PR and between d13a0fd and dd1ffc9.

📒 Files selected for processing (8)
  • CMakeLists.txt
  • ci/build_common.sh
  • cmake/NVBenchCUPTI.cmake
  • cmake/NVBenchConfigTarget.cmake
  • nvbench/config.cuh.in
  • testing/axes_metadata.cu
  • testing/cmake/CMakeLists.txt
  • testing/cmake/test_export/CMakeLists.txt

Comment thread ci/build_common.sh Outdated
Comment thread ci/build_common.sh Outdated
Comment thread testing/cmake/test_export/CMakeLists.txt
@mfranzrebsal
Copy link
Copy Markdown
Author

I will revert the changes to build_common.sh, since #362 already includes a separate script.

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

@mfranzrebsal The #362 to enable MSVC build of NVBench has been merged, but it is presently unconditionally skipped due to known build failure this PR fixes.

Please merge main into this branch, and revert c632eb2 to reenable the PR. The expectation is that CI build using MSVC would complete successfully now.

@mfranzrebsal
Copy link
Copy Markdown
Author

The commit you mention is nowhere to be found, either in main or my rebased branch. I think we are good?

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test 787e435

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

@mfranzrebsal Right now the CI has Windows build job disabled in pr.yml#L82-83.

Please push a change to remove these two lines to enable the job.

Remove gate that disables Windows NVBench build job in pr.yaml
@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test 78b674b

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

Windows build job fails with:

sccache C:\msbuild\17\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\cl.exe  /nologo /TP -DFMT_USE_BITINT=0 -DNVBENCH_NO_IMPLICIT_SYSTEM_HEADER -Dnvbench_EXPORTS -IC:\nvbench -IC:\nvbench\build\nvbench-ci -IC:\nvbench\build\nvbench-ci\nvbench\detail -external:I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.0\include" -external:I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.0\include\cccl" -external:I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.0\extras\CUPTI\include" -external:IC:\nvbench\build\nvbench-ci\_deps\fmt-src\include -external:IC:\nvbench\build\nvbench-ci\_deps\nlohmann_json-src\include -external:W0 /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++17 -MD -Wall /utf-8 /showIncludes /Fonvbench\CMakeFiles\nvbench.dir\benchmark_base.cxx.obj /Fdnvbench\CMakeFiles\nvbench.dir\ /FS -c C:\nvbench\nvbench\benchmark_base.cxx
C:\nvbench\nvbench/detail/measure_cold.cuh(45): fatal error C1083: Cannot open include file: 'cuda_profiler_api.h': No such file or directory

On Linux, the compilation command for benchmark_base.cxx contains -isystem /usr/local/cuda/targets/x86_64-linux/include which is the folder where cuda_profiler_api.h resides. I assume the corresponding CLI option for CL.exe is -external:I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.0\include".

This folder should contain "cuda_profiler_api.h" though.

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

Per my agent, the devcontainer does not install CUDA Profiler API component.

  From the Docker registry metadata, rapidsai/devcontainers:25.12-cuda13.0-cl14.44 installs CUDA through:

  /tools/install-tools.ps1 -cudaVersion 13.0

  That calls install-cuda.ps1, whose component list includes cudart_13.0, cupti_13.0, nvcc_13.0, nvrtc_13.0, nvtx_13.0, crt_13.0, nvvm_13.0, nvptxcompiler_13.0,
  etc., but does not include:

  cuda_profiler_api_13.0

  NVIDIA’s CUDA 13.0 Windows install guide lists cuda_profiler_api_13.0 as a separate subpackage: “CUDA Profiler API” NVIDIA docs
  (https://docs.nvidia.com/cuda/archive/13.0.1/cuda-installation-guide-microsoft-windows/index.html#install-the-cuda-software).

  So the CI error is consistent with the image missing that component. The include path is fine; the header is likely absent from the installed toolkit. The image
  install script should add:

  "cuda_profiler_api_$mmVersionTag"

I will try installing CUDA Profiler API in the container next

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test 460e14f

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test c6cd097

Attempt to fix "LINK : fatal error LNK1561: entry point must be defined"
when building benchmarks which need main function provided by static
library libnvbench_main after NVIDIA#350
@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test f8c0554

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

✅ Actions performed

Full review triggered.

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test cc209bb

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 12d7c1fa-7c59-4150-ae45-b8d31f0a6996

📥 Commits

Reviewing files that changed from the base of the PR and between 6df6dc8 and cc209bb.

📒 Files selected for processing (11)
  • .github/workflows/build-windows.yml
  • .github/workflows/pr.yml
  • CMakeLists.txt
  • ci/windows/install_cuda_profiler_api.ps1
  • cmake/NVBenchCUPTI.cmake
  • cmake/NVBenchConfigTarget.cmake
  • nvbench/CMakeLists.txt
  • nvbench/config.cuh.in
  • testing/axes_metadata.cu
  • testing/cmake/CMakeLists.txt
  • testing/cmake/test_export/CMakeLists.txt
💤 Files with no reviewable changes (1)
  • .github/workflows/pr.yml

Comment thread ci/windows/install_cuda_profiler_api.ps1 Outdated
Comment thread testing/cmake/test_export/CMakeLists.txt Outdated
@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test 6c44ec6

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

✅ Actions performed

Full review triggered.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
ci/windows/install_cuda_profiler_api.ps1 (1)

90-90: ⚡ Quick win

suggestion: add bounded retry/backoff around Invoke-WebRequest to reduce transient network flake in CI and avoid expensive reruns.

-Invoke-WebRequest -Uri $cudaVersionUrl -OutFile $installer -UseBasicParsing
+$maxAttempts = 3
+for ($attempt = 1; $attempt -le $maxAttempts; $attempt++) {
+    try {
+        Invoke-WebRequest -Uri $cudaVersionUrl -OutFile $installer -UseBasicParsing
+        break
+    } catch {
+        if ($attempt -eq $maxAttempts) { throw }
+        Start-Sleep -Seconds (5 * $attempt)
+    }
+}

As per coding guidelines, "For CI and build scripts, focus on matrix correctness, targeted build/test behavior, cache/artifact handling, environment setup, GPU availability assumptions, clear failures, and avoiding unnecessary expensive jobs."


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 59672d05-2943-4844-a992-53b60f173412

📥 Commits

Reviewing files that changed from the base of the PR and between 6df6dc8 and 6c44ec6.

📒 Files selected for processing (11)
  • .github/workflows/build-windows.yml
  • .github/workflows/pr.yml
  • CMakeLists.txt
  • ci/windows/install_cuda_profiler_api.ps1
  • cmake/NVBenchCUPTI.cmake
  • cmake/NVBenchConfigTarget.cmake
  • nvbench/CMakeLists.txt
  • nvbench/config.cuh.in
  • testing/axes_metadata.cu
  • testing/cmake/CMakeLists.txt
  • testing/cmake/test_export/CMakeLists.txt
💤 Files with no reviewable changes (1)
  • .github/workflows/pr.yml

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test 7f2a6dc

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

✅ Actions performed

Full review triggered.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/build-windows.yml (1)

120-135: suggestion: Installing the CUDA profiler component during every build adds a network dependency and extra job time to the Windows lane. If you control the RAPIDS image, it would be more stable to preinstall cuda_profiler_api_<version> there and keep this step only as a fallback path. As per coding guidelines, "For CI and build scripts, focus on matrix correctness, targeted build/test behavior, cache/artifact handling, environment setup, GPU availability assumptions, clear failures, and avoiding unnecessary expensive jobs."


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 19822ea1-862f-4ee9-bd03-71d5e885d3ac

📥 Commits

Reviewing files that changed from the base of the PR and between 6df6dc8 and 7f2a6dc.

📒 Files selected for processing (11)
  • .github/workflows/build-windows.yml
  • .github/workflows/pr.yml
  • CMakeLists.txt
  • ci/windows/install_cuda_profiler_api.ps1
  • cmake/NVBenchCUPTI.cmake
  • cmake/NVBenchConfigTarget.cmake
  • nvbench/CMakeLists.txt
  • nvbench/config.cuh.in
  • testing/axes_metadata.cu
  • testing/cmake/CMakeLists.txt
  • testing/cmake/test_export/CMakeLists.txt
💤 Files with no reviewable changes (1)
  • .github/workflows/pr.yml

Comment thread ci/windows/install_cuda_profiler_api.ps1 Outdated
@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

✅ Actions performed

Full review triggered.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
ci/windows/install_cuda_profiler_api.ps1 (2)

64-76: ⚡ Quick win

important: Fail fast on permanent download errors.

A 404/403 from this URL is deterministic here. Retrying it three times just burns Windows CI minutes; rethrow client errors immediately and keep retries for transient failures such as network timeouts or 5xx responses.

As per coding guidelines, "For CI and build scripts, focus on matrix correctness, targeted build/test behavior, cache/artifact handling, environment setup, GPU availability assumptions, clear failures, and avoiding unnecessary expensive jobs."


129-136: ⚡ Quick win

important: Add a timeout around the installer process.

Start-Process -Wait can hang indefinitely on a broken or interactive installer, which would pin the whole Windows job. Use Wait-Process -Timeout or Process.WaitForExit(timeout) and fail explicitly on timeout.

As per coding guidelines, "For CI and build scripts, focus on matrix correctness, targeted build/test behavior, cache/artifact handling, environment setup, GPU availability assumptions, clear failures, and avoiding unnecessary expensive jobs."


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: dbd3ed7a-ce12-4db4-a683-6c07f6ac0c35

📥 Commits

Reviewing files that changed from the base of the PR and between 6df6dc8 and 287d041.

📒 Files selected for processing (11)
  • .github/workflows/build-windows.yml
  • .github/workflows/pr.yml
  • CMakeLists.txt
  • ci/windows/install_cuda_profiler_api.ps1
  • cmake/NVBenchCUPTI.cmake
  • cmake/NVBenchConfigTarget.cmake
  • nvbench/CMakeLists.txt
  • nvbench/config.cuh.in
  • testing/axes_metadata.cu
  • testing/cmake/CMakeLists.txt
  • testing/cmake/test_export/CMakeLists.txt
💤 Files with no reviewable changes (1)
  • .github/workflows/pr.yml

Comment thread testing/cmake/test_export/CMakeLists.txt
4xx responses now fail immediately, and the installer is bounded
to 15 minutes before being killed and reported as a timeout.
@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

✅ Actions performed

Full review triggered.

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test adabe4a

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 9d57dc12-bdfa-4833-b076-d34bc7f13830

📥 Commits

Reviewing files that changed from the base of the PR and between 6df6dc8 and adabe4a.

📒 Files selected for processing (11)
  • .github/workflows/build-windows.yml
  • .github/workflows/pr.yml
  • CMakeLists.txt
  • ci/windows/install_cuda_profiler_api.ps1
  • cmake/NVBenchCUPTI.cmake
  • cmake/NVBenchConfigTarget.cmake
  • nvbench/CMakeLists.txt
  • nvbench/config.cuh.in
  • testing/axes_metadata.cu
  • testing/cmake/CMakeLists.txt
  • testing/cmake/test_export/CMakeLists.txt
💤 Files with no reviewable changes (1)
  • .github/workflows/pr.yml

Comment thread testing/cmake/CMakeLists.txt
Comment thread testing/cmake/test_export/CMakeLists.txt Outdated
@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

@coderabbitai full review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

✅ Actions performed

Full review triggered.

@oleksandr-pavlyk
Copy link
Copy Markdown
Collaborator

/ok to test c6347b5

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 07518bbb-5d90-41ad-81ed-2e80401e387c

📥 Commits

Reviewing files that changed from the base of the PR and between 6df6dc8 and c6347b5.

📒 Files selected for processing (11)
  • .github/workflows/build-windows.yml
  • .github/workflows/pr.yml
  • CMakeLists.txt
  • ci/windows/install_cuda_profiler_api.ps1
  • cmake/NVBenchCUPTI.cmake
  • cmake/NVBenchConfigTarget.cmake
  • nvbench/CMakeLists.txt
  • nvbench/config.cuh.in
  • testing/axes_metadata.cu
  • testing/cmake/CMakeLists.txt
  • testing/cmake/test_export/CMakeLists.txt
💤 Files with no reviewable changes (1)
  • .github/workflows/pr.yml

Comment on lines +88 to +105
for ($attempt = 1; $attempt -le $MaxAttempts; $attempt++) {
try {
Remove-Item $OutFile -ErrorAction SilentlyContinue
Invoke-WebRequest -Uri $Uri -OutFile $OutFile -UseBasicParsing
return
} catch {
$statusCode = Get-HttpStatusCodeFromError -ErrorRecord $_
if ($statusCode -ge 400 -and $statusCode -lt 500) {
throw "Download failed with non-retryable HTTP status $statusCode from '$Uri'. $_"
}

if ($attempt -eq $MaxAttempts) {
throw
}

$delaySeconds = 5 * $attempt
Write-Warning "Download failed on attempt $attempt of $MaxAttempts. Retrying in $delaySeconds seconds. $_"
Start-Sleep -Seconds $delaySeconds
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

cat -n ci/windows/install_cuda_profiler_api.ps1 | sed -n '73,110p'

Repository: NVIDIA/nvbench

Length of output: 1514


important: Add -TimeoutSec 300 to the Invoke-WebRequest call on line 91.

Without a timeout, a stalled download hangs indefinitely until the job-level timeout, bypassing the retry-backoff logic and wasting expensive Windows runner resources. Set -TimeoutSec so the exponential backoff can actually recover from hung connections.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants