eig.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2019-2025, NVIDIA CORPORATION.
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 #pragma once
6 
7 #include "../matrix/data.hpp"
8 #include "../matrix/part_descriptor.hpp"
9 
10 #include <raft/core/comms.hpp>
11 #include <raft/core/handle.hpp>
12 
13 namespace MLCommon {
14 namespace LinAlg {
15 namespace opg {
16 
31 void eigDC(const raft::handle_t& h,
32  float* eigenValues,
33  float* eigenVectors,
34  std::vector<Matrix::Data<float>*>& inParts,
36  int myRank,
37  cudaStream_t stream);
38 
39 void eigDC(const raft::handle_t& h,
40  double* eigenValues,
41  double* eigenVectors,
42  std::vector<Matrix::Data<double>*>& inParts,
44  int myRank,
45  cudaStream_t stream);
46 
47 void eigJacobi(const raft::handle_t& h,
48  float* eigenValues,
49  float* eigenVectors,
50  std::vector<Matrix::Data<float>*>& inParts,
52  int myRank,
53  cudaStream_t stream);
54 
55 void eigJacobi(const raft::handle_t& h,
56  double* eigenValues,
57  double* eigenVectors,
58  std::vector<Matrix::Data<double>*>& inParts,
60  int myRank,
61  cudaStream_t stream);
62 
63 } // end namespace opg
64 } // end namespace LinAlg
65 } // end namespace MLCommon
void eigJacobi(const raft::handle_t &h, float *eigenValues, float *eigenVectors, std::vector< Matrix::Data< float > * > &inParts, Matrix::PartDescriptor &desc, int myRank, cudaStream_t stream)
void eigDC(const raft::handle_t &h, float *eigenValues, float *eigenVectors, std::vector< Matrix::Data< float > * > &inParts, Matrix::PartDescriptor &desc, int myRank, cudaStream_t stream)
Multi-GPU version of Eigen decomposition. This function works for symmetric matrices only....
Definition: comm_utils.h:11
This is a helper wrapper around the multi-gpu data blocks owned by a worker. It's design is NOT final...
Definition: data.hpp:18
Definition: part_descriptor.hpp:40