Improves support for out of tree Ops.#968
Open
tehbone wants to merge 2 commits intoexplosion:v8.3.xfrom
Open
Conversation
Utilizes the entry_point registration to search for Ops that have been defined out of tree. Additionally refactors a bit of the GPU configuration and selection logic to not assume CUDA devices but also support the possibility that the device is non-CUDA.
Author
|
This is a stab at addressing #966. Please let me know if this approach would work. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Utilizes the entry_point registration to search for Ops that have been defined out of tree. Additionally refactors a bit of the GPU configuration and selection logic to not assume CUDA devices but also support the possibility that the device is non-CUDA.
Description
Pytorch is convincing vendors to add support for their devices out of their tree, by way of the PrivateUseOne device. This has a side effect that properly configured devices using that strategy will not present themselves as PrivateUseOne, but by one of the vendor's naming convention. In our case, the device is the
nnpadevice. The support provided here would allow one to extend the Ops interface and have the ability to choose one of these devices.The main usage update is follows:
require_gpuandprefer_gpunow take a keyword parameter "name", which can refer to any of the registered ops, and the functions will behave as expected - the prefer form will use the ops if it is found and the newly-addedOps.has_gpu_supportisTrue. The require form will error if it cannot be used. The default form where the name parameter is not specified will search the entrypoints for out of tree definitions before falling back on the old method of autodetection.A minimal example of an out of tree op that has been tested with this is here: (note - it only works on s390x machines)
Types of change
Enhancement/new feature, addresses #966.
Checklist