23 #ifndef __SYMMETRIC_MATRIX_H__
24 #define __SYMMETRIC_MATRIX_H__
26 #include "data_management/data/numeric_table.h"
27 #include "services/daal_memory.h"
28 #include "services/daal_defines.h"
29 #include "data_management/data/data_serialize.h"
33 namespace data_management
46 class PackedArrayNumericTableIface
49 virtual ~PackedArrayNumericTableIface()
59 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) = 0;
69 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) = 0;
79 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) = 0;
85 virtual services::Status releasePackedArray(BlockDescriptor<double> &block) = 0;
91 virtual services::Status releasePackedArray(BlockDescriptor<float> &block) = 0;
97 virtual services::Status releasePackedArray(BlockDescriptor<int> &block) = 0;
105 template<NumericTableIface::StorageLayout packedLayout,
typename DataType = DAAL_DATA_TYPE>
106 class DAAL_EXPORT PackedSymmetricMatrix :
public NumericTable,
public PackedArrayNumericTableIface
109 DECLARE_SERIALIZABLE_TAG();
110 DECLARE_SERIALIZABLE_IMPL();
115 typedef DataType baseDataType;
124 PackedSymmetricMatrix( DataType *
const ptr = 0,
size_t nDim = 0 ):
125 NumericTable( nDim, nDim )
127 _layout = packedLayout;
128 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
130 NumericTableFeature df;
131 df.setType<DataType>();
132 this->_status |= _ddict->setAllFeatures(df);
141 PackedSymmetricMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim ):
142 NumericTable( nDim, nDim )
144 _layout = packedLayout;
145 this->_status |= setArray( ptr );
147 NumericTableFeature df;
148 df.setType<DataType>();
149 this->_status |= _ddict->setAllFeatures(df);
152 PackedSymmetricMatrix(
size_t nDim ):
153 NumericTable( nDim, nDim )
155 _layout = packedLayout;
157 NumericTableFeature df;
158 df.setType<DataType>();
159 this->_status |= _ddict->setAllFeatures(df);
169 static services::SharedPtr<PackedSymmetricMatrix> create(DataType *
const ptr = 0,
size_t nDim = 0,
170 services::Status* stat = NULL)
172 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, stat);
182 static services::SharedPtr<PackedSymmetricMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
183 services::Status* stat = NULL)
185 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), ptr, nDim);
195 PackedSymmetricMatrix( DataType *
const ptr,
size_t nDim,
const DataType &constValue ):
196 NumericTable( nDim, nDim )
198 _layout = packedLayout;
199 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
201 NumericTableFeature df;
202 df.setType<DataType>();
203 this->_status |= _ddict->setAllFeatures(df);
205 this->_status |= assign( constValue );
215 PackedSymmetricMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue ) :
216 NumericTable( nDim, nDim )
218 _layout = packedLayout;
219 this->_status |= setArray( ptr );
221 NumericTableFeature df;
222 df.setType<DataType>();
223 this->_status |= _ddict->setAllFeatures(df);
225 this->_status |= assign( constValue );
236 static services::SharedPtr<PackedSymmetricMatrix> create(DataType *
const ptr,
size_t nDim,
const DataType &constValue,
237 services::Status* stat = NULL)
239 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, constValue, stat);
250 static services::SharedPtr<PackedSymmetricMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
const DataType &constValue,
251 services::Status* stat = NULL)
253 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), ptr, nDim, constValue);
262 PackedSymmetricMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag ):
263 NumericTable( nDim, nDim )
265 _layout = packedLayout;
267 NumericTableFeature df;
268 df.setType<DataType>();
269 this->_status |= _ddict->setAllFeatures(df);
271 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
281 static services::SharedPtr<PackedSymmetricMatrix> create(
size_t nDim, AllocationFlag memoryAllocationFlag,
282 services::Status* stat = NULL)
284 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), nDim, memoryAllocationFlag);
294 PackedSymmetricMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
295 const DataType &constValue ):
296 NumericTable( nDim, nDim )
298 _layout = packedLayout;
300 NumericTableFeature df;
301 df.setType<DataType>();
302 this->_status |= _ddict->setAllFeatures(df);
304 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
305 this->_status |= assign(constValue);
316 static services::SharedPtr<PackedSymmetricMatrix> create(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
317 const DataType &constValue, services::Status* stat = NULL)
319 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), \
320 nDim, memoryAllocationFlag, constValue);
324 virtual ~PackedSymmetricMatrix()
326 freeDataMemoryImpl();
333 DataType *getArray()
const
335 return (DataType*)_ptr.get();
342 services::SharedPtr<DataType> getArraySharedPtr()
const
344 return services::reinterpretPointerCast<DataType, byte>(_ptr);
351 services::Status setArray( DataType *
const ptr )
353 freeDataMemoryImpl();
355 return services::Status(services::ErrorEmptyHomogenNumericTable);
357 _ptr = services::SharedPtr<byte>((byte*)ptr, services::EmptyDeleter());
358 _memStatus = userAllocated;
359 return services::Status();
366 services::Status setArray(
const services::SharedPtr<DataType>& ptr )
368 freeDataMemoryImpl();
370 return services::Status(services::ErrorEmptyHomogenNumericTable);
372 _ptr = services::reinterpretPointerCast<byte, DataType>(ptr);
373 _memStatus = userAllocated;
374 return services::Status();
381 template <
typename T>
382 services::Status assign(T value)
384 if( _memStatus == notAllocated )
385 return services::Status(services::ErrorEmptyHomogenNumericTable);
387 size_t nDim = getNumberOfColumns();
389 DataType * ptr = (DataType*)_ptr.get();
390 DataType valueDataType = (DataType)value;
391 for(
size_t i = 0; i < (nDim * (nDim + 1)) / 2 ; i++ )
393 ptr[i] = valueDataType;
395 return services::Status();
401 virtual services::Status assign(
float value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
406 virtual services::Status assign(
double value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
411 virtual services::Status assign(
int value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
413 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
415 return getTBlock<double>(vector_idx, vector_num, rwflag, block);
417 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
419 return getTBlock<float>(vector_idx, vector_num, rwflag, block);
421 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
423 return getTBlock<int>(vector_idx, vector_num, rwflag, block);
426 services::Status releaseBlockOfRows(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
428 return releaseTBlock<double>(block);
430 services::Status releaseBlockOfRows(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
432 return releaseTBlock<float>(block);
434 services::Status releaseBlockOfRows(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
436 return releaseTBlock<int>(block);
439 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
440 ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
442 return getTFeature<double>(feature_idx, vector_idx, value_num, rwflag, block);
444 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
445 ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
447 return getTFeature<float>(feature_idx, vector_idx, value_num, rwflag, block);
449 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
450 ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
452 return getTFeature<int>(feature_idx, vector_idx, value_num, rwflag, block);
455 services::Status releaseBlockOfColumnValues(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
457 return releaseTFeature<double>(block);
459 services::Status releaseBlockOfColumnValues(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
461 return releaseTFeature<float>(block);
463 services::Status releaseBlockOfColumnValues(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
465 return releaseTFeature<int>(block);
469 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
471 return getTPackedArray<double>(rwflag, block);
473 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
475 return getTPackedArray<float>(rwflag, block);
477 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
479 return getTPackedArray<int>(rwflag, block);
482 services::Status releasePackedArray(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
484 return releaseTPackedArray<double>(block);
486 services::Status releasePackedArray(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
488 return releaseTPackedArray<float>(block);
490 services::Status releasePackedArray(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
492 return releaseTPackedArray<int>(block);
496 services::SharedPtr<byte> _ptr;
498 PackedSymmetricMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim, services::Status &st):
499 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
501 _layout = packedLayout;
502 st |= setArray( ptr );
504 NumericTableFeature df;
505 df.setType<DataType>();
506 st |= _ddict->setAllFeatures(df);
509 PackedSymmetricMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue,
510 services::Status &st) :
511 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
513 _layout = packedLayout;
514 st |= setArray( ptr );
516 NumericTableFeature df;
517 df.setType<DataType>();
518 st |= _ddict->setAllFeatures(df);
520 st |= assign( constValue );
523 PackedSymmetricMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag, services::Status &st):
524 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
526 _layout = packedLayout;
528 NumericTableFeature df;
529 df.setType<DataType>();
530 st |= _ddict->setAllFeatures(df);
532 if( memoryAllocationFlag == doAllocate ) st |= allocateDataMemoryImpl();
535 PackedSymmetricMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
536 const DataType &constValue, services::Status &st):
537 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
539 _layout = packedLayout;
541 NumericTableFeature df;
542 df.setType<DataType>();
543 st |= _ddict->setAllFeatures(df);
545 if( memoryAllocationFlag == doAllocate ) st |= allocateDataMemoryImpl();
546 st |= assign(constValue);
549 services::Status allocateDataMemoryImpl(daal::MemType type = daal::dram) DAAL_C11_OVERRIDE
551 freeDataMemoryImpl();
553 size_t nDim = getNumberOfColumns();
554 size_t size = (nDim * (nDim + 1)) / 2;
557 return services::Status(getNumberOfColumns() == 0 ? services::ErrorIncorrectNumberOfFeatures :
558 services::ErrorIncorrectNumberOfObservations);
560 _ptr = services::SharedPtr<byte>((byte *)daal::services::daal_malloc( size *
sizeof(DataType) ), services::ServiceDeleter());
563 return services::Status(services::ErrorMemoryAllocationFailed);
565 _memStatus = internallyAllocated;
566 return services::Status();
569 void freeDataMemoryImpl() DAAL_C11_OVERRIDE
572 _memStatus = notAllocated;
576 template<
typename Archive,
bool onDeserialize>
577 services::Status serialImpl( Archive *arch )
579 NumericTable::serialImpl<Archive, onDeserialize>( arch );
583 allocateDataMemoryImpl();
586 size_t nDim = getNumberOfColumns();
587 size_t size = (nDim * (nDim + 1)) / 2;
589 arch->set( (DataType*)_ptr.get(), size );
591 return services::Status();
595 template<
typename T1,
typename T2>
596 void internal_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
598 if( IsSameType<T1, T2>::value )
600 if( src != (T1 *)dst )
602 daal::services::daal_memcpy_s(dst, n * p *
sizeof(T1), src, n * p *
sizeof(T1));
609 for(i = 0; i < n; i++)
611 for(j = 0; j < p; j++)
613 dst[i * p + j] =
static_cast<T2
>(src[i * p + j]);
619 template<
typename T1,
typename T2>
620 void internal_set_col_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
624 for(i = 0; i < n; i++)
626 dst[i * p] =
static_cast<T2
>(src[i]);
631 baseDataType &getBaseValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
635 if( packedLayout == upperPackedSymmetricMatrix )
637 if( colIdx < rowIdx )
645 offset = (2 * dim - rowIdx) * (rowIdx + 1) / 2 - (dim - colIdx);
649 if( colIdx > rowIdx )
657 offset = (2 + rowIdx) * (rowIdx + 1) / 2 - (rowIdx - colIdx) - 1;
659 return *((DataType*)_ptr.get() + offset);
662 template <
typename T>
663 T getValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
665 return static_cast<T
>( getBaseValue( dim, rowIdx, colIdx ) );
668 template <
typename T>
669 services::Status setValue(
size_t dim,
size_t rowIdx,
size_t colIdx, T value )
671 getBaseValue( dim, rowIdx, colIdx ) =
static_cast<baseDataType
>( value );
672 return services::Status();
675 template <
typename T>
676 services::Status getTBlock(
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
678 size_t nDim = getNumberOfColumns();
679 block.setDetails( 0, idx, rwFlag );
683 block.resizeBuffer( nDim, 0 );
684 return services::Status();
687 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
689 if( !block.resizeBuffer( nDim, nrows ) )
690 return services::Status(services::ErrorMemoryAllocationFailed);
692 if((rwFlag & (
int)readOnly))
694 T *buffer = block.getBlockPtr();
696 for(
size_t iRow = 0; iRow < nrows; iRow++)
698 for(
size_t iCol = 0; iCol < nDim; iCol++)
700 buffer[iRow * nDim + iCol] = getValue<T>(nDim, iRow + idx, iCol);
704 return services::Status();
707 template <
typename T>
708 services::Status releaseTBlock( BlockDescriptor<T> &block )
711 if(block.getRWFlag() & (int)writeOnly)
713 size_t nDim = getNumberOfColumns();
714 size_t nrows = block.getNumberOfRows();
715 size_t idx = block.getRowsOffset();
716 T *buffer = block.getBlockPtr();
718 for(
size_t iRow = 0; iRow < nrows; iRow++ )
720 for(
size_t iCol = 0; iCol < nDim; iCol++ )
722 s |= setValue<T>( nDim, idx + iRow, iCol, buffer[ iRow * nDim + iCol ] );
730 template <
typename T>
731 services::Status getTFeature(
size_t feat_idx,
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
733 size_t nDim = getNumberOfColumns();
734 block.setDetails( feat_idx, idx, rwFlag );
738 block.resizeBuffer( nDim, 0 );
739 return services::Status();
742 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
744 if( !block.resizeBuffer( 1, nrows ) )
745 return services::Status();
747 if((block.getRWFlag() & (int)readOnly))
749 T *buffer = block.getBlockPtr();
751 for(
size_t iRow = 0; iRow < nrows; iRow++)
753 buffer[iRow] = getValue<T>(nDim, iRow + idx, feat_idx);
756 return services::Status();
759 template <
typename T>
760 services::Status releaseTFeature( BlockDescriptor<T> &block )
763 if (block.getRWFlag() & (int)writeOnly)
765 size_t nDim = getNumberOfColumns();
766 size_t nrows = block.getNumberOfRows();
767 size_t idx = block.getRowsOffset();
768 size_t feat_idx = block.getColumnsOffset();
769 T *buffer = block.getBlockPtr();
771 for(
size_t iRow = 0; iRow < nrows; iRow++ )
773 s |= setValue<T>( nDim, iRow + idx, feat_idx, buffer[ iRow ] );
780 template <
typename T>
781 services::Status getTPackedArray(
int rwFlag, BlockDescriptor<T> &block )
783 size_t nDim = getNumberOfColumns();
784 block.setDetails( 0, 0, rwFlag );
786 size_t nSize = (nDim * (nDim + 1)) / 2;
788 if( IsSameType<T, DataType>::value )
790 block.setPtr( &_ptr, _ptr.get(), 1, nSize );
791 return services::Status();
794 if( !block.resizeBuffer( 1, nSize ) )
return services::Status();
796 if( !(rwFlag & (
int)readOnly) )
return services::Status();
798 T *buffer = block.getBlockPtr();
799 DataType * ptr = (DataType*) _ptr.get();
800 for(
size_t i = 0; i < nSize; i++ )
802 buffer[ i ] =
static_cast<T
>(*(ptr + i));
804 return services::Status();
807 template <
typename T>
808 services::Status releaseTPackedArray( BlockDescriptor<T> &block )
810 if( (block.getRWFlag() & (int)writeOnly) && !IsSameType<T, DataType>::value )
812 size_t nDim = getNumberOfColumns();
813 size_t nSize = (nDim * (nDim + 1)) / 2;
814 T *buffer = block.getBlockPtr();
815 DataType * ptr = (DataType*) _ptr.get();
817 for(
size_t i = 0; i < nSize; i++ )
819 *(ptr + i) = static_cast<baseDataType>(buffer[ i ]);
823 return services::Status();
826 virtual services::Status setNumberOfColumnsImpl(
size_t nDim) DAAL_C11_OVERRIDE
828 if( _ddict->getNumberOfFeatures() != nDim )
830 _ddict->setNumberOfFeatures( nDim );
832 NumericTableFeature df;
833 df.setType<DataType>();
834 _ddict->setAllFeatures(df);
838 return services::Status();
841 virtual services::Status setNumberOfRowsImpl(
size_t nDim) DAAL_C11_OVERRIDE
843 setNumberOfColumnsImpl( nDim );
845 return services::Status();
854 template<NumericTableIface::StorageLayout packedLayout,
typename DataType = DAAL_DATA_TYPE>
855 class DAAL_EXPORT PackedTriangularMatrix :
public NumericTable,
public PackedArrayNumericTableIface
858 DECLARE_SERIALIZABLE_TAG();
863 typedef DataType baseDataType;
871 PackedTriangularMatrix( DataType *
const ptr = 0,
size_t nDim = 0 ):
872 NumericTable( nDim, nDim )
874 _layout = packedLayout;
875 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
877 NumericTableFeature df;
878 df.setType<DataType>();
879 this->_status |= _ddict->setAllFeatures(df);
887 PackedTriangularMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim ):
888 NumericTable( nDim, nDim )
890 _layout = packedLayout;
891 this->_status |= setArray( ptr );
893 NumericTableFeature df;
894 df.setType<DataType>();
895 this->_status |= _ddict->setAllFeatures(df);
898 PackedTriangularMatrix(
size_t nDim ):
899 NumericTable( nDim, nDim )
901 _layout = packedLayout;
903 NumericTableFeature df;
904 df.setType<DataType>();
905 this->_status |= _ddict->setAllFeatures(df);
908 static services::SharedPtr<PackedTriangularMatrix> create(DataType *
const ptr = 0,
size_t nDim = 0,
909 services::Status* stat = NULL)
911 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, stat);
914 static services::SharedPtr<PackedTriangularMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
915 services::Status* stat = NULL)
917 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
920 services::Status s = ntPtr->setArray(ptr);
922 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
929 *stat = services::Status(services::ErrorMemoryAllocationFailed);
940 PackedTriangularMatrix( DataType *
const ptr,
size_t nDim,
const DataType &constValue ):
941 NumericTable( nDim, nDim )
943 _layout = packedLayout;
944 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
946 NumericTableFeature df;
947 df.setType<DataType>();
948 this->_status |= _ddict->setAllFeatures(df);
950 this->_status |= assign( constValue );
959 PackedTriangularMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue ) :
960 NumericTable( nDim, nDim )
962 _layout = packedLayout;
963 this->_status |= setArray( ptr );
965 NumericTableFeature df;
966 df.setType<DataType>();
967 this->_status |= _ddict->setAllFeatures(df);
969 this->_status |= assign( constValue );
972 static services::SharedPtr<PackedTriangularMatrix> create(DataType *
const ptr,
size_t nDim,
const DataType &constValue,
973 services::Status* stat = NULL)
975 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
978 services::Status s = ntPtr->setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
979 s.add(ntPtr->assign(constValue));
981 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
988 *stat = services::Status(services::ErrorMemoryAllocationFailed);
993 static services::SharedPtr<PackedTriangularMatrix> create(services::SharedPtr<DataType> &ptr,
size_t nDim,
const DataType &constValue,
994 services::Status* stat = NULL)
996 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
999 services::Status s = ntPtr->setArray(ptr);
1000 s.add(ntPtr->assign(constValue));
1002 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1009 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1019 PackedTriangularMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag ):
1020 NumericTable( nDim, nDim )
1022 _layout = packedLayout;
1024 NumericTableFeature df;
1025 df.setType<DataType>();
1026 this->_status |= _ddict->setAllFeatures(df);
1028 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
1031 static services::SharedPtr<PackedTriangularMatrix> create(
size_t nDim, AllocationFlag memoryAllocationFlag,
1032 services::Status* stat = NULL)
1034 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1038 if(memoryAllocationFlag == doAllocate)
1040 s = ntPtr->allocateDataMemoryImpl();
1042 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1045 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1052 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1063 PackedTriangularMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
1064 const DataType &constValue ):
1065 NumericTable( nDim, nDim )
1067 _layout = packedLayout;
1069 NumericTableFeature df;
1070 df.setType<DataType>();
1071 this->_status |= _ddict->setAllFeatures(df);
1073 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
1074 this->_status |= assign(constValue);
1077 static services::SharedPtr<PackedTriangularMatrix> create(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
1078 const DataType &constValue, services::Status* stat = NULL)
1080 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1084 if(memoryAllocationFlag == doAllocate)
1086 s = ntPtr->allocateDataMemoryImpl();
1087 s.add(ntPtr->assign(constValue));
1089 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1092 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1099 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1105 virtual ~PackedTriangularMatrix()
1107 freeDataMemoryImpl();
1110 virtual services::Status setNumberOfColumns(
size_t nDim) DAAL_C11_OVERRIDE
1112 if( _ddict->getNumberOfFeatures() != nDim )
1114 _ddict->setNumberOfFeatures( nDim );
1116 NumericTableFeature df;
1117 df.setType<DataType>();
1118 _ddict->setAllFeatures(df);
1122 return services::Status();
1125 virtual services::Status setNumberOfRows(
size_t nDim) DAAL_C11_OVERRIDE
1127 return setNumberOfColumns( nDim );
1134 DataType *getArray()
const
1136 return (DataType*)_ptr.get();
1143 services::SharedPtr<DataType> getArraySharedPtr()
const
1145 return services::reinterpretPointerCast<DataType, byte>(_ptr);
1152 services::Status setArray( DataType *
const ptr )
1154 freeDataMemoryImpl();
1156 return services::Status(services::ErrorEmptyHomogenNumericTable);
1158 _ptr = services::SharedPtr<byte>((DataType*)ptr, services::EmptyDeleter());
1159 _memStatus = userAllocated;
1160 return services::Status();
1167 services::Status setArray(
const services::SharedPtr<DataType>& ptr )
1169 freeDataMemoryImpl();
1171 return services::Status(services::ErrorEmptyHomogenNumericTable);
1173 _ptr = services::reinterpretPointerCast<byte, DataType>(ptr);
1174 _memStatus = userAllocated;
1175 return services::Status();
1182 template <
typename T>
1183 services::Status assign(T value)
1185 if( _memStatus == notAllocated )
1186 return services::Status(services::ErrorEmptyHomogenNumericTable);
1188 size_t nDim = getNumberOfColumns();
1190 DataType * ptr = (DataType*)_ptr.get();
1191 DataType valueDataType = (DataType)value;
1192 for(
size_t i = 0; i < (nDim * (nDim + 1)) / 2 ; i++ )
1194 ptr[i] = valueDataType;
1196 return services::Status();
1202 virtual services::Status assign(
float value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1207 virtual services::Status assign(
double value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1212 virtual services::Status assign(
int value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1214 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1216 return getTBlock<double>(vector_idx, vector_num, rwflag, block);
1218 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1220 return getTBlock<float>(vector_idx, vector_num, rwflag, block);
1222 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1224 return getTBlock<int>(vector_idx, vector_num, rwflag, block);
1227 services::Status releaseBlockOfRows(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1229 return releaseTBlock<double>(block);
1231 services::Status releaseBlockOfRows(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1233 return releaseTBlock<float>(block);
1235 services::Status releaseBlockOfRows(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1237 return releaseTBlock<int>(block);
1240 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
1241 ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1243 return getTFeature<double>(feature_idx, vector_idx, value_num, rwflag, block);
1245 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
1246 ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1248 return getTFeature<float>(feature_idx, vector_idx, value_num, rwflag, block);
1250 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
1251 ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1253 return getTFeature<int>(feature_idx, vector_idx, value_num, rwflag, block);
1256 services::Status releaseBlockOfColumnValues(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1258 return releaseTFeature<double>(block);
1260 services::Status releaseBlockOfColumnValues(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1262 return releaseTFeature<float>(block);
1264 services::Status releaseBlockOfColumnValues(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1266 return releaseTFeature<int>(block);
1269 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1271 return getTPackedArray<double>(rwflag, block);
1273 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1275 return getTPackedArray<float>(rwflag, block);
1277 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1279 return getTPackedArray<int>(rwflag, block);
1282 services::Status releasePackedArray(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1284 return releaseTPackedArray<double>(block);
1286 services::Status releasePackedArray(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1288 return releaseTPackedArray<float>(block);
1290 services::Status releasePackedArray(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1292 return releaseTPackedArray<int>(block);
1296 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
1298 serialImpl<InputDataArchive, false>( arch );
1300 return services::Status();
1304 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
1306 serialImpl<const OutputDataArchive, true>( arch );
1308 return services::Status();
1312 services::SharedPtr<byte> _ptr;
1314 services::Status allocateDataMemoryImpl(daal::MemType type = daal::dram) DAAL_C11_OVERRIDE
1316 freeDataMemoryImpl();
1318 size_t nDim = getNumberOfColumns();
1319 size_t size = (nDim * (nDim + 1)) / 2;
1322 return services::Status(getNumberOfColumns() == 0 ? services::ErrorIncorrectNumberOfFeatures :
1323 services::ErrorIncorrectNumberOfObservations);
1325 _ptr = services::SharedPtr<byte>((byte *)daal::services::daal_malloc( size *
sizeof(DataType) ), services::ServiceDeleter());
1328 return services::Status(services::ErrorMemoryAllocationFailed);
1330 _memStatus = internallyAllocated;
1331 return services::Status();
1334 void freeDataMemoryImpl() DAAL_C11_OVERRIDE
1337 _memStatus = notAllocated;
1341 template<
typename Archive,
bool onDeserialize>
1342 services::Status serialImpl( Archive *arch )
1344 NumericTable::serialImpl<Archive, onDeserialize>( arch );
1348 allocateDataMemoryImpl();
1351 size_t nDim = getNumberOfColumns();
1352 size_t size = (nDim * (nDim + 1)) / 2;
1354 arch->set( (DataType*)_ptr.get(), size );
1356 return services::Status();
1360 template<
typename T1,
typename T2>
1361 void internal_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
1363 if( IsSameType<T1, T2>::value )
1365 if( src != (T1 *)dst )
1367 daal::services::daal_memcpy_s(dst, n * p *
sizeof(T1), src, n * p *
sizeof(T1));
1374 for(i = 0; i < n; i++)
1376 for(j = 0; j < p; j++)
1378 dst[i * p + j] =
static_cast<T2
>(src[i * p + j]);
1384 template<
typename T1,
typename T2>
1385 void internal_set_col_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
1389 for(i = 0; i < n; i++)
1391 dst[i * p] =
static_cast<T2
>(src[i]);
1396 baseDataType &getBaseValue(
size_t dim,
size_t rowIdx,
size_t colIdx, baseDataType &zero )
1400 if( packedLayout == upperPackedTriangularMatrix )
1402 if( colIdx < rowIdx )
1407 offset = (2 * dim - rowIdx) * (rowIdx + 1) / 2 - (dim - colIdx);
1411 if( colIdx > rowIdx )
1416 offset = (2 + rowIdx) * (rowIdx + 1) / 2 - (rowIdx - colIdx) - 1;
1418 return *((DataType*)_ptr.get() + offset);
1421 template <
typename T>
1422 T getValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
1424 baseDataType zero = (baseDataType)0;
1425 return static_cast<T
>( getBaseValue( dim, rowIdx, colIdx, zero ) );
1428 template <
typename T>
1429 services::Status setValue(
size_t dim,
size_t rowIdx,
size_t colIdx, T value )
1431 baseDataType zero = (baseDataType)0;
1432 getBaseValue( dim, rowIdx, colIdx, zero ) =
static_cast<baseDataType
>( value );
1433 return services::Status();
1436 template <
typename T>
1437 services::Status getTBlock(
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
1439 size_t nDim = getNumberOfColumns();
1440 block.setDetails( 0, idx, rwFlag );
1444 block.resizeBuffer( nDim, 0 );
1445 return services::Status();
1448 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
1450 if( !block.resizeBuffer( nDim, nrows ) )
1451 return services::Status(services::ErrorMemoryAllocationFailed);
1453 if((rwFlag & (
int)readOnly))
1455 T *buffer = block.getBlockPtr();
1457 for(
size_t iRow = 0; iRow < nrows; iRow++)
1459 for(
size_t iCol = 0; iCol < nDim; iCol++)
1461 buffer[iRow * nDim + iCol] = getValue<T>(nDim, iRow + idx, iCol);
1465 return services::Status();
1468 template <
typename T>
1469 services::Status releaseTBlock( BlockDescriptor<T> &block )
1472 if(block.getRWFlag() & (int)writeOnly)
1474 size_t nDim = getNumberOfColumns();
1475 size_t nrows = block.getNumberOfRows();
1476 size_t idx = block.getRowsOffset();
1477 T *buffer = block.getBlockPtr();
1479 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1481 for(
size_t iCol = 0; iCol < nDim; iCol++ )
1483 s |= setValue<T>( nDim, iRow + idx, iCol, buffer[ iRow * nDim + iCol ] );
1491 template <
typename T>
1492 services::Status getTFeature(
size_t feat_idx,
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
1494 size_t nDim = getNumberOfColumns();
1495 block.setDetails( feat_idx, idx, rwFlag );
1499 block.resizeBuffer( nDim, 0 );
1500 return services::Status();
1503 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
1505 if( !block.resizeBuffer( 1, nrows ) )
1506 return services::Status();
1508 if((block.getRWFlag() & (int)readOnly))
1510 T *buffer = block.getBlockPtr();
1511 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1513 buffer[ iRow ] = getValue<T>( nDim, iRow + idx, feat_idx );
1516 return services::Status();
1519 template <
typename T>
1520 services::Status releaseTFeature( BlockDescriptor<T> &block )
1523 if (block.getRWFlag() & (int)writeOnly)
1525 size_t nDim = getNumberOfColumns();
1526 size_t nrows = block.getNumberOfRows();
1527 size_t idx = block.getRowsOffset();
1528 size_t feat_idx = block.getColumnsOffset();
1529 T *buffer = block.getBlockPtr();
1531 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1533 s |= setValue<T>( nDim, iRow + idx, feat_idx, buffer[ iRow ] );
1540 template <
typename T>
1541 services::Status getTPackedArray(
int rwFlag, BlockDescriptor<T> &block )
1543 size_t nDim = getNumberOfColumns();
1544 block.setDetails( 0, 0, rwFlag );
1546 size_t nSize = (nDim * (nDim + 1)) / 2;
1548 if( IsSameType<T, DataType>::value )
1550 block.setPtr( &_ptr, _ptr.get(), 1, nSize );
1551 return services::Status();
1554 if( !block.resizeBuffer( 1, nSize ) )
return services::Status();
1556 if( !(rwFlag & (
int)readOnly) )
return services::Status();
1558 T *buffer = block.getBlockPtr();
1559 DataType * ptr = (DataType*)_ptr.get();
1560 for(
size_t i = 0; i < nSize; i++ )
1562 buffer[ i ] =
static_cast<T
>(*(ptr + i));
1564 return services::Status();
1567 template <
typename T>
1568 services::Status releaseTPackedArray( BlockDescriptor<T> &block )
1570 if( (block.getRWFlag() & (int)writeOnly) && !IsSameType<T, DataType>::value )
1572 size_t nDim = getNumberOfColumns();
1573 size_t nSize = (nDim * (nDim + 1)) / 2;
1574 T *buffer = block.getBlockPtr();
1575 DataType * ptr = (DataType*)_ptr.get();
1577 for(
size_t i = 0; i < nSize; i++ )
1579 *(ptr + i) = static_cast<baseDataType>(buffer[ i ]);
1583 return services::Status();
1586 virtual services::Status setNumberOfColumnsImpl(
size_t nDim) DAAL_C11_OVERRIDE
1588 if( _ddict->getNumberOfFeatures() != nDim )
1590 _ddict->setNumberOfFeatures( nDim );
1592 NumericTableFeature df;
1593 df.setType<DataType>();
1594 _ddict->setAllFeatures(df);
1598 return services::Status();
1601 virtual services::Status setNumberOfRowsImpl(
size_t nDim) DAAL_C11_OVERRIDE
1603 setNumberOfColumnsImpl( nDim );
1605 return services::Status();
1610 using interface1::PackedArrayNumericTableIface;
1611 using interface1::PackedSymmetricMatrix;
1612 using interface1::PackedTriangularMatrix;
daal::data_management::interface1::PackedSymmetricMatrix::getBlockOfColumnValues
services::Status getBlockOfColumnValues(size_t feature_idx, size_t vector_idx, size_t value_num, ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:444
daal::data_management::interface1::PackedTriangularMatrix::getBlockOfColumnValues
services::Status getBlockOfColumnValues(size_t feature_idx, size_t vector_idx, size_t value_num, ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1245
daal::data_management::interface1::NumericTableIface::AllocationFlag
AllocationFlag
Enumeration to specify whether the Numeric Table must allocate memory.
Definition: numeric_table.h:283
daal::data_management::interface1::PackedTriangularMatrix::getBlockOfColumnValues
services::Status getBlockOfColumnValues(size_t feature_idx, size_t vector_idx, size_t value_num, ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1240
daal::data_management::interface1::PackedSymmetricMatrix::getArray
DataType * getArray() const
Definition: symmetric_matrix.h:333
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:486
daal
Definition: algorithm_base_common.h:31
daal::data_management::interface1::PackedSymmetricMatrix::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:417
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(DataType *const ptr=0, size_t nDim=0)
Definition: symmetric_matrix.h:871
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:482
daal::data_management::interface1::PackedSymmetricMatrix::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:413
daal::data_management::interface1::PackedSymmetricMatrix::getBlockOfColumnValues
services::Status getBlockOfColumnValues(size_t feature_idx, size_t vector_idx, size_t value_num, ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:449
daal::data_management::interface1::PackedTriangularMatrix::setArray
services::Status setArray(DataType *const ptr)
Definition: symmetric_matrix.h:1152
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:463
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1260
daal::data_management::interface1::PackedSymmetricMatrix::setArray
services::Status setArray(DataType *const ptr)
Definition: symmetric_matrix.h:351
daal::data_management::interface1::PackedTriangularMatrix::getBlockOfColumnValues
services::Status getBlockOfColumnValues(size_t feature_idx, size_t vector_idx, size_t value_num, ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1250
daal::data_management::interface1::PackedArrayNumericTableIface
Abstract class that defines the interface of symmetric matrices stored as a one-dimensional array...
Definition: symmetric_matrix.h:46
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: symmetric_matrix.h:294
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1269
daal::data_management::interface1::PackedTriangularMatrix::baseDataType
DataType baseDataType
Definition: symmetric_matrix.h:863
daal::data_management::interface1::PackedSymmetricMatrix::setArray
services::Status setArray(const services::SharedPtr< DataType > &ptr)
Definition: symmetric_matrix.h:366
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1282
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(DataType *const ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:940
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:147
daal::dram
Definition: daal_defines.h:147
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1277
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim)
Definition: symmetric_matrix.h:887
daal::data_management::interface1::PackedTriangularMatrix::getArray
DataType * getArray() const
Definition: symmetric_matrix.h:1134
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:469
daal::services::ErrorIncorrectNumberOfFeatures
Definition: error_indexes.h:70
daal::data_management::interface1::PackedSymmetricMatrix::baseDataType
DataType baseDataType
Definition: symmetric_matrix.h:115
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:426
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:455
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1264
daal::data_management::interface1::PackedSymmetricMatrix::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:421
daal::data_management::interface1::PackedSymmetricMatrix::getArraySharedPtr
services::SharedPtr< DataType > getArraySharedPtr() const
Definition: symmetric_matrix.h:342
daal::data_management::interface1::PackedSymmetricMatrix::getBlockOfColumnValues
services::Status getBlockOfColumnValues(size_t feature_idx, size_t vector_idx, size_t value_num, ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:439
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1273
daal::data_management::interface1::PackedTriangularMatrix::setNumberOfRows
virtual services::Status setNumberOfRows(size_t nDim) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1125
daal::services::daal_memcpy_s
DAAL_EXPORT void daal_memcpy_s(void *dest, size_t numberOfElements, const void *src, size_t count)
daal::data_management::interface1::PackedTriangularMatrix::assign
virtual services::Status assign(double value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1207
daal::data_management::interface1::PackedTriangularMatrix::setArray
services::Status setArray(const services::SharedPtr< DataType > &ptr)
Definition: symmetric_matrix.h:1167
daal::data_management::interface1::PackedTriangularMatrix::assign
virtual services::Status assign(int value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1212
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(DataType *const ptr=0, size_t nDim=0)
Definition: symmetric_matrix.h:124
daal::services::daal_malloc
DAAL_EXPORT void * daal_malloc(size_t size, size_t alignment=DAAL_MALLOC_DEFAULT_ALIGNMENT)
daal::data_management::interface1::PackedSymmetricMatrix
Class that provides methods to access symmetric matrices stored as a one-dimensional array...
Definition: symmetric_matrix.h:106
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:477
daal::data_management::interface1::PackedTriangularMatrix::setNumberOfColumns
virtual services::Status setNumberOfColumns(size_t nDim) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1110
daal::data_management::interface1::NumericTable
Class for a data management component responsible for representation of data in the numeric format...
Definition: numeric_table.h:575
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim)
Definition: symmetric_matrix.h:141
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(size_t nDim, AllocationFlag memoryAllocationFlag)
Definition: symmetric_matrix.h:262
daal::data_management::interface1::PackedTriangularMatrix::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1222
daal::data_management::interface1::PackedSymmetricMatrix::assign
services::Status assign(T value)
Definition: symmetric_matrix.h:382
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:434
daal::data_management::interface1::PackedSymmetricMatrix::create
static services::SharedPtr< PackedSymmetricMatrix > create(DataType *const ptr, size_t nDim, const DataType &constValue, services::Status *stat=NULL)
Definition: symmetric_matrix.h:236
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(DataType *const ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:195
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(int value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:411
daal::data_management::interface1::PackedSymmetricMatrix::create
static services::SharedPtr< PackedSymmetricMatrix > create(DataType *const ptr=0, size_t nDim=0, services::Status *stat=NULL)
Definition: symmetric_matrix.h:169
daal::data_management::interface1::PackedTriangularMatrix::assign
virtual services::Status assign(float value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1202
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(double value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:406
daal::data_management::interface1::PackedSymmetricMatrix::create
static services::SharedPtr< PackedSymmetricMatrix > create(const services::SharedPtr< DataType > &ptr, size_t nDim, const DataType &constValue, services::Status *stat=NULL)
Definition: symmetric_matrix.h:250
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1227
daal::data_management::interface1::PackedTriangularMatrix::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1218
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:459
daal::data_management::interface1::PackedSymmetricMatrix::create
static services::SharedPtr< PackedSymmetricMatrix > create(const services::SharedPtr< DataType > &ptr, size_t nDim, services::Status *stat=NULL)
Definition: symmetric_matrix.h:182
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:473
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:959
daal::data_management::interface1::BlockDescriptor
Base class that manages buffer memory for read/write operations required by numeric tables...
Definition: numeric_table.h:55
daal::algorithms::math::abs::value
Definition: abs_types.h:86
daal::data_management::interface1::NumericTableFeature::setType
void setType()
Definition: data_dictionary.h:94
daal::data_management::interface1::PackedSymmetricMatrix::create
static services::SharedPtr< PackedSymmetricMatrix > create(size_t nDim, AllocationFlag memoryAllocationFlag, services::Status *stat=NULL)
Definition: symmetric_matrix.h:281
daal::services::ErrorIncorrectNumberOfObservations
Definition: error_indexes.h:71
daal::algorithms::implicit_als::training::offset
Definition: implicit_als_training_types.h:148
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:215
daal::data_management::interface1::PackedArrayNumericTableIface::getPackedArray
virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< double > &block)=0
daal::data_management::interface1::PackedTriangularMatrix::assign
services::Status assign(T value)
Definition: symmetric_matrix.h:1183
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:490
daal::data_management::interface1::PackedTriangularMatrix
Class that provides methods to access a packed triangular matrix stored as a one-dimensional array...
Definition: symmetric_matrix.h:855
daal::data_management::interface1::PackedTriangularMatrix::getArraySharedPtr
services::SharedPtr< DataType > getArraySharedPtr() const
Definition: symmetric_matrix.h:1143
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1231
daal::data_management::interface1::PackedTriangularMatrix::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1214
daal::data_management::interface1::PackedSymmetricMatrix::create
static services::SharedPtr< PackedSymmetricMatrix > create(size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue, services::Status *stat=NULL)
Definition: symmetric_matrix.h:316
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:51
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:430
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1290
daal::MemType
MemType
Definition: daal_defines.h:145
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1256
daal::services::ErrorEmptyHomogenNumericTable
Definition: error_indexes.h:162
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(size_t nDim, AllocationFlag memoryAllocationFlag)
Definition: symmetric_matrix.h:1019
daal::data_management::interface1::PackedArrayNumericTableIface::releasePackedArray
virtual services::Status releasePackedArray(BlockDescriptor< double > &block)=0
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1235
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1286
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: symmetric_matrix.h:1063
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(float value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:401