Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CodegenC] Updated unit test for sorted CodegenC output #14949

Merged
merged 3 commits into from
Jun 2, 2023

Commits on May 30, 2023

  1. [Bugfix][TIR][VTA] Update host-side target, even without device func

    This resolves an issue introduced by the combination of
    apache#14918 and
    apache#14945.  The bug occurred for
    targets that do not require device-side codegen, but do require a
    `device_type` other than `kDLCPU`.  It wasn't caught by CI, as the
    issue only occurred with the combination of both PRs.
    
    1. apache#14918 updated `SplitHostDevice` to only modify the `"target"`
       attribute when a device-side function has been extracted.
    
    2. For VTA, there is no device-side function, as everything is done
       through host-side API calls.
    
    3. From (1) and (2), the VTA examples kept the target
       `T.target("ext_dev", host="llvm")` after the `SplitHostDevice`
       pass, instead of being updated to `T.target("llvm")`.
    
    4. apache#14945 restricted CombineContextCall to only apply to host-side
       passes.
    
    5. From (4) and (5), the `CombineContextCall` pass was no longer
       applied to the VTA context calls.
    
    This PR fixes `SplitHostDevice`, updating the target from
    `T.target("ext_dev", host="llvm")` to `T.target("llvm")`, even if no
    device sections have been extracted from the function.
    Lunderberg committed May 30, 2023
    Configuration menu
    Copy the full SHA
    4fdf1d1 View commit details
    Browse the repository at this point in the history
  2. [CodegenC] Updated unit test for sorted CodegenC output

    Previously, this unit test generated a `Map<tvm::Target, IRModule>`
    whose default iteration order was not sorted by function name, built
    the `Map` of modules, then validated whether the resulting C code was
    a sorted list of 4 elements.  However, this condition was stricter
    than necessary, as it depended on the number of items added to the
    `Map` until it was unsorted.
    
    This commit updates the test to instead validate that `std::is_sorted`
    returns true.
    Lunderberg committed May 30, 2023
    Configuration menu
    Copy the full SHA
    f80b6b3 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    39d327e View commit details
    Browse the repository at this point in the history