작은 (일반적으로 60x60보다 작은) 비대칭 행렬의 모든 양의 (고유 값이 양수) 양의 고유 쌍을 찾아야하는 문제가 있습니다. 고유 값이 특정 임계 값보다 작은 경우 계산을 중지 할 수 있습니다. 고유 값이 실제라는 것을 알고 있습니다. 최고의 성능을 짜기 위해 사용할 수있는 알고리즘에 대한 제안이 있으십니까? 이러한 분해를 수천 번해야하므로 속도가 중요합니다.
미리 감사드립니다.
편집 : 공유 메모리의 GPU 에서이 작업을 수행해야합니다. 행렬도 반드시 같은 크기 일 필요는 없습니다. 현재이 작업을 수행하는 라이브러리는 없습니다. 문제에 잘 맞는 알고리즘 제안을 부탁드립니다.
1
내가 올바르게 이해하면 공유 메모리에서 수천 개의 작은 행렬을 계산하는 CUDA 커널이 있으며 전역 메모리에 복사하지 않을 것입니다. 답변을하기 전에 명확히해야 할 몇 가지 사항이 있습니다. CUDA에서 공유 메모리 수명은 블록 수명에 바인딩됩니다. 각 매트릭스에 분해 할 스레드 수는 몇 개입니까? 극한의 성능이 정말로 중요합니까? (예상 고유 값 추출 시간이 행렬 생성 시간과 비교되는 방법은 무엇입니까?) 고유 시스템이 실제로 존재한다는 것을 알고있는 논거에 근거하여 고유 시스템에 결함이있을 수 있습니까?
—
Stefano M
Stefano 님 안녕하세요. 의견을 보내 주셔서 감사합니다. 지금은 분해하려는 행렬의 치수에 가장 가까운 워프 크기의 배수를 갖습니다. 매트릭스 생성 시간은 매우 다양하며, 매트릭스 생성 시간이 더 비싼 경우가 있지만, 매트릭스 생성 시간이 분해보다 짧은 경우가 많습니다. 행렬이 생성되는 방식으로 인해 고유 값이 실제라는 것을 알고 있습니다. 원래 질문에서 벗어나기 때문에 여기에 자세한 내용을 다루지 않겠습니다. 마지막으로, 시스템에 결함이있을 수 있습니다.
—
간 토쿠