25 #ifndef __SYMMETRIC_MATRIX_H__
26 #define __SYMMETRIC_MATRIX_H__
28 #include "services/daal_memory.h"
29 #include "services/daal_defines.h"
31 #include "data_management/data/data_serialize.h"
32 #include "data_management/data/numeric_table.h"
36 namespace data_management
49 class PackedArrayNumericTableIface
52 virtual ~PackedArrayNumericTableIface()
62 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) = 0;
72 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) = 0;
82 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) = 0;
88 virtual services::Status releasePackedArray(BlockDescriptor<double> &block) = 0;
94 virtual services::Status releasePackedArray(BlockDescriptor<float> &block) = 0;
100 virtual services::Status releasePackedArray(BlockDescriptor<int> &block) = 0;
108 template<NumericTableIface::StorageLayout packedLayout,
typename DataType = DAAL_DATA_TYPE>
109 class DAAL_EXPORT PackedSymmetricMatrix :
public NumericTable,
public PackedArrayNumericTableIface
112 DECLARE_SERIALIZABLE_TAG();
113 DECLARE_SERIALIZABLE_IMPL();
118 typedef DataType baseDataType;
127 PackedSymmetricMatrix( DataType *
const ptr = 0,
size_t nDim = 0 ):
128 NumericTable( nDim, nDim )
130 _layout = packedLayout;
131 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
133 NumericTableFeature df;
134 df.setType<DataType>();
135 this->_status |= _ddict->setAllFeatures(df);
144 PackedSymmetricMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim ):
145 NumericTable( nDim, nDim )
147 _layout = packedLayout;
148 this->_status |= setArray( ptr );
150 NumericTableFeature df;
151 df.setType<DataType>();
152 this->_status |= _ddict->setAllFeatures(df);
155 PackedSymmetricMatrix(
size_t nDim ):
156 NumericTable( nDim, nDim )
158 _layout = packedLayout;
160 NumericTableFeature df;
161 df.setType<DataType>();
162 this->_status |= _ddict->setAllFeatures(df);
172 static services::SharedPtr<PackedSymmetricMatrix> create(DataType *
const ptr = 0,
size_t nDim = 0,
173 services::Status* stat = NULL)
175 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, stat);
185 static services::SharedPtr<PackedSymmetricMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
186 services::Status* stat = NULL)
188 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), ptr, nDim);
198 PackedSymmetricMatrix( DataType *
const ptr,
size_t nDim,
const DataType &constValue ):
199 NumericTable( nDim, nDim )
201 _layout = packedLayout;
202 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
204 NumericTableFeature df;
205 df.setType<DataType>();
206 this->_status |= _ddict->setAllFeatures(df);
208 this->_status |= assign( constValue );
218 PackedSymmetricMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue ) :
219 NumericTable( nDim, nDim )
221 _layout = packedLayout;
222 this->_status |= setArray( ptr );
224 NumericTableFeature df;
225 df.setType<DataType>();
226 this->_status |= _ddict->setAllFeatures(df);
228 this->_status |= assign( constValue );
239 static services::SharedPtr<PackedSymmetricMatrix> create(DataType *
const ptr,
size_t nDim,
const DataType &constValue,
240 services::Status* stat = NULL)
242 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, constValue, stat);
253 static services::SharedPtr<PackedSymmetricMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
const DataType &constValue,
254 services::Status* stat = NULL)
256 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), ptr, nDim, constValue);
265 PackedSymmetricMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag ):
266 NumericTable( nDim, nDim )
268 _layout = packedLayout;
270 NumericTableFeature df;
271 df.setType<DataType>();
272 this->_status |= _ddict->setAllFeatures(df);
274 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
284 static services::SharedPtr<PackedSymmetricMatrix> create(
size_t nDim, AllocationFlag memoryAllocationFlag,
285 services::Status* stat = NULL)
287 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), nDim, memoryAllocationFlag);
297 PackedSymmetricMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
298 const DataType &constValue ):
299 NumericTable( nDim, nDim )
301 _layout = packedLayout;
303 NumericTableFeature df;
304 df.setType<DataType>();
305 this->_status |= _ddict->setAllFeatures(df);
307 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
308 this->_status |= assign(constValue);
319 static services::SharedPtr<PackedSymmetricMatrix> create(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
320 const DataType &constValue, services::Status* stat = NULL)
322 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), \
323 nDim, memoryAllocationFlag, constValue);
327 virtual ~PackedSymmetricMatrix()
329 freeDataMemoryImpl();
336 DataType *getArray()
const
338 return (DataType*)_ptr.get();
345 services::SharedPtr<DataType> getArraySharedPtr()
const
347 return services::reinterpretPointerCast<DataType, byte>(_ptr);
354 services::Status setArray( DataType *
const ptr )
356 freeDataMemoryImpl();
358 return services::Status(services::ErrorEmptyHomogenNumericTable);
360 _ptr = services::SharedPtr<byte>((byte*)ptr, services::EmptyDeleter());
361 _memStatus = userAllocated;
362 return services::Status();
369 services::Status setArray(
const services::SharedPtr<DataType>& ptr )
371 freeDataMemoryImpl();
373 return services::Status(services::ErrorEmptyHomogenNumericTable);
375 _ptr = services::reinterpretPointerCast<byte, DataType>(ptr);
376 _memStatus = userAllocated;
377 return services::Status();
384 template <
typename T>
385 services::Status assign(T value)
387 if( _memStatus == notAllocated )
388 return services::Status(services::ErrorEmptyHomogenNumericTable);
390 size_t nDim = getNumberOfColumns();
392 DataType * ptr = (DataType*)_ptr.get();
393 DataType valueDataType = (DataType)value;
394 for(
size_t i = 0; i < (nDim * (nDim + 1)) / 2 ; i++ )
396 ptr[i] = valueDataType;
398 return services::Status();
404 virtual services::Status assign(
float value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
409 virtual services::Status assign(
double value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
414 virtual services::Status assign(
int value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
416 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
418 return getTBlock<double>(vector_idx, vector_num, rwflag, block);
420 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
422 return getTBlock<float>(vector_idx, vector_num, rwflag, block);
424 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
426 return getTBlock<int>(vector_idx, vector_num, rwflag, block);
429 services::Status releaseBlockOfRows(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
431 return releaseTBlock<double>(block);
433 services::Status releaseBlockOfRows(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
435 return releaseTBlock<float>(block);
437 services::Status releaseBlockOfRows(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
439 return releaseTBlock<int>(block);
442 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
443 ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
445 return getTFeature<double>(feature_idx, vector_idx, value_num, rwflag, block);
447 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
448 ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
450 return getTFeature<float>(feature_idx, vector_idx, value_num, rwflag, block);
452 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
453 ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
455 return getTFeature<int>(feature_idx, vector_idx, value_num, rwflag, block);
458 services::Status releaseBlockOfColumnValues(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
460 return releaseTFeature<double>(block);
462 services::Status releaseBlockOfColumnValues(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
464 return releaseTFeature<float>(block);
466 services::Status releaseBlockOfColumnValues(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
468 return releaseTFeature<int>(block);
472 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
474 return getTPackedArray<double>(rwflag, block);
476 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
478 return getTPackedArray<float>(rwflag, block);
480 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
482 return getTPackedArray<int>(rwflag, block);
485 services::Status releasePackedArray(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
487 return releaseTPackedArray<double>(block);
489 services::Status releasePackedArray(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
491 return releaseTPackedArray<float>(block);
493 services::Status releasePackedArray(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
495 return releaseTPackedArray<int>(block);
499 services::SharedPtr<byte> _ptr;
501 PackedSymmetricMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim, services::Status &st):
502 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
504 _layout = packedLayout;
505 st |= setArray( ptr );
507 NumericTableFeature df;
508 df.setType<DataType>();
509 st |= _ddict->setAllFeatures(df);
512 PackedSymmetricMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue,
513 services::Status &st) :
514 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
516 _layout = packedLayout;
517 st |= setArray( ptr );
519 NumericTableFeature df;
520 df.setType<DataType>();
521 st |= _ddict->setAllFeatures(df);
523 st |= assign( constValue );
526 PackedSymmetricMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag, services::Status &st):
527 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
529 _layout = packedLayout;
531 NumericTableFeature df;
532 df.setType<DataType>();
533 st |= _ddict->setAllFeatures(df);
535 if( memoryAllocationFlag == doAllocate ) st |= allocateDataMemoryImpl();
538 PackedSymmetricMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
539 const DataType &constValue, services::Status &st):
540 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
542 _layout = packedLayout;
544 NumericTableFeature df;
545 df.setType<DataType>();
546 st |= _ddict->setAllFeatures(df);
548 if( memoryAllocationFlag == doAllocate ) st |= allocateDataMemoryImpl();
549 st |= assign(constValue);
552 services::Status allocateDataMemoryImpl(daal::MemType type = daal::dram) DAAL_C11_OVERRIDE
554 freeDataMemoryImpl();
556 size_t nDim = getNumberOfColumns();
557 size_t size = (nDim * (nDim + 1)) / 2;
560 return services::Status(getNumberOfColumns() == 0 ? services::ErrorIncorrectNumberOfFeatures :
561 services::ErrorIncorrectNumberOfObservations);
563 _ptr = services::SharedPtr<byte>((byte *)daal::services::daal_malloc( size *
sizeof(DataType) ), services::ServiceDeleter());
566 return services::Status(services::ErrorMemoryAllocationFailed);
568 _memStatus = internallyAllocated;
569 return services::Status();
572 void freeDataMemoryImpl() DAAL_C11_OVERRIDE
575 _memStatus = notAllocated;
579 template<
typename Archive,
bool onDeserialize>
580 services::Status serialImpl( Archive *arch )
582 NumericTable::serialImpl<Archive, onDeserialize>( arch );
586 allocateDataMemoryImpl();
589 size_t nDim = getNumberOfColumns();
590 size_t size = (nDim * (nDim + 1)) / 2;
592 arch->set( (DataType*)_ptr.get(), size );
594 return services::Status();
598 template<
typename T1,
typename T2>
599 services::Status internal_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
601 if( IsSameType<T1, T2>::value )
603 if( src != (T1 *)dst )
605 int result = daal::services::internal::daal_memcpy_s(dst, n * p *
sizeof(T1), src, n * p *
sizeof(T1));
606 DAAL_CHECK(!result, services::ErrorMemoryCopyFailedInternal);
613 for(i = 0; i < n; i++)
615 for(j = 0; j < p; j++)
617 dst[i * p + j] =
static_cast<T2
>(src[i * p + j]);
621 return services::Status();
624 template<
typename T1,
typename T2>
625 void internal_set_col_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
629 for(i = 0; i < n; i++)
631 dst[i * p] =
static_cast<T2
>(src[i]);
636 baseDataType &getBaseValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
640 if( packedLayout == upperPackedSymmetricMatrix )
642 if( colIdx < rowIdx )
650 offset = (2 * dim - rowIdx) * (rowIdx + 1) / 2 - (dim - colIdx);
654 if( colIdx > rowIdx )
662 offset = (2 + rowIdx) * (rowIdx + 1) / 2 - (rowIdx - colIdx) - 1;
664 return *((DataType*)_ptr.get() + offset);
667 template <
typename T>
668 T getValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
670 return static_cast<T
>( getBaseValue( dim, rowIdx, colIdx ) );
673 template <
typename T>
674 services::Status setValue(
size_t dim,
size_t rowIdx,
size_t colIdx, T value )
676 getBaseValue( dim, rowIdx, colIdx ) =
static_cast<baseDataType
>( value );
677 return services::Status();
680 template <
typename T>
681 services::Status getTBlock(
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
683 size_t nDim = getNumberOfColumns();
684 block.setDetails( 0, idx, rwFlag );
688 block.resizeBuffer( nDim, 0 );
689 return services::Status();
692 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
694 if( !block.resizeBuffer( nDim, nrows ) )
695 return services::Status(services::ErrorMemoryAllocationFailed);
697 if((rwFlag & (
int)readOnly))
699 T *buffer = block.getBlockPtr();
701 for(
size_t iRow = 0; iRow < nrows; iRow++)
703 for(
size_t iCol = 0; iCol < nDim; iCol++)
705 buffer[iRow * nDim + iCol] = getValue<T>(nDim, iRow + idx, iCol);
709 return services::Status();
712 template <
typename T>
713 services::Status releaseTBlock( BlockDescriptor<T> &block )
716 if(block.getRWFlag() & (int)writeOnly)
718 size_t nDim = getNumberOfColumns();
719 size_t nrows = block.getNumberOfRows();
720 size_t idx = block.getRowsOffset();
721 T *buffer = block.getBlockPtr();
723 for(
size_t iRow = 0; iRow < nrows; iRow++ )
725 for(
size_t iCol = 0; iCol < nDim; iCol++ )
727 s |= setValue<T>( nDim, idx + iRow, iCol, buffer[ iRow * nDim + iCol ] );
735 template <
typename T>
736 services::Status getTFeature(
size_t feat_idx,
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
738 size_t nDim = getNumberOfColumns();
739 block.setDetails( feat_idx, idx, rwFlag );
743 block.resizeBuffer( nDim, 0 );
744 return services::Status();
747 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
749 if( !block.resizeBuffer( 1, nrows ) )
750 return services::Status();
752 if((block.getRWFlag() & (int)readOnly))
754 T *buffer = block.getBlockPtr();
756 for(
size_t iRow = 0; iRow < nrows; iRow++)
758 buffer[iRow] = getValue<T>(nDim, iRow + idx, feat_idx);
761 return services::Status();
764 template <
typename T>
765 services::Status releaseTFeature( BlockDescriptor<T> &block )
768 if (block.getRWFlag() & (int)writeOnly)
770 size_t nDim = getNumberOfColumns();
771 size_t nrows = block.getNumberOfRows();
772 size_t idx = block.getRowsOffset();
773 size_t feat_idx = block.getColumnsOffset();
774 T *buffer = block.getBlockPtr();
776 for(
size_t iRow = 0; iRow < nrows; iRow++ )
778 s |= setValue<T>( nDim, iRow + idx, feat_idx, buffer[ iRow ] );
785 template <
typename T>
786 services::Status getTPackedArray(
int rwFlag, BlockDescriptor<T> &block )
788 size_t nDim = getNumberOfColumns();
789 block.setDetails( 0, 0, rwFlag );
791 size_t nSize = (nDim * (nDim + 1)) / 2;
793 if( IsSameType<T, DataType>::value )
795 block.setPtr( &_ptr, _ptr.get(), 1, nSize );
796 return services::Status();
799 if( !block.resizeBuffer( 1, nSize ) )
return services::Status();
801 if( !(rwFlag & (
int)readOnly) )
return services::Status();
803 T *buffer = block.getBlockPtr();
804 DataType * ptr = (DataType*) _ptr.get();
805 for(
size_t i = 0; i < nSize; i++ )
807 buffer[ i ] =
static_cast<T
>(*(ptr + i));
809 return services::Status();
812 template <
typename T>
813 services::Status releaseTPackedArray( BlockDescriptor<T> &block )
815 if( (block.getRWFlag() & (int)writeOnly) && !IsSameType<T, DataType>::value )
817 size_t nDim = getNumberOfColumns();
818 size_t nSize = (nDim * (nDim + 1)) / 2;
819 T *buffer = block.getBlockPtr();
820 DataType * ptr = (DataType*) _ptr.get();
822 for(
size_t i = 0; i < nSize; i++ )
824 *(ptr + i) = static_cast<baseDataType>(buffer[ i ]);
828 return services::Status();
831 virtual services::Status setNumberOfColumnsImpl(
size_t nDim) DAAL_C11_OVERRIDE
833 if( _ddict->getNumberOfFeatures() != nDim )
835 _ddict->setNumberOfFeatures( nDim );
837 NumericTableFeature df;
838 df.setType<DataType>();
839 _ddict->setAllFeatures(df);
843 return services::Status();
846 virtual services::Status setNumberOfRowsImpl(
size_t nDim) DAAL_C11_OVERRIDE
848 setNumberOfColumnsImpl( nDim );
850 return services::Status();
859 template<NumericTableIface::StorageLayout packedLayout,
typename DataType = DAAL_DATA_TYPE>
860 class DAAL_EXPORT PackedTriangularMatrix :
public NumericTable,
public PackedArrayNumericTableIface
863 DECLARE_SERIALIZABLE_TAG();
868 typedef DataType baseDataType;
876 PackedTriangularMatrix( DataType *
const ptr = 0,
size_t nDim = 0 ):
877 NumericTable( nDim, nDim )
879 _layout = packedLayout;
880 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
882 NumericTableFeature df;
883 df.setType<DataType>();
884 this->_status |= _ddict->setAllFeatures(df);
892 PackedTriangularMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim ):
893 NumericTable( nDim, nDim )
895 _layout = packedLayout;
896 this->_status |= setArray( ptr );
898 NumericTableFeature df;
899 df.setType<DataType>();
900 this->_status |= _ddict->setAllFeatures(df);
903 PackedTriangularMatrix(
size_t nDim ):
904 NumericTable( nDim, nDim )
906 _layout = packedLayout;
908 NumericTableFeature df;
909 df.setType<DataType>();
910 this->_status |= _ddict->setAllFeatures(df);
913 static services::SharedPtr<PackedTriangularMatrix> create(DataType *
const ptr = 0,
size_t nDim = 0,
914 services::Status* stat = NULL)
916 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, stat);
919 static services::SharedPtr<PackedTriangularMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
920 services::Status* stat = NULL)
922 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
925 services::Status s = ntPtr->setArray(ptr);
927 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
934 *stat = services::Status(services::ErrorMemoryAllocationFailed);
945 PackedTriangularMatrix( DataType *
const ptr,
size_t nDim,
const DataType &constValue ):
946 NumericTable( nDim, nDim )
948 _layout = packedLayout;
949 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
951 NumericTableFeature df;
952 df.setType<DataType>();
953 this->_status |= _ddict->setAllFeatures(df);
955 this->_status |= assign( constValue );
964 PackedTriangularMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue ) :
965 NumericTable( nDim, nDim )
967 _layout = packedLayout;
968 this->_status |= setArray( ptr );
970 NumericTableFeature df;
971 df.setType<DataType>();
972 this->_status |= _ddict->setAllFeatures(df);
974 this->_status |= assign( constValue );
977 static services::SharedPtr<PackedTriangularMatrix> create(DataType *
const ptr,
size_t nDim,
const DataType &constValue,
978 services::Status* stat = NULL)
980 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
983 services::Status s = ntPtr->setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
984 s.add(ntPtr->assign(constValue));
986 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
993 *stat = services::Status(services::ErrorMemoryAllocationFailed);
998 static services::SharedPtr<PackedTriangularMatrix> create(services::SharedPtr<DataType> &ptr,
size_t nDim,
const DataType &constValue,
999 services::Status* stat = NULL)
1001 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1004 services::Status s = ntPtr->setArray(ptr);
1005 s.add(ntPtr->assign(constValue));
1007 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1014 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1024 PackedTriangularMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag ):
1025 NumericTable( nDim, nDim )
1027 _layout = packedLayout;
1029 NumericTableFeature df;
1030 df.setType<DataType>();
1031 this->_status |= _ddict->setAllFeatures(df);
1033 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
1036 static services::SharedPtr<PackedTriangularMatrix> create(
size_t nDim, AllocationFlag memoryAllocationFlag,
1037 services::Status* stat = NULL)
1039 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1043 if(memoryAllocationFlag == doAllocate)
1045 s = ntPtr->allocateDataMemoryImpl();
1047 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1050 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1057 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1068 PackedTriangularMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
1069 const DataType &constValue ):
1070 NumericTable( nDim, nDim )
1072 _layout = packedLayout;
1074 NumericTableFeature df;
1075 df.setType<DataType>();
1076 this->_status |= _ddict->setAllFeatures(df);
1078 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
1079 this->_status |= assign(constValue);
1082 static services::SharedPtr<PackedTriangularMatrix> create(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
1083 const DataType &constValue, services::Status* stat = NULL)
1085 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1089 if(memoryAllocationFlag == doAllocate)
1091 s = ntPtr->allocateDataMemoryImpl();
1092 s.add(ntPtr->assign(constValue));
1094 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1097 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1104 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1110 virtual ~PackedTriangularMatrix()
1112 freeDataMemoryImpl();
1115 virtual services::Status setNumberOfColumns(
size_t nDim) DAAL_C11_OVERRIDE
1117 if( _ddict->getNumberOfFeatures() != nDim )
1119 _ddict->setNumberOfFeatures( nDim );
1121 NumericTableFeature df;
1122 df.setType<DataType>();
1123 _ddict->setAllFeatures(df);
1127 return services::Status();
1130 virtual services::Status setNumberOfRows(
size_t nDim) DAAL_C11_OVERRIDE
1132 return setNumberOfColumns( nDim );
1139 DataType *getArray()
const
1141 return (DataType*)_ptr.get();
1148 services::SharedPtr<DataType> getArraySharedPtr()
const
1150 return services::reinterpretPointerCast<DataType, byte>(_ptr);
1157 services::Status setArray( DataType *
const ptr )
1159 freeDataMemoryImpl();
1161 return services::Status(services::ErrorEmptyHomogenNumericTable);
1163 _ptr = services::SharedPtr<byte>((DataType*)ptr, services::EmptyDeleter());
1164 _memStatus = userAllocated;
1165 return services::Status();
1172 services::Status setArray(
const services::SharedPtr<DataType>& ptr )
1174 freeDataMemoryImpl();
1176 return services::Status(services::ErrorEmptyHomogenNumericTable);
1178 _ptr = services::reinterpretPointerCast<byte, DataType>(ptr);
1179 _memStatus = userAllocated;
1180 return services::Status();
1187 template <
typename T>
1188 services::Status assign(T value)
1190 if( _memStatus == notAllocated )
1191 return services::Status(services::ErrorEmptyHomogenNumericTable);
1193 size_t nDim = getNumberOfColumns();
1195 DataType * ptr = (DataType*)_ptr.get();
1196 DataType valueDataType = (DataType)value;
1197 for(
size_t i = 0; i < (nDim * (nDim + 1)) / 2 ; i++ )
1199 ptr[i] = valueDataType;
1201 return services::Status();
1207 virtual services::Status assign(
float value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1212 virtual services::Status assign(
double value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1217 virtual services::Status assign(
int value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1219 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1221 return getTBlock<double>(vector_idx, vector_num, rwflag, block);
1223 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1225 return getTBlock<float>(vector_idx, vector_num, rwflag, block);
1227 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1229 return getTBlock<int>(vector_idx, vector_num, rwflag, block);
1232 services::Status releaseBlockOfRows(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1234 return releaseTBlock<double>(block);
1236 services::Status releaseBlockOfRows(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1238 return releaseTBlock<float>(block);
1240 services::Status releaseBlockOfRows(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1242 return releaseTBlock<int>(block);
1245 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
1246 ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1248 return getTFeature<double>(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<float> &block) DAAL_C11_OVERRIDE
1253 return getTFeature<float>(feature_idx, vector_idx, value_num, rwflag, block);
1255 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
1256 ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1258 return getTFeature<int>(feature_idx, vector_idx, value_num, rwflag, block);
1261 services::Status releaseBlockOfColumnValues(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1263 return releaseTFeature<double>(block);
1265 services::Status releaseBlockOfColumnValues(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1267 return releaseTFeature<float>(block);
1269 services::Status releaseBlockOfColumnValues(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1271 return releaseTFeature<int>(block);
1274 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1276 return getTPackedArray<double>(rwflag, block);
1278 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1280 return getTPackedArray<float>(rwflag, block);
1282 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1284 return getTPackedArray<int>(rwflag, block);
1287 services::Status releasePackedArray(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1289 return releaseTPackedArray<double>(block);
1291 services::Status releasePackedArray(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1293 return releaseTPackedArray<float>(block);
1295 services::Status releasePackedArray(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1297 return releaseTPackedArray<int>(block);
1301 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
1303 serialImpl<InputDataArchive, false>( arch );
1305 return services::Status();
1309 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
1311 serialImpl<const OutputDataArchive, true>( arch );
1313 return services::Status();
1317 services::SharedPtr<byte> _ptr;
1319 services::Status allocateDataMemoryImpl(daal::MemType type = daal::dram) DAAL_C11_OVERRIDE
1321 freeDataMemoryImpl();
1323 size_t nDim = getNumberOfColumns();
1324 size_t size = (nDim * (nDim + 1)) / 2;
1327 return services::Status(getNumberOfColumns() == 0 ? services::ErrorIncorrectNumberOfFeatures :
1328 services::ErrorIncorrectNumberOfObservations);
1330 _ptr = services::SharedPtr<byte>((byte *)daal::services::daal_malloc( size *
sizeof(DataType) ), services::ServiceDeleter());
1333 return services::Status(services::ErrorMemoryAllocationFailed);
1335 _memStatus = internallyAllocated;
1336 return services::Status();
1339 void freeDataMemoryImpl() DAAL_C11_OVERRIDE
1342 _memStatus = notAllocated;
1346 template<
typename Archive,
bool onDeserialize>
1347 services::Status serialImpl( Archive *arch )
1349 NumericTable::serialImpl<Archive, onDeserialize>( arch );
1353 allocateDataMemoryImpl();
1356 size_t nDim = getNumberOfColumns();
1357 size_t size = (nDim * (nDim + 1)) / 2;
1359 arch->set( (DataType*)_ptr.get(), size );
1361 return services::Status();
1365 template<
typename T1,
typename T2>
1366 services::Status internal_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
1368 if( IsSameType<T1, T2>::value )
1370 if( src != (T1 *)dst )
1372 int result = daal::services::internal::daal_memcpy_s(dst, n * p *
sizeof(T1), src, n * p *
sizeof(T1));
1373 DAAL_CHECK(!result, services::ErrorMemoryCopyFailedInternal);
1380 for(i = 0; i < n; i++)
1382 for(j = 0; j < p; j++)
1384 dst[i * p + j] =
static_cast<T2
>(src[i * p + j]);
1388 return services::Status();
1391 template<
typename T1,
typename T2>
1392 void internal_set_col_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
1396 for(i = 0; i < n; i++)
1398 dst[i * p] =
static_cast<T2
>(src[i]);
1403 baseDataType &getBaseValue(
size_t dim,
size_t rowIdx,
size_t colIdx, baseDataType &zero )
1407 if( packedLayout == upperPackedTriangularMatrix )
1409 if( colIdx < rowIdx )
1414 offset = (2 * dim - rowIdx) * (rowIdx + 1) / 2 - (dim - colIdx);
1418 if( colIdx > rowIdx )
1423 offset = (2 + rowIdx) * (rowIdx + 1) / 2 - (rowIdx - colIdx) - 1;
1425 return *((DataType*)_ptr.get() + offset);
1428 template <
typename T>
1429 T getValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
1431 baseDataType zero = (baseDataType)0;
1432 return static_cast<T
>( getBaseValue( dim, rowIdx, colIdx, zero ) );
1435 template <
typename T>
1436 services::Status setValue(
size_t dim,
size_t rowIdx,
size_t colIdx, T value )
1438 baseDataType zero = (baseDataType)0;
1439 getBaseValue( dim, rowIdx, colIdx, zero ) =
static_cast<baseDataType
>( value );
1440 return services::Status();
1443 template <
typename T>
1444 services::Status getTBlock(
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
1446 size_t nDim = getNumberOfColumns();
1447 block.setDetails( 0, idx, rwFlag );
1451 block.resizeBuffer( nDim, 0 );
1452 return services::Status();
1455 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
1457 if( !block.resizeBuffer( nDim, nrows ) )
1458 return services::Status(services::ErrorMemoryAllocationFailed);
1460 if((rwFlag & (
int)readOnly))
1462 T *buffer = block.getBlockPtr();
1464 for(
size_t iRow = 0; iRow < nrows; iRow++)
1466 for(
size_t iCol = 0; iCol < nDim; iCol++)
1468 buffer[iRow * nDim + iCol] = getValue<T>(nDim, iRow + idx, iCol);
1472 return services::Status();
1475 template <
typename T>
1476 services::Status releaseTBlock( BlockDescriptor<T> &block )
1479 if(block.getRWFlag() & (int)writeOnly)
1481 size_t nDim = getNumberOfColumns();
1482 size_t nrows = block.getNumberOfRows();
1483 size_t idx = block.getRowsOffset();
1484 T *buffer = block.getBlockPtr();
1486 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1488 for(
size_t iCol = 0; iCol < nDim; iCol++ )
1490 s |= setValue<T>( nDim, iRow + idx, iCol, buffer[ iRow * nDim + iCol ] );
1498 template <
typename T>
1499 services::Status getTFeature(
size_t feat_idx,
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
1501 size_t nDim = getNumberOfColumns();
1502 block.setDetails( feat_idx, idx, rwFlag );
1506 block.resizeBuffer( nDim, 0 );
1507 return services::Status();
1510 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
1512 if( !block.resizeBuffer( 1, nrows ) )
1513 return services::Status();
1515 if((block.getRWFlag() & (int)readOnly))
1517 T *buffer = block.getBlockPtr();
1518 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1520 buffer[ iRow ] = getValue<T>( nDim, iRow + idx, feat_idx );
1523 return services::Status();
1526 template <
typename T>
1527 services::Status releaseTFeature( BlockDescriptor<T> &block )
1530 if (block.getRWFlag() & (int)writeOnly)
1532 size_t nDim = getNumberOfColumns();
1533 size_t nrows = block.getNumberOfRows();
1534 size_t idx = block.getRowsOffset();
1535 size_t feat_idx = block.getColumnsOffset();
1536 T *buffer = block.getBlockPtr();
1538 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1540 s |= setValue<T>( nDim, iRow + idx, feat_idx, buffer[ iRow ] );
1547 template <
typename T>
1548 services::Status getTPackedArray(
int rwFlag, BlockDescriptor<T> &block )
1550 size_t nDim = getNumberOfColumns();
1551 block.setDetails( 0, 0, rwFlag );
1553 size_t nSize = (nDim * (nDim + 1)) / 2;
1555 if( IsSameType<T, DataType>::value )
1557 block.setPtr( &_ptr, _ptr.get(), 1, nSize );
1558 return services::Status();
1561 if( !block.resizeBuffer( 1, nSize ) )
return services::Status();
1563 if( !(rwFlag & (
int)readOnly) )
return services::Status();
1565 T *buffer = block.getBlockPtr();
1566 DataType * ptr = (DataType*)_ptr.get();
1567 for(
size_t i = 0; i < nSize; i++ )
1569 buffer[ i ] =
static_cast<T
>(*(ptr + i));
1571 return services::Status();
1574 template <
typename T>
1575 services::Status releaseTPackedArray( BlockDescriptor<T> &block )
1577 if( (block.getRWFlag() & (int)writeOnly) && !IsSameType<T, DataType>::value )
1579 size_t nDim = getNumberOfColumns();
1580 size_t nSize = (nDim * (nDim + 1)) / 2;
1581 T *buffer = block.getBlockPtr();
1582 DataType * ptr = (DataType*)_ptr.get();
1584 for(
size_t i = 0; i < nSize; i++ )
1586 *(ptr + i) = static_cast<baseDataType>(buffer[ i ]);
1590 return services::Status();
1593 virtual services::Status setNumberOfColumnsImpl(
size_t nDim) DAAL_C11_OVERRIDE
1595 if( _ddict->getNumberOfFeatures() != nDim )
1597 _ddict->setNumberOfFeatures( nDim );
1599 NumericTableFeature df;
1600 df.setType<DataType>();
1601 _ddict->setAllFeatures(df);
1605 return services::Status();
1608 virtual services::Status setNumberOfRowsImpl(
size_t nDim) DAAL_C11_OVERRIDE
1610 setNumberOfColumnsImpl( nDim );
1612 return services::Status();
1617 using interface1::PackedArrayNumericTableIface;
1618 using interface1::PackedSymmetricMatrix;
1619 using interface1::PackedTriangularMatrix;
daal::data_management::interface1::PackedTriangularMatrix::assign
virtual services::Status assign(int value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1217
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:319
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:172
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:1227
daal::data_management::interface1::PackedTriangularMatrix::setNumberOfRows
virtual services::Status setNumberOfRows(size_t nDim) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1130
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(size_t nDim, AllocationFlag memoryAllocationFlag)
Definition: symmetric_matrix.h:1024
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(float value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:404
daal::data_management::interface1::PackedSymmetricMatrix::getArraySharedPtr
services::SharedPtr< DataType > getArraySharedPtr() const
Definition: symmetric_matrix.h:345
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:452
daal::data_management::interface1::PackedSymmetricMatrix::getArray
DataType * getArray() const
Definition: symmetric_matrix.h:336
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(DataType *const ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:198
daal::data_management::interface1::PackedTriangularMatrix::getArraySharedPtr
services::SharedPtr< DataType > getArraySharedPtr() const
Definition: symmetric_matrix.h:1148
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:218
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:253
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1265
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:447
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:462
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:239
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:1250
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: symmetric_matrix.h:297
daal::services::ErrorIncorrectNumberOfObservations
Definition: error_indexes.h:73
daal::data_management::interface1::PackedSymmetricMatrix::setArray
services::Status setArray(DataType *const ptr)
Definition: symmetric_matrix.h:354
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:860
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:424
daal::data_management::interface1::NumericTable
Class for a data management component responsible for representation of data in the numeric format...
Definition: numeric_table.h:577
daal::data_management::interface1::PackedTriangularMatrix::setArray
services::Status setArray(DataType *const ptr)
Definition: symmetric_matrix.h:1157
daal::data_management::interface1::PackedTriangularMatrix::getArray
DataType * getArray() const
Definition: symmetric_matrix.h:1139
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:964
daal::data_management::interface1::PackedArrayNumericTableIface
Abstract class that defines the interface of symmetric matrices stored as a one-dimensional array...
Definition: symmetric_matrix.h:49
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:476
daal::data_management::interface1::NumericTableFeature::setType
void setType()
Definition: data_dictionary.h:96
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(DataType *const ptr=0, size_t nDim=0)
Definition: symmetric_matrix.h:876
daal::data_management::interface1::PackedSymmetricMatrix::create
static services::SharedPtr< PackedSymmetricMatrix > create(size_t nDim, AllocationFlag memoryAllocationFlag, services::Status *stat=NULL)
Definition: symmetric_matrix.h:284
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1278
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1282
daal::data_management::interface1::PackedTriangularMatrix::setNumberOfColumns
virtual services::Status setNumberOfColumns(size_t nDim) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1115
daal::data_management::interface1::PackedTriangularMatrix::assign
virtual services::Status assign(double value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1212
daal::MemType
MemType
Definition: daal_defines.h:147
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:1188
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:480
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:420
daal::data_management::interface1::PackedSymmetricMatrix::setArray
services::Status setArray(const services::SharedPtr< DataType > &ptr)
Definition: symmetric_matrix.h:369
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:1223
daal::data_management::interface1::PackedArrayNumericTableIface::releasePackedArray
virtual services::Status releasePackedArray(BlockDescriptor< double > &block)=0
daal::data_management::interface1::PackedTriangularMatrix::setArray
services::Status setArray(const services::SharedPtr< DataType > &ptr)
Definition: symmetric_matrix.h:1172
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(double value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:409
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(DataType *const ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:945
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(DataType *const ptr=0, size_t nDim=0)
Definition: symmetric_matrix.h:127
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:489
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1291
daal::services::daal_memcpy_s
DAAL_DEPRECATED DAAL_EXPORT void daal_memcpy_s(void *dest, size_t numberOfElements, const void *src, size_t count)
daal::data_management::interface1::NumericTableIface::AllocationFlag
AllocationFlag
Enumeration to specify whether the Numeric Table must allocate memory.
Definition: numeric_table.h:285
daal::data_management::interface1::PackedSymmetricMatrix::baseDataType
DataType baseDataType
Definition: symmetric_matrix.h:118
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1287
daal::data_management::interface1::PackedSymmetricMatrix::assign
services::Status assign(T value)
Definition: symmetric_matrix.h:385
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:185
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:485
daal::data_management::interface1::PackedSymmetricMatrix
Class that provides methods to access symmetric matrices stored as a one-dimensional array...
Definition: symmetric_matrix.h:109
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(size_t nDim, AllocationFlag memoryAllocationFlag)
Definition: symmetric_matrix.h:265
daal::dram
Definition: daal_defines.h:149
daal::services::daal_malloc
DAAL_EXPORT void * daal_malloc(size_t size, size_t alignment=DAAL_MALLOC_DEFAULT_ALIGNMENT)
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1232
daal::data_management::interface1::PackedTriangularMatrix::baseDataType
DataType baseDataType
Definition: symmetric_matrix.h:868
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1274
daal::data_management::interface1::BlockDescriptor
Base class that manages buffer memory for read/write operations required by numeric tables...
Definition: numeric_table.h:57
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:466
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1269
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim)
Definition: symmetric_matrix.h:144
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:150
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:437
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:1219
daal::services::ErrorIncorrectNumberOfFeatures
Definition: error_indexes.h:72
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:429
daal::services::ErrorMemoryCopyFailedInternal
Definition: error_indexes.h:152
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:53
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1240
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:493
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1295
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1236
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: symmetric_matrix.h:1068
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:442
daal::data_management::interface1::InputDataArchive
Provides methods to create an archive data object (serialized) and access this object.
Definition: data_archive.h:725
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:416
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(int value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:414
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:458
daal::algorithms::math::abs::value
Definition: abs_types.h:88
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:472
daal::algorithms::implicit_als::training::offset
Definition: implicit_als_training_types.h:150
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1261
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:1245
daal::services::ErrorEmptyHomogenNumericTable
Definition: error_indexes.h:166
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim)
Definition: symmetric_matrix.h:892
daal::data_management::interface1::PackedTriangularMatrix::assign
virtual services::Status assign(float value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1207
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:433
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:1255