This is an archive of the discontinued LLVM Phabricator instance.

[NVPTX][NewPM] Temporarily disable NVPTX passes in new PM pipeline
ClosedPublic

Authored by aeubanks on Feb 5 2021, 11:16 AM.

Details

Summary

These passes are causing numerical discrepancies after being added to
the pipeline. Disable while investigating.

Diff Detail

Event Timeline

aeubanks created this revision.Feb 5 2021, 11:16 AM
aeubanks requested review of this revision.Feb 5 2021, 11:16 AM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 5 2021, 11:16 AM
rupprecht accepted this revision.Feb 5 2021, 11:25 AM

Verified, thanks!

This revision is now accepted and ready to land.Feb 5 2021, 11:25 AM
This revision was landed with ongoing or failed builds.Feb 5 2021, 11:31 AM
This revision was automatically updated to reflect the committed changes.
aeubanks added a subscriber: tra.Feb 5 2021, 12:13 PM
tra added inline comments.Feb 8 2021, 9:46 AM
llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
232–233

If we didn't run NVVMReflectPass before with the new PM and didn't fail, I'm very surprised.
This pass is necessary for using NVIDIA's libdevice bitcode. Without the pass we'd probably see compiler complaining about unresolved reference to __nvvm_reflect function.

NVVMIntrRangePass applies known range values to some CUDA functions which may allow compiler to optimize a bit better. Can be skipped w/o too much impact.

I don't know anything about createModuleToFunctionPassAdaptor.

aeubanks added inline comments.Feb 8 2021, 1:54 PM
llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
232–233

https://reviews.llvm.org/D96291 to re-enable NVVMReflectPass, looks like only NVVMIntrRangePass is the issue (which makes sense).
createModuleToFunctionPassAdaptor() is just pass manager infra stuff (changes a function pass to a module pass).