49 #ifndef __SYMMETRIC_MATRIX_H__
50 #define __SYMMETRIC_MATRIX_H__
52 #include "data_management/data/numeric_table.h"
53 #include "services/daal_memory.h"
54 #include "services/daal_defines.h"
55 #include "data_management/data/data_serialize.h"
59 namespace data_management
72 class PackedArrayNumericTableIface
75 virtual ~PackedArrayNumericTableIface()
85 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) = 0;
95 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) = 0;
105 virtual services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) = 0;
111 virtual services::Status releasePackedArray(BlockDescriptor<double> &block) = 0;
117 virtual services::Status releasePackedArray(BlockDescriptor<float> &block) = 0;
123 virtual services::Status releasePackedArray(BlockDescriptor<int> &block) = 0;
131 template<NumericTableIface::StorageLayout packedLayout,
typename DataType = DAAL_DATA_TYPE>
132 class DAAL_EXPORT PackedSymmetricMatrix :
public NumericTable,
public PackedArrayNumericTableIface
135 DECLARE_SERIALIZABLE_TAG();
136 DECLARE_SERIALIZABLE_IMPL();
141 typedef DataType baseDataType;
150 PackedSymmetricMatrix( DataType *
const ptr = 0,
size_t nDim = 0 ):
151 NumericTable( nDim, nDim )
153 _layout = packedLayout;
154 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
156 NumericTableFeature df;
157 df.setType<DataType>();
158 this->_status |= _ddict->setAllFeatures(df);
167 PackedSymmetricMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim ):
168 NumericTable( nDim, nDim )
170 _layout = packedLayout;
171 this->_status |= setArray( ptr );
173 NumericTableFeature df;
174 df.setType<DataType>();
175 this->_status |= _ddict->setAllFeatures(df);
178 PackedSymmetricMatrix(
size_t nDim ):
179 NumericTable( nDim, nDim )
181 _layout = packedLayout;
183 NumericTableFeature df;
184 df.setType<DataType>();
185 this->_status |= _ddict->setAllFeatures(df);
195 static services::SharedPtr<PackedSymmetricMatrix> create(DataType *
const ptr = 0,
size_t nDim = 0,
196 services::Status* stat = NULL)
198 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, stat);
208 static services::SharedPtr<PackedSymmetricMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
209 services::Status* stat = NULL)
211 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), ptr, nDim);
221 PackedSymmetricMatrix( DataType *
const ptr,
size_t nDim,
const DataType &constValue ):
222 NumericTable( nDim, nDim )
224 _layout = packedLayout;
225 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
227 NumericTableFeature df;
228 df.setType<DataType>();
229 this->_status |= _ddict->setAllFeatures(df);
231 this->_status |= assign( constValue );
241 PackedSymmetricMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue ) :
242 NumericTable( nDim, nDim )
244 _layout = packedLayout;
245 this->_status |= setArray( ptr );
247 NumericTableFeature df;
248 df.setType<DataType>();
249 this->_status |= _ddict->setAllFeatures(df);
251 this->_status |= assign( constValue );
262 static services::SharedPtr<PackedSymmetricMatrix> create(DataType *
const ptr,
size_t nDim,
const DataType &constValue,
263 services::Status* stat = NULL)
265 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, constValue, stat);
276 static services::SharedPtr<PackedSymmetricMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
const DataType &constValue,
277 services::Status* stat = NULL)
279 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), ptr, nDim, constValue);
288 PackedSymmetricMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag ):
289 NumericTable( nDim, nDim )
291 _layout = packedLayout;
293 NumericTableFeature df;
294 df.setType<DataType>();
295 this->_status |= _ddict->setAllFeatures(df);
297 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
307 static services::SharedPtr<PackedSymmetricMatrix> create(
size_t nDim, AllocationFlag memoryAllocationFlag,
308 services::Status* stat = NULL)
310 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), nDim, memoryAllocationFlag);
320 PackedSymmetricMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
321 const DataType &constValue ):
322 NumericTable( nDim, nDim )
324 _layout = packedLayout;
326 NumericTableFeature df;
327 df.setType<DataType>();
328 this->_status |= _ddict->setAllFeatures(df);
330 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
331 this->_status |= assign(constValue);
342 static services::SharedPtr<PackedSymmetricMatrix> create(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
343 const DataType &constValue, services::Status* stat = NULL)
345 DAAL_DEFAULT_CREATE_TEMPLATE_IMPL_EX(PackedSymmetricMatrix, DAAL_TEMPLATE_ARGUMENTS(packedLayout,DataType), \
346 nDim, memoryAllocationFlag, constValue);
350 virtual ~PackedSymmetricMatrix()
352 freeDataMemoryImpl();
359 DataType *getArray()
const
361 return (DataType*)_ptr.get();
368 services::SharedPtr<DataType> getArraySharedPtr()
const
370 return services::reinterpretPointerCast<DataType, byte>(_ptr);
377 services::Status setArray( DataType *
const ptr )
379 freeDataMemoryImpl();
381 return services::Status(services::ErrorEmptyHomogenNumericTable);
383 _ptr = services::SharedPtr<byte>((byte*)ptr, services::EmptyDeleter());
384 _memStatus = userAllocated;
385 return services::Status();
392 services::Status setArray(
const services::SharedPtr<DataType>& ptr )
394 freeDataMemoryImpl();
396 return services::Status(services::ErrorEmptyHomogenNumericTable);
398 _ptr = services::reinterpretPointerCast<byte, DataType>(ptr);
399 _memStatus = userAllocated;
400 return services::Status();
407 template <
typename T>
408 services::Status assign(T value)
410 if( _memStatus == notAllocated )
411 return services::Status(services::ErrorEmptyHomogenNumericTable);
413 size_t nDim = getNumberOfColumns();
415 DataType * ptr = (DataType*)_ptr.get();
416 DataType valueDataType = (DataType)value;
417 for(
size_t i = 0; i < (nDim * (nDim + 1)) / 2 ; i++ )
419 ptr[i] = valueDataType;
421 return services::Status();
427 virtual services::Status assign(
float value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
432 virtual services::Status assign(
double value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
437 virtual services::Status assign(
int value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
439 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
441 return getTBlock<double>(vector_idx, vector_num, rwflag, block);
443 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
445 return getTBlock<float>(vector_idx, vector_num, rwflag, block);
447 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
449 return getTBlock<int>(vector_idx, vector_num, rwflag, block);
452 services::Status releaseBlockOfRows(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
454 return releaseTBlock<double>(block);
456 services::Status releaseBlockOfRows(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
458 return releaseTBlock<float>(block);
460 services::Status releaseBlockOfRows(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
462 return releaseTBlock<int>(block);
465 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
466 ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
468 return getTFeature<double>(feature_idx, vector_idx, value_num, rwflag, block);
470 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
471 ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
473 return getTFeature<float>(feature_idx, vector_idx, value_num, rwflag, block);
475 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
476 ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
478 return getTFeature<int>(feature_idx, vector_idx, value_num, rwflag, block);
481 services::Status releaseBlockOfColumnValues(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
483 return releaseTFeature<double>(block);
485 services::Status releaseBlockOfColumnValues(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
487 return releaseTFeature<float>(block);
489 services::Status releaseBlockOfColumnValues(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
491 return releaseTFeature<int>(block);
495 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
497 return getTPackedArray<double>(rwflag, block);
499 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
501 return getTPackedArray<float>(rwflag, block);
503 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
505 return getTPackedArray<int>(rwflag, block);
508 services::Status releasePackedArray(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
510 return releaseTPackedArray<double>(block);
512 services::Status releasePackedArray(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
514 return releaseTPackedArray<float>(block);
516 services::Status releasePackedArray(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
518 return releaseTPackedArray<int>(block);
522 services::SharedPtr<byte> _ptr;
524 PackedSymmetricMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim, services::Status &st):
525 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
527 _layout = packedLayout;
528 st |= setArray( ptr );
530 NumericTableFeature df;
531 df.setType<DataType>();
532 st |= _ddict->setAllFeatures(df);
535 PackedSymmetricMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue,
536 services::Status &st) :
537 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
539 _layout = packedLayout;
540 st |= setArray( ptr );
542 NumericTableFeature df;
543 df.setType<DataType>();
544 st |= _ddict->setAllFeatures(df);
546 st |= assign( constValue );
549 PackedSymmetricMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag, services::Status &st):
550 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
552 _layout = packedLayout;
554 NumericTableFeature df;
555 df.setType<DataType>();
556 st |= _ddict->setAllFeatures(df);
558 if( memoryAllocationFlag == doAllocate ) st |= allocateDataMemoryImpl();
561 PackedSymmetricMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
562 const DataType &constValue, services::Status &st):
563 NumericTable(nDim, nDim, DictionaryIface::notEqual, st)
565 _layout = packedLayout;
567 NumericTableFeature df;
568 df.setType<DataType>();
569 st |= _ddict->setAllFeatures(df);
571 if( memoryAllocationFlag == doAllocate ) st |= allocateDataMemoryImpl();
572 st |= assign(constValue);
575 services::Status allocateDataMemoryImpl(daal::MemType type = daal::dram) DAAL_C11_OVERRIDE
577 freeDataMemoryImpl();
579 size_t nDim = getNumberOfColumns();
580 size_t size = (nDim * (nDim + 1)) / 2;
583 return services::Status(getNumberOfColumns() == 0 ? services::ErrorIncorrectNumberOfFeatures :
584 services::ErrorIncorrectNumberOfObservations);
586 _ptr = services::SharedPtr<byte>((byte *)daal::services::daal_malloc( size *
sizeof(DataType) ), services::ServiceDeleter());
589 return services::Status(services::ErrorMemoryAllocationFailed);
591 _memStatus = internallyAllocated;
592 return services::Status();
595 void freeDataMemoryImpl() DAAL_C11_OVERRIDE
598 _memStatus = notAllocated;
602 template<
typename Archive,
bool onDeserialize>
603 services::Status serialImpl( Archive *arch )
605 NumericTable::serialImpl<Archive, onDeserialize>( arch );
609 allocateDataMemoryImpl();
612 size_t nDim = getNumberOfColumns();
613 size_t size = (nDim * (nDim + 1)) / 2;
615 arch->set( (DataType*)_ptr.get(), size );
617 return services::Status();
621 template<
typename T1,
typename T2>
622 void internal_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
624 if( IsSameType<T1, T2>::value )
626 if( src != (T1 *)dst )
628 daal::services::daal_memcpy_s(dst, n * p *
sizeof(T1), src, n * p *
sizeof(T1));
635 for(i = 0; i < n; i++)
637 for(j = 0; j < p; j++)
639 dst[i * p + j] =
static_cast<T2
>(src[i * p + j]);
645 template<
typename T1,
typename T2>
646 void internal_set_col_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
650 for(i = 0; i < n; i++)
652 dst[i * p] =
static_cast<T2
>(src[i]);
657 baseDataType &getBaseValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
659 size_t rowStartOffset, colStartOffset;
661 if( packedLayout == upperPackedSymmetricMatrix )
663 if( colIdx < rowIdx )
671 rowStartOffset = ((2 * dim - 1 * (rowIdx - 1)) * rowIdx) / 2;
672 colStartOffset = colIdx - rowIdx;
676 if( colIdx > rowIdx )
684 rowStartOffset = ((2 + 1 * (rowIdx - 1)) * rowIdx) / 2;
685 colStartOffset = colIdx;
688 return *((DataType*)_ptr.get() + rowStartOffset + colStartOffset);
691 template <
typename T>
692 T getValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
694 return static_cast<T
>( getBaseValue( dim, rowIdx, colIdx ) );
697 template <
typename T>
698 services::Status setValue(
size_t dim,
size_t rowIdx,
size_t colIdx, T value )
700 getBaseValue( dim, rowIdx, colIdx ) =
static_cast<baseDataType
>( value );
701 return services::Status();
704 template <
typename T>
705 services::Status getTBlock(
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
707 size_t nDim = getNumberOfColumns();
708 block.setDetails( 0, idx, rwFlag );
712 block.resizeBuffer( nDim, 0 );
713 return services::Status();
716 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
718 if( !block.resizeBuffer( nDim, nrows ) )
719 return services::Status(services::ErrorMemoryAllocationFailed);
721 if((rwFlag & (
int)readOnly))
723 T *buffer = block.getBlockPtr();
725 for(
size_t iRow = 0; iRow < nrows; iRow++)
727 for(
size_t iCol = 0; iCol < nDim; iCol++)
729 buffer[iRow * nDim + iCol] = getValue<T>(nDim, iRow + idx, iCol);
733 return services::Status();
736 template <
typename T>
737 services::Status releaseTBlock( BlockDescriptor<T> &block )
740 if(block.getRWFlag() & (int)writeOnly)
742 size_t nDim = getNumberOfColumns();
743 size_t nrows = block.getNumberOfRows();
744 size_t idx = block.getRowsOffset();
745 T *buffer = block.getBlockPtr();
747 for(
size_t iRow = 0; iRow < nrows; iRow++ )
749 for(
size_t iCol = 0; iCol < nDim; iCol++ )
751 s |= setValue<T>( nDim, idx + iRow, iCol, buffer[ iRow * nDim + iCol ] );
759 template <
typename T>
760 services::Status getTFeature(
size_t feat_idx,
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
762 size_t nDim = getNumberOfColumns();
763 block.setDetails( feat_idx, idx, rwFlag );
767 block.resizeBuffer( nDim, 0 );
768 return services::Status();
771 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
773 if( !block.resizeBuffer( 1, nrows ) )
774 return services::Status();
776 if((block.getRWFlag() & (int)readOnly))
778 T *buffer = block.getBlockPtr();
780 for(
size_t iRow = 0; iRow < nrows; iRow++)
782 buffer[iRow] = getValue<T>(nDim, iRow + idx, feat_idx);
785 return services::Status();
788 template <
typename T>
789 services::Status releaseTFeature( BlockDescriptor<T> &block )
792 if (block.getRWFlag() & (int)writeOnly)
794 size_t nDim = getNumberOfColumns();
795 size_t nrows = block.getNumberOfRows();
796 size_t idx = block.getRowsOffset();
797 size_t feat_idx = block.getColumnsOffset();
798 T *buffer = block.getBlockPtr();
800 for(
size_t iRow = 0; iRow < nrows; iRow++ )
802 s |= setValue<T>( nDim, iRow + idx, feat_idx, buffer[ iRow ] );
809 template <
typename T>
810 services::Status getTPackedArray(
int rwFlag, BlockDescriptor<T> &block )
812 size_t nDim = getNumberOfColumns();
813 block.setDetails( 0, 0, rwFlag );
815 size_t nSize = (nDim * (nDim + 1)) / 2;
817 if( IsSameType<T, DataType>::value )
819 block.setPtr( &_ptr, _ptr.get(), 1, nSize );
820 return services::Status();
823 if( !block.resizeBuffer( 1, nSize ) )
return services::Status();
825 if( !(rwFlag & (
int)readOnly) )
return services::Status();
827 T *buffer = block.getBlockPtr();
828 DataType * ptr = (DataType*) _ptr.get();
829 for(
size_t i = 0; i < nSize; i++ )
831 buffer[ i ] =
static_cast<T
>(*(ptr + i));
833 return services::Status();
836 template <
typename T>
837 services::Status releaseTPackedArray( BlockDescriptor<T> &block )
839 if( (block.getRWFlag() & (int)writeOnly) && !IsSameType<T, DataType>::value )
841 size_t nDim = getNumberOfColumns();
842 size_t nSize = (nDim * (nDim + 1)) / 2;
843 T *buffer = block.getBlockPtr();
844 DataType * ptr = (DataType*) _ptr.get();
846 for(
size_t i = 0; i < nSize; i++ )
848 *(ptr + i) = static_cast<baseDataType>(buffer[ i ]);
852 return services::Status();
855 virtual services::Status setNumberOfColumnsImpl(
size_t nDim) DAAL_C11_OVERRIDE
857 if( _ddict->getNumberOfFeatures() != nDim )
859 _ddict->setNumberOfFeatures( nDim );
861 NumericTableFeature df;
862 df.setType<DataType>();
863 _ddict->setAllFeatures(df);
867 return services::Status();
870 virtual services::Status setNumberOfRowsImpl(
size_t nDim) DAAL_C11_OVERRIDE
872 setNumberOfColumnsImpl( nDim );
874 return services::Status();
883 template<NumericTableIface::StorageLayout packedLayout,
typename DataType = DAAL_DATA_TYPE>
884 class DAAL_EXPORT PackedTriangularMatrix :
public NumericTable,
public PackedArrayNumericTableIface
887 DECLARE_SERIALIZABLE_TAG();
892 typedef DataType baseDataType;
900 PackedTriangularMatrix( DataType *
const ptr = 0,
size_t nDim = 0 ):
901 NumericTable( nDim, nDim )
903 _layout = packedLayout;
904 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
906 NumericTableFeature df;
907 df.setType<DataType>();
908 this->_status |= _ddict->setAllFeatures(df);
916 PackedTriangularMatrix(
const services::SharedPtr<DataType> &ptr,
size_t nDim ):
917 NumericTable( nDim, nDim )
919 _layout = packedLayout;
920 this->_status |= setArray( ptr );
922 NumericTableFeature df;
923 df.setType<DataType>();
924 this->_status |= _ddict->setAllFeatures(df);
927 PackedTriangularMatrix(
size_t nDim ):
928 NumericTable( nDim, nDim )
930 _layout = packedLayout;
932 NumericTableFeature df;
933 df.setType<DataType>();
934 this->_status |= _ddict->setAllFeatures(df);
937 static services::SharedPtr<PackedTriangularMatrix> create(DataType *
const ptr = 0,
size_t nDim = 0,
938 services::Status* stat = NULL)
940 return create(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()), nDim, stat);
943 static services::SharedPtr<PackedTriangularMatrix> create(
const services::SharedPtr<DataType> &ptr,
size_t nDim,
944 services::Status* stat = NULL)
946 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
949 services::Status s = ntPtr->setArray(ptr);
951 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
958 *stat = services::Status(services::ErrorMemoryAllocationFailed);
969 PackedTriangularMatrix( DataType *
const ptr,
size_t nDim,
const DataType &constValue ):
970 NumericTable( nDim, nDim )
972 _layout = packedLayout;
973 this->_status |= setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
975 NumericTableFeature df;
976 df.setType<DataType>();
977 this->_status |= _ddict->setAllFeatures(df);
979 this->_status |= assign( constValue );
988 PackedTriangularMatrix(
const services::SharedPtr<DataType>& ptr,
size_t nDim,
const DataType &constValue ) :
989 NumericTable( nDim, nDim )
991 _layout = packedLayout;
992 this->_status |= setArray( ptr );
994 NumericTableFeature df;
995 df.setType<DataType>();
996 this->_status |= _ddict->setAllFeatures(df);
998 this->_status |= assign( constValue );
1001 static services::SharedPtr<PackedTriangularMatrix> create(DataType *
const ptr,
size_t nDim,
const DataType &constValue,
1002 services::Status* stat = NULL)
1004 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1007 services::Status s = ntPtr->setArray( services::SharedPtr<DataType>(ptr, services::EmptyDeleter()) );
1008 s.add(ntPtr->assign(constValue));
1010 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1017 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1022 static services::SharedPtr<PackedTriangularMatrix> create(services::SharedPtr<DataType> &ptr,
size_t nDim,
const DataType &constValue,
1023 services::Status* stat = NULL)
1025 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1028 services::Status s = ntPtr->setArray(ptr);
1029 s.add(ntPtr->assign(constValue));
1031 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1038 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1048 PackedTriangularMatrix(
size_t nDim, AllocationFlag memoryAllocationFlag ):
1049 NumericTable( nDim, nDim )
1051 _layout = packedLayout;
1053 NumericTableFeature df;
1054 df.setType<DataType>();
1055 this->_status |= _ddict->setAllFeatures(df);
1057 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
1060 static services::SharedPtr<PackedTriangularMatrix> create(
size_t nDim, AllocationFlag memoryAllocationFlag,
1061 services::Status* stat = NULL)
1063 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1067 if(memoryAllocationFlag == doAllocate)
1069 s = ntPtr->allocateDataMemoryImpl();
1071 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1074 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1081 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1092 PackedTriangularMatrix(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
1093 const DataType &constValue ):
1094 NumericTable( nDim, nDim )
1096 _layout = packedLayout;
1098 NumericTableFeature df;
1099 df.setType<DataType>();
1100 this->_status |= _ddict->setAllFeatures(df);
1102 if( memoryAllocationFlag == doAllocate ) this->_status |= allocateDataMemoryImpl();
1103 this->_status |= assign(constValue);
1106 static services::SharedPtr<PackedTriangularMatrix> create(
size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag,
1107 const DataType &constValue, services::Status* stat = NULL)
1109 services::SharedPtr<PackedTriangularMatrix> ntPtr(
new PackedTriangularMatrix(nDim));
1113 if(memoryAllocationFlag == doAllocate)
1115 s = ntPtr->allocateDataMemoryImpl();
1116 s.add(ntPtr->assign(constValue));
1118 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1121 ntPtr = services::SharedPtr<PackedTriangularMatrix>();
1128 *stat = services::Status(services::ErrorMemoryAllocationFailed);
1134 virtual ~PackedTriangularMatrix()
1136 freeDataMemoryImpl();
1139 virtual services::Status setNumberOfColumns(
size_t nDim) DAAL_C11_OVERRIDE
1141 if( _ddict->getNumberOfFeatures() != nDim )
1143 _ddict->setNumberOfFeatures( nDim );
1145 NumericTableFeature df;
1146 df.setType<DataType>();
1147 _ddict->setAllFeatures(df);
1151 return services::Status();
1154 virtual services::Status setNumberOfRows(
size_t nDim) DAAL_C11_OVERRIDE
1156 return setNumberOfColumns( nDim );
1163 DataType *getArray()
const
1165 return (DataType*)_ptr.get();
1172 services::SharedPtr<DataType> getArraySharedPtr()
const
1174 return services::reinterpretPointerCast<DataType, byte>(_ptr);
1181 services::Status setArray( DataType *
const ptr )
1183 freeDataMemoryImpl();
1185 return services::Status(services::ErrorEmptyHomogenNumericTable);
1187 _ptr = services::SharedPtr<byte>((DataType*)ptr, services::EmptyDeleter());
1188 _memStatus = userAllocated;
1189 return services::Status();
1196 services::Status setArray(
const services::SharedPtr<DataType>& ptr )
1198 freeDataMemoryImpl();
1200 return services::Status(services::ErrorEmptyHomogenNumericTable);
1202 _ptr = services::reinterpretPointerCast<byte, DataType>(ptr);
1203 _memStatus = userAllocated;
1204 return services::Status();
1211 template <
typename T>
1212 services::Status assign(T value)
1214 if( _memStatus == notAllocated )
1215 return services::Status(services::ErrorEmptyHomogenNumericTable);
1217 size_t nDim = getNumberOfColumns();
1219 DataType * ptr = (DataType*)_ptr.get();
1220 DataType valueDataType = (DataType)value;
1221 for(
size_t i = 0; i < (nDim * (nDim + 1)) / 2 ; i++ )
1223 ptr[i] = valueDataType;
1225 return services::Status();
1231 virtual services::Status assign(
float value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1236 virtual services::Status assign(
double value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1241 virtual services::Status assign(
int value) DAAL_C11_OVERRIDE {
return assign<DataType>((DataType)value);}
1243 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1245 return getTBlock<double>(vector_idx, vector_num, rwflag, block);
1247 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1249 return getTBlock<float>(vector_idx, vector_num, rwflag, block);
1251 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1253 return getTBlock<int>(vector_idx, vector_num, rwflag, block);
1256 services::Status releaseBlockOfRows(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1258 return releaseTBlock<double>(block);
1260 services::Status releaseBlockOfRows(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1262 return releaseTBlock<float>(block);
1264 services::Status releaseBlockOfRows(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1266 return releaseTBlock<int>(block);
1269 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
1270 ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1272 return getTFeature<double>(feature_idx, vector_idx, value_num, rwflag, block);
1274 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
1275 ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1277 return getTFeature<float>(feature_idx, vector_idx, value_num, rwflag, block);
1279 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
1280 ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1282 return getTFeature<int>(feature_idx, vector_idx, value_num, rwflag, block);
1285 services::Status releaseBlockOfColumnValues(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1287 return releaseTFeature<double>(block);
1289 services::Status releaseBlockOfColumnValues(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1291 return releaseTFeature<float>(block);
1293 services::Status releaseBlockOfColumnValues(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1295 return releaseTFeature<int>(block);
1298 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1300 return getTPackedArray<double>(rwflag, block);
1302 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1304 return getTPackedArray<float>(rwflag, block);
1306 services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1308 return getTPackedArray<int>(rwflag, block);
1311 services::Status releasePackedArray(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
1313 return releaseTPackedArray<double>(block);
1315 services::Status releasePackedArray(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
1317 return releaseTPackedArray<float>(block);
1319 services::Status releasePackedArray(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
1321 return releaseTPackedArray<int>(block);
1325 services::Status serializeImpl (InputDataArchive *arch) DAAL_C11_OVERRIDE
1327 serialImpl<InputDataArchive, false>( arch );
1329 return services::Status();
1333 services::Status deserializeImpl(
const OutputDataArchive *arch) DAAL_C11_OVERRIDE
1335 serialImpl<const OutputDataArchive, true>( arch );
1337 return services::Status();
1341 services::SharedPtr<byte> _ptr;
1343 services::Status allocateDataMemoryImpl(daal::MemType type = daal::dram) DAAL_C11_OVERRIDE
1345 freeDataMemoryImpl();
1347 size_t nDim = getNumberOfColumns();
1348 size_t size = (nDim * (nDim + 1)) / 2;
1351 return services::Status(getNumberOfColumns() == 0 ? services::ErrorIncorrectNumberOfFeatures :
1352 services::ErrorIncorrectNumberOfObservations);
1354 _ptr = services::SharedPtr<byte>((byte *)daal::services::daal_malloc( size *
sizeof(DataType) ), services::ServiceDeleter());
1357 return services::Status(services::ErrorMemoryAllocationFailed);
1359 _memStatus = internallyAllocated;
1360 return services::Status();
1363 void freeDataMemoryImpl() DAAL_C11_OVERRIDE
1366 _memStatus = notAllocated;
1370 template<
typename Archive,
bool onDeserialize>
1371 services::Status serialImpl( Archive *arch )
1373 NumericTable::serialImpl<Archive, onDeserialize>( arch );
1377 allocateDataMemoryImpl();
1380 size_t nDim = getNumberOfColumns();
1381 size_t size = (nDim * (nDim + 1)) / 2;
1383 arch->set( (DataType*)_ptr.get(), size );
1385 return services::Status();
1389 template<
typename T1,
typename T2>
1390 void internal_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
1392 if( IsSameType<T1, T2>::value )
1394 if( src != (T1 *)dst )
1396 daal::services::daal_memcpy_s(dst, n * p *
sizeof(T1), src, n * p *
sizeof(T1));
1403 for(i = 0; i < n; i++)
1405 for(j = 0; j < p; j++)
1407 dst[i * p + j] =
static_cast<T2
>(src[i * p + j]);
1413 template<
typename T1,
typename T2>
1414 void internal_set_col_repack(
size_t p,
size_t n, T1 *src, T2 *dst )
1418 for(i = 0; i < n; i++)
1420 dst[i * p] =
static_cast<T2
>(src[i]);
1425 baseDataType &getBaseValue(
size_t dim,
size_t rowIdx,
size_t colIdx, baseDataType &zero )
1427 size_t rowStartOffset, colStartOffset;
1429 if( packedLayout == upperPackedTriangularMatrix )
1431 if( colIdx < rowIdx )
1436 rowStartOffset = ((2 * dim - 1 * (rowIdx - 1)) * rowIdx) / 2;
1437 colStartOffset = colIdx - rowIdx;
1441 if( colIdx > rowIdx )
1446 rowStartOffset = ((2 + 1 * (rowIdx - 1)) * rowIdx) / 2;
1447 colStartOffset = colIdx;
1450 return *((DataType*)_ptr.get() + rowStartOffset + colStartOffset);
1453 template <
typename T>
1454 T getValue(
size_t dim,
size_t rowIdx,
size_t colIdx )
1456 baseDataType zero = (baseDataType)0;
1457 return static_cast<T
>( getBaseValue( dim, rowIdx, colIdx, zero ) );
1460 template <
typename T>
1461 services::Status setValue(
size_t dim,
size_t rowIdx,
size_t colIdx, T value )
1463 baseDataType zero = (baseDataType)0;
1464 getBaseValue( dim, rowIdx, colIdx, zero ) =
static_cast<baseDataType
>( value );
1465 return services::Status();
1468 template <
typename T>
1469 services::Status getTBlock(
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
1471 size_t nDim = getNumberOfColumns();
1472 block.setDetails( 0, idx, rwFlag );
1476 block.resizeBuffer( nDim, 0 );
1477 return services::Status();
1480 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
1482 if( !block.resizeBuffer( nDim, nrows ) )
1483 return services::Status(services::ErrorMemoryAllocationFailed);
1485 if((rwFlag & (
int)readOnly))
1487 T *buffer = block.getBlockPtr();
1489 for(
size_t iRow = 0; iRow < nrows; iRow++)
1491 for(
size_t iCol = 0; iCol < nDim; iCol++)
1493 buffer[iRow * nDim + iCol] = getValue<T>(nDim, iRow + idx, iCol);
1497 return services::Status();
1500 template <
typename T>
1501 services::Status releaseTBlock( BlockDescriptor<T> &block )
1504 if(block.getRWFlag() & (int)writeOnly)
1506 size_t nDim = getNumberOfColumns();
1507 size_t nrows = block.getNumberOfRows();
1508 size_t idx = block.getRowsOffset();
1509 T *buffer = block.getBlockPtr();
1511 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1513 for(
size_t iCol = 0; iCol < nDim; iCol++ )
1515 s |= setValue<T>( nDim, iRow + idx, iCol, buffer[ iRow * nDim + iCol ] );
1523 template <
typename T>
1524 services::Status getTFeature(
size_t feat_idx,
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
1526 size_t nDim = getNumberOfColumns();
1527 block.setDetails( feat_idx, idx, rwFlag );
1531 block.resizeBuffer( nDim, 0 );
1532 return services::Status();
1535 nrows = ( idx + nrows < nDim ) ? nrows : nDim - idx;
1537 if( !block.resizeBuffer( 1, nrows ) )
1538 return services::Status();
1540 if((block.getRWFlag() & (int)readOnly))
1542 T *buffer = block.getBlockPtr();
1543 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1545 buffer[ iRow ] = getValue<T>( nDim, iRow + idx, feat_idx );
1548 return services::Status();
1551 template <
typename T>
1552 services::Status releaseTFeature( BlockDescriptor<T> &block )
1555 if (block.getRWFlag() & (int)writeOnly)
1557 size_t nDim = getNumberOfColumns();
1558 size_t nrows = block.getNumberOfRows();
1559 size_t idx = block.getRowsOffset();
1560 size_t feat_idx = block.getColumnsOffset();
1561 T *buffer = block.getBlockPtr();
1563 for(
size_t iRow = 0; iRow < nrows; iRow++ )
1565 s |= setValue<T>( nDim, iRow + idx, feat_idx, buffer[ iRow ] );
1572 template <
typename T>
1573 services::Status getTPackedArray(
int rwFlag, BlockDescriptor<T> &block )
1575 size_t nDim = getNumberOfColumns();
1576 block.setDetails( 0, 0, rwFlag );
1578 size_t nSize = (nDim * (nDim + 1)) / 2;
1580 if( IsSameType<T, DataType>::value )
1582 block.setPtr( &_ptr, _ptr.get(), 1, nSize );
1583 return services::Status();
1586 if( !block.resizeBuffer( 1, nSize ) )
return services::Status();
1588 if( !(rwFlag & (
int)readOnly) )
return services::Status();
1590 T *buffer = block.getBlockPtr();
1591 DataType * ptr = (DataType*)_ptr.get();
1592 for(
size_t i = 0; i < nSize; i++ )
1594 buffer[ i ] =
static_cast<T
>(*(ptr + i));
1596 return services::Status();
1599 template <
typename T>
1600 services::Status releaseTPackedArray( BlockDescriptor<T> &block )
1602 if( (block.getRWFlag() & (int)writeOnly) && !IsSameType<T, DataType>::value )
1604 size_t nDim = getNumberOfColumns();
1605 size_t nSize = (nDim * (nDim + 1)) / 2;
1606 T *buffer = block.getBlockPtr();
1607 DataType * ptr = (DataType*)_ptr.get();
1609 for(
size_t i = 0; i < nSize; i++ )
1611 *(ptr + i) = static_cast<baseDataType>(buffer[ i ]);
1615 return services::Status();
1618 virtual services::Status setNumberOfColumnsImpl(
size_t nDim) DAAL_C11_OVERRIDE
1620 if( _ddict->getNumberOfFeatures() != nDim )
1622 _ddict->setNumberOfFeatures( nDim );
1624 NumericTableFeature df;
1625 df.setType<DataType>();
1626 _ddict->setAllFeatures(df);
1630 return services::Status();
1633 virtual services::Status setNumberOfRowsImpl(
size_t nDim) DAAL_C11_OVERRIDE
1635 setNumberOfColumnsImpl( nDim );
1637 return services::Status();
1642 using interface1::PackedArrayNumericTableIface;
1643 using interface1::PackedSymmetricMatrix;
1644 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:470
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:1274
daal::data_management::interface1::NumericTableIface::AllocationFlag
AllocationFlag
Enumeration to specify whether the Numeric Table must allocate memory.
Definition: numeric_table.h:309
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:1269
daal::data_management::interface1::PackedSymmetricMatrix::getArray
DataType * getArray() const
Definition: symmetric_matrix.h:359
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:512
daal
Definition: algorithm_base_common.h:57
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:443
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(DataType *const ptr=0, size_t nDim=0)
Definition: symmetric_matrix.h:900
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:508
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:439
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:475
daal::data_management::interface1::PackedTriangularMatrix::setArray
services::Status setArray(DataType *const ptr)
Definition: symmetric_matrix.h:1181
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:489
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1289
daal::data_management::interface1::PackedSymmetricMatrix::setArray
services::Status setArray(DataType *const ptr)
Definition: symmetric_matrix.h:377
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:1279
daal::data_management::interface1::PackedArrayNumericTableIface
Abstract class that defines the interface of symmetric matrices stored as a one-dimensional array...
Definition: symmetric_matrix.h:72
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: symmetric_matrix.h:320
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1298
daal::data_management::interface1::PackedTriangularMatrix::baseDataType
DataType baseDataType
Definition: symmetric_matrix.h:892
daal::data_management::interface1::PackedSymmetricMatrix::setArray
services::Status setArray(const services::SharedPtr< DataType > &ptr)
Definition: symmetric_matrix.h:392
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1311
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(DataType *const ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:969
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:170
daal::dram
Definition: daal_defines.h:158
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1306
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim)
Definition: symmetric_matrix.h:916
daal::data_management::interface1::PackedTriangularMatrix::getArray
DataType * getArray() const
Definition: symmetric_matrix.h:1163
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:495
daal::services::ErrorIncorrectNumberOfFeatures
Definition: error_indexes.h:96
daal::data_management::interface1::PackedSymmetricMatrix::baseDataType
DataType baseDataType
Definition: symmetric_matrix.h:141
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:452
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:481
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1293
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:447
daal::data_management::interface1::PackedSymmetricMatrix::getArraySharedPtr
services::SharedPtr< DataType > getArraySharedPtr() const
Definition: symmetric_matrix.h:368
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:465
daal::data_management::interface1::PackedTriangularMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1302
daal::data_management::interface1::PackedTriangularMatrix::setNumberOfRows
virtual services::Status setNumberOfRows(size_t nDim) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1154
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:1236
daal::data_management::interface1::PackedTriangularMatrix::setArray
services::Status setArray(const services::SharedPtr< DataType > &ptr)
Definition: symmetric_matrix.h:1196
daal::data_management::interface1::PackedTriangularMatrix::assign
virtual services::Status assign(int value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1241
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(DataType *const ptr=0, size_t nDim=0)
Definition: symmetric_matrix.h:150
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:132
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:503
daal::data_management::interface1::PackedTriangularMatrix::setNumberOfColumns
virtual services::Status setNumberOfColumns(size_t nDim) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1139
daal::data_management::interface1::NumericTable
Class for a data management component responsible for representation of data in the numeric format...
Definition: numeric_table.h:600
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim)
Definition: symmetric_matrix.h:167
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(size_t nDim, AllocationFlag memoryAllocationFlag)
Definition: symmetric_matrix.h:288
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:1251
daal::data_management::interface1::PackedSymmetricMatrix::assign
services::Status assign(T value)
Definition: symmetric_matrix.h:408
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:460
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:262
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(DataType *const ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:221
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(int value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:437
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:195
daal::data_management::interface1::PackedTriangularMatrix::assign
virtual services::Status assign(float value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1231
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(double value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:432
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:276
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1256
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:1247
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:485
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:208
daal::data_management::interface1::PackedSymmetricMatrix::getPackedArray
services::Status getPackedArray(ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:499
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:988
daal::data_management::interface1::BlockDescriptor
Base class that manages buffer memory for read/write operations required by numeric tables...
Definition: numeric_table.h:81
daal::algorithms::math::abs::value
Definition: abs_types.h:112
daal::data_management::interface1::NumericTableFeature::setType
void setType()
Definition: data_dictionary.h:117
daal::data_management::interface1::PackedSymmetricMatrix::create
static services::SharedPtr< PackedSymmetricMatrix > create(size_t nDim, AllocationFlag memoryAllocationFlag, services::Status *stat=NULL)
Definition: symmetric_matrix.h:307
daal::services::ErrorIncorrectNumberOfObservations
Definition: error_indexes.h:97
daal::data_management::interface1::PackedSymmetricMatrix::PackedSymmetricMatrix
PackedSymmetricMatrix(const services::SharedPtr< DataType > &ptr, size_t nDim, const DataType &constValue)
Definition: symmetric_matrix.h:241
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:1212
daal::data_management::interface1::PackedSymmetricMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:516
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:884
daal::data_management::interface1::PackedTriangularMatrix::getArraySharedPtr
services::SharedPtr< DataType > getArraySharedPtr() const
Definition: symmetric_matrix.h:1172
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1260
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:1243
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:342
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:74
daal::data_management::interface1::PackedSymmetricMatrix::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:456
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1319
daal::MemType
MemType
Definition: daal_defines.h:156
daal::data_management::interface1::PackedTriangularMatrix::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1285
daal::services::ErrorEmptyHomogenNumericTable
Definition: error_indexes.h:185
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(size_t nDim, AllocationFlag memoryAllocationFlag)
Definition: symmetric_matrix.h:1048
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:1264
daal::data_management::interface1::PackedTriangularMatrix::releasePackedArray
services::Status releasePackedArray(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:1315
daal::data_management::interface1::PackedTriangularMatrix::PackedTriangularMatrix
PackedTriangularMatrix(size_t nDim, NumericTable::AllocationFlag memoryAllocationFlag, const DataType &constValue)
Definition: symmetric_matrix.h:1092
daal::data_management::interface1::PackedSymmetricMatrix::assign
virtual services::Status assign(float value) DAAL_C11_OVERRIDE
Definition: symmetric_matrix.h:427