SciML / SciML/DiffEqGPU.jl

QA: ExplicitImports no_implicit_imports — make implicit imports explicit

Open
#466 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Julia
Stars
327
Forks
42
Avg merge
14h 13m
Merged PRs (30d)
34

Description

Tracking issue for the ExplicitImports check_no_implicit_imports finding, marked @test_broken via ei_broken = (:no_implicit_imports,) in the new run_qa-based QA group (PR converting QA onto the SciMLTesting run_qa v1.6 form + ExplicitImports).

DiffEqGPU relies on bare using of many heavy dependencies (KernelAbstractions, SciMLBase, DiffEqBase, StaticArrays, LinearAlgebra, ForwardDiff, Distributed, RecursiveArrayTools, SimpleDiffEq, ...), so ExplicitImports.check_no_implicit_imports(DiffEqGPU) reports ~75 implicitly-imported names. Converting each to an explicit using X: a, b, c is a large, mechanical-but-risky refactor (much of the surface is GPU-kernel macro usage such as @kernel, @Const, @index, @muladd, @unpack, @set), so it is deferred rather than done as part of the QA conversion.

The check is currently recorded as Broken (not Fail) so the QA lane stays green; once the implicit imports are made explicit, the @test_broken flips to an Unexpected Pass and :no_implicit_imports should be dropped from ei_broken.

Full implicit-import list (Julia LTS, ExplicitImports 1.15.0):

Adapt, adapt (Adapt)
BrownFullBasicInit (DiffEqBase)
Distributed, nprocs, pmap (Distributed)
DocStringExtensions (DocStringExtensions)
ForwardDiff (ForwardDiff)
KernelAbstractions, @Const, @index, @kernel, CPU (KernelAbstractions)
LinearAlgebra, I, LowerTriangular, NoPivot, RowMaximum, SingularException, UpperTriangular, det (LinearAlgebra)
LinearSolve (LinearSolve)
MuladdMacro, @muladd (MuladdMacro)
Parameters; @unpack (UnPack)
Random (Random)
RecursiveArrayTools, VectorOfArray (RecursiveArrayTools)
Setfield, @set, @set! (Setfield)
SimpleDiffEq, GPUSimpleATsit5, GPUSimpleAVern7, GPUSimpleAVern9, GPUSimpleTsit5, GPUSimpleVern7, GPUSimpleVern9, SimpleEM (SimpleDiffEq)
DiffEqBase (DiffEqBase)
ODEProblem, SDEProblem, SciMLBase, CallbackSet, CheckInit, ContinuousCallback, DiscreteCallback, EnsembleDistributed, EnsembleProblem, EnsembleSerial, EnsembleSolution, EnsembleThreads, ODEFunction, ReturnCode, SDEFunction, VectorContinuousCallback, remake, terminate! (SciMLBase)
solve (CommonSolve)
SimpleNonlinearSolve (SimpleNonlinearSolve)
StaticArrays (StaticArrays); MArray, MMatrix, SArray, SMatrix, SVector, Size, StaticMatrix, StaticVector, similar_type (StaticArraysCore)
setindex (Base)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the new run_qa-based QA group and its ExplicitImports check_no_implicit_imports entry, using the listed implicit-import report as the scope. Make the imports explicit across the affected DiffEqGPU code, then verify that the @test_broken check becomes an Unexpected Pass and that :no_implicit_imports can be removed from ei_broken.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
testing-qa, tooling
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.