Skip to content

Update cuSPARSE usage for CUDA 12.0#90765

Closed
IvanYashchuk wants to merge 3 commits intopytorch:masterfrom
IvanYashchuk:cusparse-cuda12-descriptors
Closed

Update cuSPARSE usage for CUDA 12.0#90765
IvanYashchuk wants to merge 3 commits intopytorch:masterfrom
IvanYashchuk:cusparse-cuda12-descriptors

Conversation

@IvanYashchuk
Copy link
Collaborator

@IvanYashchuk IvanYashchuk commented Dec 13, 2022

cuSPARSE v12.0 has started to use const pointers for the descriptors, from cusparse.h (documentation is incorrect):

typedef struct cusparseSpVecDescr const* cusparseConstSpVecDescr_t;
typedef struct cusparseDnVecDescr const* cusparseConstDnVecDescr_t;
typedef struct cusparseSpMatDescr const* cusparseConstSpMatDescr_t;
typedef struct cusparseDnMatDescr const* cusparseConstDnMatDescr_t;

Changing also the function signature for the corresponding destructors to accept a const pointer. This PR adds ConstCuSparseDescriptorDeleter working with cusparseStatus_t (*destructor)(const T*).

Some algorithm enums were deprecated during CUDA 11 and removed in CUDA 12, I replaced the following occurences

CUSPARSE_CSRMM_ALG1 -> CUSPARSE_SPMM_CSR_ALG1
CUSPARSE_COOMM_ALG1 -> CUSPARSE_SPMM_COO_ALG1
CUSPARSE_COOMM_ALG2 -> CUSPARSE_SPMM_COO_ALG2

cc @nikitaved @pearu @cpuhrsch @amjames @bhosmer @ngimel

@IvanYashchuk IvanYashchuk added module: sparse Related to torch.sparse module: cuda Related to torch.cuda, and CUDA support in general topic: not user facing topic category labels Dec 13, 2022
@pytorch-bot
Copy link

pytorch-bot bot commented Dec 13, 2022

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/90765

Note: Links to docs will display an error until the docs builds have been completed.

❌ 2 Failures

As of commit b7393a2:

The following jobs have failed:

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@IvanYashchuk IvanYashchuk added the ciflow/trunk Trigger trunk jobs on your pull request label Dec 13, 2022
@cpuhrsch
Copy link
Contributor

Thank you!

@pytorchbot merge

@pytorchmergebot
Copy link
Collaborator

Merge started

Your change will be merged once all checks pass (ETA 0-4 Hours).

Learn more about merging in the wiki.

Questions? Feedback? Please reach out to the PyTorch DevX Team

Advanced Debugging
Check the merge workflow status
here

@pytorchmergebot
Copy link
Collaborator

Merge failed

Reason: The following mandatory check(s) failed (Rule superuser):

Dig deeper by viewing the failures on hud

Details for Dev Infra team Raised by workflow job

@cpuhrsch
Copy link
Contributor

@pytorchbot merge -f "Unrelated failure"

@pytorchmergebot
Copy link
Collaborator

Merge started

Your change will be merged immediately since you used the force (-f) flag, bypassing any CI checks (ETA: 1-5 minutes).

Learn more about merging in the wiki.

Questions? Feedback? Please reach out to the PyTorch DevX Team

Advanced Debugging
Check the merge workflow status
here

pytorchmergebot pushed a commit that referenced this pull request Dec 15, 2022
jeffdaily pushed a commit to ROCm/pytorch that referenced this pull request Jun 1, 2023
cuSPARSE v12.0 has started to use const pointers for the descriptors, from `cusparse.h` (documentation is incorrect):
```cpp
typedef struct cusparseSpVecDescr const* cusparseConstSpVecDescr_t;
typedef struct cusparseDnVecDescr const* cusparseConstDnVecDescr_t;
typedef struct cusparseSpMatDescr const* cusparseConstSpMatDescr_t;
typedef struct cusparseDnMatDescr const* cusparseConstDnMatDescr_t;
```
Changing also the function signature for the corresponding destructors to accept a const pointer. This PR adds `ConstCuSparseDescriptorDeleter` working with `cusparseStatus_t (*destructor)(const T*)`.

Some algorithm enums were deprecated during CUDA 11 and removed in CUDA 12, I replaced the following occurences
```
CUSPARSE_CSRMM_ALG1 -> CUSPARSE_SPMM_CSR_ALG1
CUSPARSE_COOMM_ALG1 -> CUSPARSE_SPMM_COO_ALG1
CUSPARSE_COOMM_ALG2 -> CUSPARSE_SPMM_COO_ALG2
```

Pull Request resolved: pytorch#90765
Approved by: https://github.com/cpuhrsch
jeffdaily pushed a commit to ROCm/pytorch that referenced this pull request Jun 1, 2023
jeffdaily added a commit to ROCm/pytorch that referenced this pull request Jun 1, 2023
…, backport to release/1.13 (#1233)

* Update cuSPARSE usage for CUDA 12.0 (pytorch#90765)

cuSPARSE v12.0 has started to use const pointers for the descriptors, from `cusparse.h` (documentation is incorrect):
```cpp
typedef struct cusparseSpVecDescr const* cusparseConstSpVecDescr_t;
typedef struct cusparseDnVecDescr const* cusparseConstDnVecDescr_t;
typedef struct cusparseSpMatDescr const* cusparseConstSpMatDescr_t;
typedef struct cusparseDnMatDescr const* cusparseConstDnMatDescr_t;
```
Changing also the function signature for the corresponding destructors to accept a const pointer. This PR adds `ConstCuSparseDescriptorDeleter` working with `cusparseStatus_t (*destructor)(const T*)`.

Some algorithm enums were deprecated during CUDA 11 and removed in CUDA 12, I replaced the following occurences
```
CUSPARSE_CSRMM_ALG1 -> CUSPARSE_SPMM_CSR_ALG1
CUSPARSE_COOMM_ALG1 -> CUSPARSE_SPMM_COO_ALG1
CUSPARSE_COOMM_ALG2 -> CUSPARSE_SPMM_COO_ALG2
```

Pull Request resolved: pytorch#90765
Approved by: https://github.com/cpuhrsch

* [CUDA 12] Fix the endif guard position for cusparse const descriptors (pytorch#90897)

[CUDA 12] Fix the endif guard position for cusparse const descriptors

Related pytorch#90765
Pull Request resolved: pytorch#90897
Approved by: https://github.com/IvanYashchuk

* [CUDA12] Clean up deprecated APIs (pytorch#91050)

See pytorch#91122
Summary:
Some APIs are deprecated in newer version of CUDA.
* cudaGraphInstantiate:
From:
```
cudaGraphInstantiate ( cudaGraphExec_t* pGraphExec, cudaGraph_t graph, cudaGraphNode_t* pErrorNode, char* pLogBuffer, size_t bufferSize )
```
To
```
__host__​cudaError_t cudaGraphInstantiate ( cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags = 0 )
```
* cudaProfilerInitialize: deprecated in cuda 11 and removed in cuda 12

Test Plan: GH CI

Differential Revision: D41469051

Pull Request resolved: pytorch#91050
Approved by: https://github.com/jianyuh

* conditionally enable hipsparse const descriptors for version >= 2.4.0 (#1217)

* conditionally enable hipsparse const descriptors

* update hipsparse const API version condition to 2.4.0

---------

Co-authored-by: Ivan Yashchuk <[email protected]>
Co-authored-by: Xiao Wang <[email protected]>
Co-authored-by: Xiaodong Wang <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ciflow/trunk Trigger trunk jobs on your pull request Merged module: cuda Related to torch.cuda, and CUDA support in general module: sparse Related to torch.sparse open source topic: not user facing topic category

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants