다음 행렬 연산을 계산해야합니다.
D * A
여기서 D는 밀도가 높고 A는 희소식입니다 (CSC 형식).
cuSPARSE는 스파 스 매트릭스가 CSR 형식 인 스파 스 * 밀도를 곱할 수 있습니다.
Q를 간단히 A로 바꾸면 CSC를 CSR으로 "변환"할 수 있습니다.
결과를 바꿀 수있게 처리 할 수 있으므로 (A^T * D^T)^T도 계산할 수 있습니다.
CSR^T가 CSC이기 때문에이 방법에서는 A를 "전치"하는 것을 피할 수도 있습니다.
유일한 문제는 cuSPARSE가이 작업에서 D를 조 변경하는 것을 지원하지 않기 때문에 미리 조정해야하거나 매우 짙은 밀도이므로 총 낭비 인 CSR로 변환해야합니다.
해결 방법이 있습니까?
감사합니다.cuSPARSE dense times sparse
2
A
답변
1
해결 방법이 있습니다.
전체 코드에서 D에 대한 메모리 액세스가 변경되었습니다.
D가 mxn 행렬이고 D[j * m + i]
에 의해 액세스하는 데 사용 된 경우 이제 D[i * n + j]
으로 액세스합니다. 즉, 행 중 메이저가 아닌 행이 메이저가됨을 의미합니다.
cuSPARSE는 행렬 메이저 포맷의 행렬을 기대하며, 행 중점이 전치 된 행이기 때문에, 전치를 만들지 않고도 가짜 전치 연산자로서 cuSPARSE 함수에 D를 전달할 수 있습니다.
관련 문제
- 1. cuSPARSE를 사용하여 dense-to-sparse 및 sparse-dense 변환
- 2. cuSparse cusparseSnnz 함수가있는 CUSPARSE_STATUS_INTERNAL_ERROR
- 3. 다중 스트림 CUSPARSE
- 4. sparse triplet to sparse matrix matlab
- 5. OpenCV Dense Optical Flow Matrix
- 6. 행렬을 Breeze Dense 행렬로 변환
- 7. Sparse Voxel Octrees
- 8. scipy sparse 행렬의 대칭
- 9. Numpy sorting array (sparse)
- 10. scipy sparse csr_matrix의 인덱스
- 11. Singleton instanced two times
- 12. has_many through several times
- 13. Shabat times 알고리즘?
- 14. Jquery settimeout multiple times
- 15. Selenium Run Times
- 16. Javascript between Two Times
- 17. Date4j compare 2 times
- 18. Eigen Sparse LU solver 반환 값
- 19. 많은 CUBLAS 또는 cusparse 함수 호출에
- 20. cusparse csrsvanalysis가 가끔 작동하지 않는 경우가 있습니다.
- 21. Brox Dense Optical Flow 추적기 오류 'EFilterIncompatibleSize'
- 22. Dense 행 기능을 사용하여 카운트 일 수
- 23. 어떤 상황에서 Rank 및 Dense Rank가 유용할까요?
- 24. Weka printing sparse arff file
- 25. CSC 형식의 cuda sparse operations
- 26. Python - Pandas에서 Sparse 출력 형식
- 27. Sparse 대 Normal Array Matlab
- 28. Jenkins가 git sparse checkout으로 트리거합니다.
- 29. Scipy Sparse Matrix 특별 빼기
- 30. 왜 .times 어려운되고 있습니다 - 루비
이미 알고 계실지 모르지만 [geam] (http://docs.nvidia.com/cuda/cublas/index.html#topic_9_1) 함수를 사용하여 cube에서 고밀도 매트릭스를 조 변경 할 수 있습니다. –
이것은 단독 작업입니까, 아니면'A '* D * A의 줄에서 뭔가하고 있습니까? –
작동은 X - D * A 입니다. 여기서 X & D는 매우 조밀하고 A는 매우 희소합니다 – MrDor