![]() |
planc
Parallel Lowrank Approximation with Non-negativity Constraints
|
Go to the source code of this file.
Functions | |
void | partial_MTTKRP (Output_Layout OL, long int s, direction D, tensor *T, double *A, long int r, double *C, long int num_threads) |
Performs a tensor times a matrix based on some split of dimensions. More... | |
void | partial_MTTKRP_with_KRP (Output_Layout OL, long int s, direction D, ktensor *Y, tensor *T, double *C, long int num_threads) |
Wrapper function for partial_MTTKRP() Forms a desired KRP, manages all the memory for the KRP Passes the KRP as the argument double * A for partial_MTTKRP() 1) output format 2) s 3) D 4) Y, ktensor 5) T, data tensor 6) C, output matrix 7) num_threads. More... | |
void | partial_MTTKRP_with_KRP_output_FM (direction D, ktensor *Y, tensor *T, long int num_threads) |
partial_MTTKRP_with_KRP_output_FM(); Wrapper function for computing a partial_MTTKRP with KRP and outputing a (Row_Major) factor matrix. More... | |
void | partial_MTTKRP_with_KRP_output_T (long int s, direction D, ktensor *input_ktensor, tensor *input_tensor, tensor *output_tensor, long int num_threads) |
partial_MTTKRP_with_KRP_output_T() Wrapper function for computing partial_MTTKRP with KRP and outputing a tensor. More... | |
void | multi_TTV (Output_Layout OL, long int s, direction D, tensor *T, double *A, long int r, double *C, long int num_threads) |
multi_TTV(); performs a multi_ttv with between subtensors of T->data and the column of the matrix A. More... | |
void | multi_TTV_with_KRP (Output_Layout OL, long int s, direction D, tensor *T, ktensor *Y, double *C, long int num_threads) |
multi_TTV_with_KRP(); KRP wrapper for the general multi_TTV function. More... | |
void | multi_TTV_with_KRP_output_FM (direction D, tensor *input_tensor, ktensor *input_ktensor, long int num_threads) |
multi_TTV_with_KRP_output_FM(); Wrapper function for performing a multi_TTV with a KRP and outputing a (RowMajor) factor matrix. More... | |
void | multi_TTV_with_KRP_output_T (long int s, direction D, tensor *input_tensor, ktensor *input_ktensor, tensor *output_tensor, long int num_threads) |
void multi_TTV | ( | Output_Layout | OL, |
long int | s, | ||
direction | D, | ||
tensor * | T, | ||
double * | A, | ||
long int | r, | ||
double * | C, | ||
long int | num_threads | ||
) |
multi_TTV(); performs a multi_ttv with between subtensors of T->data and the column
of the matrix A.
Outputs to the matrix/tensor C. 1) OL, output_Layout 2) D, direction 3) s, the split point 4) T, tensor 5) A, ttv the columns of this matrix with the tensor 6) r, columns in A 7) C, output matrix 8) num_threads
1) dgemv_layout 2) trans_tensor 3) m, rows of T->data chunk 4) n, cols of T->data chunk 5) alpha 6) T->data + i * m * n, i * size of chunk 7) tensor_stride, stride of a tensor chunk 8) A[i], start of the ith column of a 9) r, stride of A 10) beta 11) C + i * output_col_stride, starting point of the ith col of C 12) output_stride, distance between elements of the output vector print_dgemv_inputs( dgemv_layout, trans_tensor, m, n, alpha, i*m*n,
tensor_stride, i, r, beta, output_col_stride, output_stride );
Definition at line 315 of file dimtrees.hpp.
void multi_TTV_with_KRP | ( | Output_Layout | OL, |
long int | s, | ||
direction | D, | ||
tensor * | T, | ||
ktensor * | Y, | ||
double * | C, | ||
long int | num_threads | ||
) |
multi_TTV_with_KRP(); KRP wrapper for the general multi_TTV function.
Forms a desired KRP and passes it to the multi_TTv function, manages all memory related to the KRP.
Definition at line 418 of file dimtrees.hpp.
void multi_TTV_with_KRP_output_FM | ( | direction | D, |
tensor * | input_tensor, | ||
ktensor * | input_ktensor, | ||
long int | num_threads | ||
) |
multi_TTV_with_KRP_output_FM(); Wrapper function for performing a multi_TTV with a KRP and outputing a
(RowMajor) factor matrix.
This should be used on edges leading to leave of the tree. 1) D, direction to contract 2) input_tensor, tensor to contract 3) input_ktensor, factor matrices from which to form the KRP 4) num_threads
Definition at line 464 of file dimtrees.hpp.
void multi_TTV_with_KRP_output_T | ( | long int | s, |
direction | D, | ||
tensor * | input_tensor, | ||
ktensor * | input_ktensor, | ||
tensor * | output_tensor, | ||
long int | num_threads | ||
) |
Definition at line 481 of file dimtrees.hpp.
void partial_MTTKRP | ( | Output_Layout | OL, |
long int | s, | ||
direction | D, | ||
tensor * | T, | ||
double * | A, | ||
long int | r, | ||
double * | C, | ||
long int | num_threads | ||
) |
Performs a tensor times a matrix based on some split of dimensions.
Partial MTTKRP functions.
cblas_dgemm(); 1) dgemm_layout, controls the layout of the output matrix 2) trans_tensor, balances dgemm_layout with contracting over left or
right modes 3) trans_A, balanes dgemm_layout with the assumption A is always in row major ordering 4) m, rows of T->data 5) r, columns of A 6) k, common dimensions being contracted over 7) alpha 8) T->data, tensor data 9) k, stride of T->data 10) A, a row major matrix 11) r, stride of A 12) beta 13) C, output matrix 14) output_stride print_dgemm_inputs( dgemm_layout, trans_tensor, trans_A, m, r, k, alpha, k, r, beta, output_stride );
Definition at line 31 of file dimtrees.hpp.
void partial_MTTKRP_with_KRP | ( | Output_Layout | OL, |
long int | s, | ||
direction | D, | ||
ktensor * | Y, | ||
tensor * | T, | ||
double * | C, | ||
long int | num_threads | ||
) |
Wrapper function for partial_MTTKRP() Forms a desired KRP, manages all the memory for the KRP Passes the KRP as the argument double * A for partial_MTTKRP() 1) output format 2) s 3) D 4) Y, ktensor 5) T, data tensor 6) C, output matrix 7) num_threads.
partial_MTTKRP(); 1) OL, specified output layuout 2) s, dimension being split over 3) Y->rank, number of columns in the KRP 4) T, data tensor 5) KRP, matrix to multiply into the data tensor 6) C, output matrix C 7) num_threads
Definition at line 176 of file dimtrees.hpp.
void partial_MTTKRP_with_KRP_output_FM | ( | direction | D, |
ktensor * | Y, | ||
tensor * | T, | ||
long int | num_threads | ||
) |
partial_MTTKRP_with_KRP_output_FM(); Wrapper function for computing a partial_MTTKRP with KRP and outputing a
(Row_Major) factor matrix.
This function should always be used on edges that lead to leaves of the tree. D tells you s
1) direction D 2) tensor T 3) ktensor K, the full ktensor 4) num_threads
1) RowMajor, output is a factor matrix 2) s, determined above based on hte direction 3) Y, k tensor corresponding to the original data tensor 4) T, the original data tensor, this is a PM 5) Y->factors[n], output to the factor matrix 6) num_threads
Definition at line 250 of file dimtrees.hpp.
void partial_MTTKRP_with_KRP_output_T | ( | long int | s, |
direction | D, | ||
ktensor * | input_ktensor, | ||
tensor * | input_tensor, | ||
tensor * | output_tensor, | ||
long int | num_threads | ||
) |
partial_MTTKRP_with_KRP_output_T() Wrapper function for computing partial_MTTKRP with KRP and outputing a
tensor.
This function should be used on edges of the tree that lead to non-leaf nodes. 1) s, split point 2) D, direction 3) input_ktensor, ktnesor whose factor matrices to are used to form the KRP 4) input_tensor, tensor to contract 5) output_tensor 6) num_threads
Definition at line 281 of file dimtrees.hpp.