Skip to content

Guard against slow GPUCompiler versions#473

Open
ChrisRackauckas-Claude wants to merge 1 commit into
masterfrom
fix-gpucompiler-regression-434
Open

Guard against slow GPUCompiler versions#473
ChrisRackauckas-Claude wants to merge 1 commit into
masterfrom
fix-gpucompiler-regression-434

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Fixes #434.

Summary

  • Add GPUCompiler as a weak dependency with a compat floor of 1.13.2.
  • Add a QA guard that checks the weakdep UUID and compat floor stay in Project.toml.
  • Add the small QA test dependencies needed for the guard.

Root cause

The adaptive Lorenz regression tracks to a GPUCompiler/NVPTX codegen cliff in GPUCompiler 1.13.1 and earlier. On the stock DiffEqGPU adaptive kernel body, GPUCompiler 1.13.1 produced the slow path at about 211.8 ms; GPUCompiler 1.13.2 restored the expected path at about 47.9 ms.

The minimal compiler-pipeline difference I isolated is the EarlyCSEPass() inserted after SROAPass() in GPUCompiler's early simplification pipeline. Rebuilding GPUCompiler 1.13.1 with only that pass restored the adaptive benchmark to about 47.8 ms, matching 1.13.2+ behavior.

This package-level fix avoids known-bad compiler versions without adding GPUCompiler as a hard dependency for non-GPU installs.

Validation

  • JULIA_DEPOT_PATH=$PWD/dev/julia_depot: GROUP=QA julia --project=test test/runtests.jl
    • Quality Assurance | 20 pass / 20 total
    • JET static analysis | 75 pass / 75 total
  • JULIA_DEPOT_PATH=$PWD/dev/julia_depot: julia --project=test -e 'using Pkg; Pkg.status(["CUDA", "GPUCompiler"]; mode = Pkg.PKGMODE_MANIFEST)'
    • CUDA v6.2.0
    • GPUCompiler v1.22.7
  • JuliaFormatter.format run on the changed files.

Notes

The GPU benchmark investigation was performed on demeter2 with the issue reproducer. Other candidates checked and ruled out included extra rejected steps, saving/output, tstops, DAE init/finalization, workgroup size, Julia version, fixed-step Tsit5, raw SVector Lorenz loops, and the stock DiffEqGPU step! body itself.

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.

Adaptive lorenz 5x benchmark regression

2 participants