planc
Parallel Lowrank Approximation with Non-negativity Constraints
Functions
ddttensor.hpp File Reference
#include "dimtree/ddttensor.h"

Go to the source code of this file.

Functions

void vdMul (long int n, double *a, double *b, double *c)
 
void printM_ColMajor (double *M, long int num_cols, long int num_rows)
 
void printM_RowMajor (double *M, long int num_cols, long int num_rows)
 
void print_Ktensor_RowMajor (ktensor *Y)
 
void print_tensor (tensor *T, long int show_data)
 
void print_dgemm_inputs (CBLAS_ORDER dgemm_layout, CBLAS_TRANSPOSE transA, CBLAS_TRANSPOSE transB, long int m, long int n, long int k, double alpha, long int strideA, long int strideB, double beta, long int strideC)
 
void print_dgemv_inputs (CBLAS_ORDER dgemv_layout, CBLAS_TRANSPOSE transA, long int m, long int n, double alpha, long int T_offset, long int tensor_stride, long int A_offset, long int A_stride, double beta, long int output_col_stride, long int output_stride)
 
void reorder_Factors (ktensor *Y, double **reordered_Factors, long int *reordered_Dims, long int n)
 
void update_Partial_Hadamards (ktensor *Y, long int *indexers, double *partial_Hadamards, double **reordered_Factors)
 
void KR_RowMajor (ktensor *Y, double *C, long int n)
 
void Multi_KR_RowMajor (ktensor *Y, double *C, long int n)
 
void Upper_Hadamard_RowMajor (long int nRows, long int nCols, double *A, double *B, double *C)
 
long int CompareM (double *A, double *B, long int nRows, long int nCols, double eps)
 
void MTTKRP_RowMajor (tensor *T, double *K, double *C, long int rank, long int n)
 
void MHada_RowMajor (ktensor *Y, double **SYRKs, double *V, long int n)
 
void do_SYRKs_RowMajor (ktensor *Y, double **SYRKs)
 
void normalize_Factor_Matrix_RowMajor (ktensor *Y, long int n)
 
void normalize_Ktensor_RowMajor (ktensor *Y)
 
void TransposeM (double *A, double *A_T, long int rowsA, long int colsA)
 
void Full_nMode_Matricization_RowMajor (tensor *T, ktensor *Y, long int n)
 
double approximation_Error (double *X, double *KR, ktensor *Y, long int n)
 
double CP_ALS_efficient_error_computation (ktensor *Y, long int n, double *MTTKRP, double *V, double *S, double tensor_norm)
 CP_ALS_efficient_error_computation(); needs to compute dotXX - 2*dot XY + dotYY 1) Y, ktensor 2) n, mode that was just updated or is being updated 3) MTTKRP, the MTTKRP of the nth mode 4) V, the multiple hadamard product for the nth mode 5) S, pointer to the storage space for the SYRK of the nth factor matrix 6) tensor_norm, the fro norm of the tensor input. More...
 
double CP_ALS_naive_error_computation (tensor *T, ktensor *Y, double *X, double *KRP, long int n)
 
Computes the error between T and Y. More...
 
void dims_check (long int *dims, long int length)
 
void reorder_Ktensor (ktensor *Y, ktensor *nY, long int n)
 
void compute_KRP_Indices (long int j, ktensor *Y, long int *indeces)
 
void wrapper_Parallel_Multi_revKRP (ktensor *Y, long int num_threads, double *KRP)
 
Wrapper function for the reverse KRP of a ktensor Y 1) Ktensor object 2) number of threads to use 3) KRP, output KRP More...
 
void Gen_Tensor (ktensor *Y, tensor *T, long int R, long int N, long int *D, double noise)
 
void parallel_Multi_KR_RowMajor (ktensor *Y, double *C, long int start, long int end)
 
void parallel_KR_RowMajor (ktensor *Y, double *C, long int start, long int end)
 parallel_KR_RowMajor(); Does the parallel KRP of the factor matrices in the ktensor Y More...
 
void parallel_update_Partial_Hadamards (ktensor *Y, long int *indexers, double *partial_Hadamards)
 
void compute_Iteration_Space (long int thread_id, long int num_threads, long int iter_space, long int *start, long int *end)
 
void clean_Up_Gen_Tensor (ktensor *Y, tensor *T)
 
void process_inputs (long int argc, char *argv[], tensor_inputs *inputs)
 
void destroy_inputs (tensor_inputs *inputs)
 
void LR_Ktensor_Reordering_newY (ktensor *Y, ktensor *nY, long int n, direction D)
 
void LR_Ktensor_Reordering_existingY (ktensor *Y, ktensor *nY, long int n, direction D)
 
void remove_mode_Ktensor (ktensor *Y, long int n)
 
void destruct_Ktensor (ktensor *Y, long int clear_factors)
 
void destruct_Tensor (tensor *T)
 
void tensor_data_swap (tensor *t1, tensor *t2)
 
void LR_tensor_Reduction (tensor *T, tensor *nT, long int n, direction D)
 
void ktensor_copy_constructor (ktensor *Y, ktensor *nY)
 
direction opposite_direction (direction D)
 

Function Documentation

◆ approximation_Error()

double approximation_Error ( double *  X,
double *  KR,
ktensor *  Y,
long int  n 
)

Definition at line 718 of file ddttensor.hpp.

◆ clean_Up_Gen_Tensor()

void clean_Up_Gen_Tensor ( ktensor *  Y,
tensor *  T 
)

Definition at line 1186 of file ddttensor.hpp.

◆ CompareM()

long int CompareM ( double *  A,
double *  B,
long int  nRows,
long int  nCols,
double  eps 
)

Definition at line 397 of file ddttensor.hpp.

◆ compute_Iteration_Space()

void compute_Iteration_Space ( long int  thread_id,
long int  num_threads,
long int  iter_space,
long int *  start,
long int *  end 
)

Definition at line 1162 of file ddttensor.hpp.

◆ compute_KRP_Indices()

void compute_KRP_Indices ( long int  j,
ktensor *  Y,
long int *  indeces 
)

Definition at line 847 of file ddttensor.hpp.

◆ CP_ALS_efficient_error_computation()

double CP_ALS_efficient_error_computation ( ktensor *  Y,
long int  n,
double *  MTTKRP,
double *  V,
double *  S,
double  tensor_norm 
)

CP_ALS_efficient_error_computation(); needs to compute dotXX - 2*dot XY + dotYY 1) Y, ktensor 2) n, mode that was just updated or is being updated 3) MTTKRP, the MTTKRP of the nth mode 4) V, the multiple hadamard product for the nth mode 5) S, pointer to the storage space for the SYRK of the nth factor matrix 6) tensor_norm, the fro norm of the tensor input.

Definition at line 743 of file ddttensor.hpp.

◆ CP_ALS_naive_error_computation()

double CP_ALS_naive_error_computation ( tensor *  T,
ktensor *  Y,
double *  X,
double *  KRP,
long int  n 
)


Computes the error between T and Y.

||T->data - Y||_2 Does so by forming the explicit approximatino of T form Y subtracting the two matricized tensors and taking the 2norm.

Definition at line 775 of file ddttensor.hpp.

◆ destroy_inputs()

void destroy_inputs ( tensor_inputs *  inputs)

Definition at line 1256 of file ddttensor.hpp.

◆ destruct_Ktensor()

void destruct_Ktensor ( ktensor *  Y,
long int  clear_factors 
)

Definition at line 1348 of file ddttensor.hpp.

◆ destruct_Tensor()

void destruct_Tensor ( tensor *  T)

Definition at line 1370 of file ddttensor.hpp.

◆ dims_check()

void dims_check ( long int *  dims,
long int  length 
)

Definition at line 788 of file ddttensor.hpp.

◆ do_SYRKs_RowMajor()

void do_SYRKs_RowMajor ( ktensor *  Y,
double **  SYRKs 
)

Definition at line 591 of file ddttensor.hpp.

◆ Full_nMode_Matricization_RowMajor()

void Full_nMode_Matricization_RowMajor ( tensor *  T,
ktensor *  Y,
long int  n 
)

Definition at line 689 of file ddttensor.hpp.

◆ Gen_Tensor()

void Gen_Tensor ( ktensor *  Y,
tensor *  T,
long int  R,
long int  N,
long int *  D,
double  noise 
)

Definition at line 899 of file ddttensor.hpp.

◆ KR_RowMajor()

void KR_RowMajor ( ktensor *  Y,
double *  C,
long int  n 
)

Definition at line 278 of file ddttensor.hpp.

◆ ktensor_copy_constructor()

void ktensor_copy_constructor ( ktensor *  Y,
ktensor *  nY 
)

Definition at line 1413 of file ddttensor.hpp.

◆ LR_Ktensor_Reordering_existingY()

void LR_Ktensor_Reordering_existingY ( ktensor *  Y,
ktensor *  nY,
long int  n,
direction  D 
)

Definition at line 1297 of file ddttensor.hpp.

◆ LR_Ktensor_Reordering_newY()

void LR_Ktensor_Reordering_newY ( ktensor *  Y,
ktensor *  nY,
long int  n,
direction  D 
)

Definition at line 1264 of file ddttensor.hpp.

◆ LR_tensor_Reduction()

void LR_tensor_Reduction ( tensor *  T,
tensor *  nT,
long int  n,
direction  D 
)

Definition at line 1388 of file ddttensor.hpp.

◆ MHada_RowMajor()

void MHada_RowMajor ( ktensor *  Y,
double **  SYRKs,
double *  V,
long int  n 
)

Definition at line 562 of file ddttensor.hpp.

◆ MTTKRP_RowMajor()

void MTTKRP_RowMajor ( tensor *  T,
double *  K,
double *  C,
long int  rank,
long int  n 
)

Definition at line 413 of file ddttensor.hpp.

◆ Multi_KR_RowMajor()

void Multi_KR_RowMajor ( ktensor *  Y,
double *  C,
long int  n 
)

Definition at line 303 of file ddttensor.hpp.

◆ normalize_Factor_Matrix_RowMajor()

void normalize_Factor_Matrix_RowMajor ( ktensor *  Y,
long int  n 
)

Definition at line 614 of file ddttensor.hpp.

◆ normalize_Ktensor_RowMajor()

void normalize_Ktensor_RowMajor ( ktensor *  Y)

Definition at line 628 of file ddttensor.hpp.

◆ opposite_direction()

direction opposite_direction ( direction  D)

Definition at line 1434 of file ddttensor.hpp.

◆ parallel_KR_RowMajor()

void parallel_KR_RowMajor ( ktensor *  Y,
double *  C,
long int  start,
long int  end 
)

parallel_KR_RowMajor(); Does the parallel KRP of the factor matrices in the ktensor Y

Definition at line 1066 of file ddttensor.hpp.

◆ parallel_Multi_KR_RowMajor()

void parallel_Multi_KR_RowMajor ( ktensor *  Y,
double *  C,
long int  start,
long int  end 
)

Definition at line 993 of file ddttensor.hpp.

◆ parallel_update_Partial_Hadamards()

void parallel_update_Partial_Hadamards ( ktensor *  Y,
long int *  indexers,
double *  partial_Hadamards 
)

Definition at line 1097 of file ddttensor.hpp.

◆ print_dgemm_inputs()

void print_dgemm_inputs ( CBLAS_ORDER  dgemm_layout,
CBLAS_TRANSPOSE  transA,
CBLAS_TRANSPOSE  transB,
long int  m,
long int  n,
long int  k,
double  alpha,
long int  strideA,
long int  strideB,
double  beta,
long int  strideC 
)

Definition at line 110 of file ddttensor.hpp.

◆ print_dgemv_inputs()

void print_dgemv_inputs ( CBLAS_ORDER  dgemv_layout,
CBLAS_TRANSPOSE  transA,
long int  m,
long int  n,
double  alpha,
long int  T_offset,
long int  tensor_stride,
long int  A_offset,
long int  A_stride,
double  beta,
long int  output_col_stride,
long int  output_stride 
)

Definition at line 149 of file ddttensor.hpp.

◆ print_Ktensor_RowMajor()

void print_Ktensor_RowMajor ( ktensor *  Y)

Definition at line 56 of file ddttensor.hpp.

◆ print_tensor()

void print_tensor ( tensor *  T,
long int  show_data 
)

Definition at line 89 of file ddttensor.hpp.

◆ printM_ColMajor()

void printM_ColMajor ( double *  M,
long int  num_cols,
long int  num_rows 
)

Definition at line 19 of file ddttensor.hpp.

◆ printM_RowMajor()

void printM_RowMajor ( double *  M,
long int  num_cols,
long int  num_rows 
)

Definition at line 39 of file ddttensor.hpp.

◆ process_inputs()

void process_inputs ( long int  argc,
char *  argv[],
tensor_inputs *  inputs 
)

Definition at line 1209 of file ddttensor.hpp.

◆ remove_mode_Ktensor()

void remove_mode_Ktensor ( ktensor *  Y,
long int  n 
)

Definition at line 1323 of file ddttensor.hpp.

◆ reorder_Factors()

void reorder_Factors ( ktensor *  Y,
double **  reordered_Factors,
long int *  reordered_Dims,
long int  n 
)

Definition at line 189 of file ddttensor.hpp.

◆ reorder_Ktensor()

void reorder_Ktensor ( ktensor *  Y,
ktensor *  nY,
long int  n 
)

Definition at line 823 of file ddttensor.hpp.

◆ tensor_data_swap()

void tensor_data_swap ( tensor *  t1,
tensor *  t2 
)

Definition at line 1378 of file ddttensor.hpp.

◆ TransposeM()

void TransposeM ( double *  A,
double *  A_T,
long int  rowsA,
long int  colsA 
)

Definition at line 668 of file ddttensor.hpp.

◆ update_Partial_Hadamards()

void update_Partial_Hadamards ( ktensor *  Y,
long int *  indexers,
double *  partial_Hadamards,
double **  reordered_Factors 
)

Definition at line 204 of file ddttensor.hpp.

◆ Upper_Hadamard_RowMajor()

void Upper_Hadamard_RowMajor ( long int  nRows,
long int  nCols,
double *  A,
double *  B,
double *  C 
)

Definition at line 372 of file ddttensor.hpp.

◆ vdMul()

void vdMul ( long int  n,
double *  a,
double *  b,
double *  c 
)

Definition at line 12 of file ddttensor.hpp.

◆ wrapper_Parallel_Multi_revKRP()

void wrapper_Parallel_Multi_revKRP ( ktensor *  Y,
long int  num_threads,
double *  KRP 
)


Wrapper function for the reverse KRP of a ktensor Y 1) Ktensor object 2) number of threads to use 3) KRP, output KRP

Definition at line 872 of file ddttensor.hpp.