48 #ifndef __CSR_NUMERIC_TABLE_H__ 49 #define __CSR_NUMERIC_TABLE_H__ 51 #include "services/base.h" 52 #include "data_management/data/numeric_table.h" 53 #include "data_management/data/data_serialize.h" 57 namespace data_management
70 template<
typename DataType = DAAL_DATA_TYPE>
71 class DAAL_EXPORT CSRBlockDescriptor
78 ~CSRBlockDescriptor() { freeValuesBuffer(); freeRowsBuffer(); }
84 inline DataType *getBlockValuesPtr()
const 88 return (DataType *)_rawPtr;
90 return _values_ptr.get();
93 inline size_t *getBlockColumnIndicesPtr()
const {
return _cols_ptr.get(); }
94 inline size_t *getBlockRowIndicesPtr()
const {
return _rows_ptr.get(); }
100 inline services::SharedPtr<DataType> getBlockValuesSharedPtr()
const 104 return services::SharedPtr<DataType>(services::reinterpretPointerCast<DataType, byte>(*_pPtr), (DataType *)_rawPtr);
109 inline services::SharedPtr<size_t> getBlockColumnIndicesSharedPtr()
const {
return _cols_ptr; }
110 inline services::SharedPtr<size_t> getBlockRowIndicesSharedPtr()
const {
return _rows_ptr; }
116 inline size_t getNumberOfColumns()
const {
return _ncols; }
122 inline size_t getNumberOfRows()
const {
return _nrows; }
128 inline size_t getDataSize()
const 130 return ((_nrows > 0) ? _rows_ptr.get()[_nrows] - _rows_ptr.get()[0] : 0);
133 inline void setValuesPtr( DataType *ptr,
size_t nValues )
135 _values_ptr = services::SharedPtr<DataType>(ptr, services::EmptyDeleter());
139 inline void setColumnIndicesPtr(
size_t *ptr,
size_t nValues )
141 _cols_ptr = services::SharedPtr<size_t>(ptr, services::EmptyDeleter());
149 inline void setRowIndicesPtr(
size_t *ptr,
size_t nRows )
151 _rows_ptr = services::SharedPtr<size_t>(ptr, services::EmptyDeleter());
155 inline void setValuesPtr( services::SharedPtr<DataType> ptr,
size_t nValues )
161 inline void setValuesPtr( services::SharedPtr<byte> *pPtr, byte* rawPtr,
size_t nValues)
168 inline void setColumnIndicesPtr( services::SharedPtr<size_t> ptr,
size_t nValues )
178 inline void setRowIndicesPtr( services::SharedPtr<size_t> ptr,
size_t nRows )
199 inline bool resizeValuesBuffer(
size_t nValues )
201 size_t newSize = nValues *
sizeof(DataType);
202 if ( newSize > _values_capacity )
205 _values_buffer = services::SharedPtr<DataType>((DataType *)daal::services::daal_malloc(newSize), services::ServiceDeleter()) ;
206 if ( _values_buffer )
208 _values_capacity = newSize;
216 _values_ptr = _values_buffer;
224 inline bool resizeRowsBuffer(
size_t nRows )
227 size_t newSize = (nRows + 1) *
sizeof(
size_t);
228 if ( newSize > _rows_capacity )
231 _rows_buffer = services::SharedPtr<size_t>((
size_t *)daal::services::daal_malloc(newSize), services::ServiceDeleter()) ;
234 _rows_capacity = newSize;
243 _rows_ptr = _rows_buffer;
248 inline void setDetails(
size_t nColumns,
size_t rowIdx,
int rwFlag )
251 _rowsOffset = rowIdx;
255 inline size_t getRowsOffset()
const {
return _rowsOffset; }
256 inline size_t getRWFlag()
const {
return _rwFlag; }
262 void freeValuesBuffer()
266 _values_buffer = services::SharedPtr<DataType>();
268 _values_capacity = 0;
274 void freeRowsBuffer()
276 _rows_buffer = services::SharedPtr<size_t>();
281 services::SharedPtr<DataType> _values_ptr;
282 services::SharedPtr<size_t> _cols_ptr;
283 services::SharedPtr<size_t> _rows_ptr;
291 services::SharedPtr<DataType> _values_buffer;
292 size_t _values_capacity;
294 services::SharedPtr<size_t> _rows_buffer;
295 size_t _rows_capacity;
297 services::SharedPtr<byte> *_pPtr;
305 class CSRNumericTableIface
320 virtual ~CSRNumericTableIface() {}
327 virtual size_t getDataSize() = 0;
338 virtual services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<double> &block) = 0;
350 virtual services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<float> &block) = 0;
362 virtual services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<int> &block) = 0;
368 virtual services::Status releaseSparseBlock(CSRBlockDescriptor<double> &block) = 0;
374 virtual services::Status releaseSparseBlock(CSRBlockDescriptor<float> &block) = 0;
380 virtual services::Status releaseSparseBlock(CSRBlockDescriptor<int> &block) = 0;
387 class DAAL_EXPORT CSRNumericTable :
public NumericTable,
public CSRNumericTableIface
390 DECLARE_SERIALIZABLE_TAG();
391 DECLARE_SERIALIZABLE_IMPL();
393 DAAL_CAST_OPERATOR(CSRNumericTable)
398 CSRNumericTable(): NumericTable(0, 0, DictionaryIface::equal), _indexing(oneBased)
401 this->_status |= setArrays<double>( 0, 0, 0 );
417 template<
typename DataType>
418 CSRNumericTable( DataType *
const ptr,
size_t *colIndices = 0,
size_t *rowOffsets = 0,
419 size_t nColumns = 0,
size_t nRows = 0, CSRIndexing indexing = oneBased ):
420 NumericTable(nColumns, nRows, DictionaryIface::equal), _indexing(indexing)
423 this->_status |= setArrays<DataType>(ptr, colIndices, rowOffsets);
425 _defaultFeature.setType<DataType>();
426 this->_status |= _ddict->setAllFeatures( _defaultFeature );
444 template<
typename DataType>
445 static services::SharedPtr<CSRNumericTable> create(DataType *
const ptr,
size_t *colIndices = 0,
size_t *rowOffsets = 0,
446 size_t nColumns = 0,
size_t nRows = 0, CSRIndexing indexing = oneBased,
447 services::Status *stat = NULL)
449 return create<DataType>(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()),
450 services::SharedPtr<size_t>(colIndices, services::EmptyDeleter()),
451 services::SharedPtr<size_t>(rowOffsets, services::EmptyDeleter()),
452 nColumns, nRows, indexing, stat);
468 template<
typename DataType>
469 CSRNumericTable(
const services::SharedPtr<DataType>& ptr,
const services::SharedPtr<size_t>& colIndices,
const services::SharedPtr<size_t>& rowOffsets,
470 size_t nColumns,
size_t nRows, CSRIndexing indexing = oneBased ):
471 NumericTable(nColumns, nRows, DictionaryIface::equal), _indexing(indexing)
474 this->_status |= setArrays<DataType>(ptr, colIndices, rowOffsets);
476 _defaultFeature.setType<DataType>();
477 this->_status |= _ddict->setAllFeatures( _defaultFeature );
494 template<
typename DataType>
495 static services::SharedPtr<CSRNumericTable> create(
const services::SharedPtr<DataType>& ptr,
496 const services::SharedPtr<size_t>& colIndices,
497 const services::SharedPtr<size_t>& rowOffsets,
498 size_t nColumns,
size_t nRows, CSRIndexing indexing = oneBased,
499 services::Status *stat = NULL)
501 DAAL_DEFAULT_CREATE_IMPL_EX(CSRNumericTable, ptr, colIndices, rowOffsets, nColumns, nRows, indexing);
504 virtual ~CSRNumericTable()
506 freeDataMemoryImpl();
509 virtual services::Status resize(
size_t nrows) DAAL_C11_OVERRIDE
511 return setNumberOfRowsImpl(nrows);
520 template<
typename DataType>
521 services::Status getArrays(DataType **ptr,
size_t **colIndices,
size_t **rowOffsets)
const 523 if (ptr) { *ptr = (DataType*)_ptr.get(); }
524 if (colIndices) { *colIndices = _colIndices.get(); }
525 if (rowOffsets) { *rowOffsets = _rowOffsets.get(); }
526 return services::Status();
535 template<
typename DataType>
536 services::Status getArrays(services::SharedPtr<DataType> &ptr, services::SharedPtr<size_t> &colIndices, services::SharedPtr<size_t> &rowOffsets)
const 538 if(ptr) { *ptr = _ptr; }
539 if (colIndices) { *colIndices = _colIndices; }
540 if (rowOffsets) { *rowOffsets = _rowOffsets; }
541 return services::Status();
551 template<
typename DataType>
552 services::Status setArrays(DataType *
const ptr,
size_t *colIndices,
size_t *rowOffsets, CSRIndexing indexing = oneBased)
554 freeDataMemoryImpl();
558 _ptr = services::SharedPtr<byte>((byte*)ptr, services::EmptyDeleter());
559 _colIndices = services::SharedPtr<size_t>(colIndices, services::EmptyDeleter());
560 _rowOffsets = services::SharedPtr<size_t>(rowOffsets, services::EmptyDeleter());
561 _indexing = indexing;
563 if( ptr != 0 && colIndices != 0 && rowOffsets != 0 ) { _memStatus = userAllocated; }
564 return services::Status();
574 template<
typename DataType>
575 services::Status setArrays(
const services::SharedPtr<DataType>& ptr,
const services::SharedPtr<size_t>& colIndices,
const services::SharedPtr<size_t>& rowOffsets, CSRIndexing indexing = oneBased)
577 freeDataMemoryImpl();
581 _ptr = services::reinterpretPointerCast<byte, DataType>(ptr);
582 _colIndices = colIndices;
583 _rowOffsets = rowOffsets;
584 _indexing = indexing;
586 if( ptr && colIndices && rowOffsets ) { _memStatus = userAllocated; }
587 return services::Status();
590 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
592 return getTBlock<double>(vector_idx, vector_num, rwflag, block);
594 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
596 return getTBlock<float>(vector_idx, vector_num, rwflag, block);
598 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
600 return getTBlock<int>(vector_idx, vector_num, rwflag, block);
603 services::Status releaseBlockOfRows(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
605 return releaseTBlock<double>(block);
607 services::Status releaseBlockOfRows(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
609 return releaseTBlock<float>(block);
611 services::Status releaseBlockOfRows(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
613 return releaseTBlock<int>(block);
616 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
617 ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
619 return getTFeature<double>(feature_idx, vector_idx, value_num, rwflag, block);
621 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
622 ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
624 return getTFeature<float>(feature_idx, vector_idx, value_num, rwflag, block);
626 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
627 ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
629 return getTFeature<int>(feature_idx, vector_idx, value_num, rwflag, block);
632 services::Status releaseBlockOfColumnValues(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
634 return releaseTFeature<double>(block);
636 services::Status releaseBlockOfColumnValues(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
638 return releaseTFeature<float>(block);
640 services::Status releaseBlockOfColumnValues(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
642 return releaseTFeature<int>(block);
646 services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<double> &block) DAAL_C11_OVERRIDE
648 return getSparseTBlock<double>(vector_idx, vector_num, rwflag, block);
650 services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<float> &block) DAAL_C11_OVERRIDE
652 return getSparseTBlock<float>(vector_idx, vector_num, rwflag, block);
654 services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<int> &block) DAAL_C11_OVERRIDE
656 return getSparseTBlock<int>(vector_idx, vector_num, rwflag, block);
659 services::Status releaseSparseBlock(CSRBlockDescriptor<double> &block) DAAL_C11_OVERRIDE
661 return releaseSparseTBlock<double>(block);
663 services::Status releaseSparseBlock(CSRBlockDescriptor<float> &block) DAAL_C11_OVERRIDE
665 return releaseSparseTBlock<float>(block);
667 services::Status releaseSparseBlock(CSRBlockDescriptor<int> &block) DAAL_C11_OVERRIDE
669 return releaseSparseTBlock<int>(block);
677 services::Status allocateDataMemory(
size_t dataSize, daal::MemType type = daal::dram)
679 freeDataMemoryImpl();
681 size_t nrow = getNumberOfRows();
684 return services::Status(services::ErrorIncorrectNumberOfObservations);
686 NumericTableFeature &f = (*_ddict)[0];
688 _ptr = services::SharedPtr<byte> ( (byte*)daal::services::daal_malloc( dataSize * f.typeSize ), services::ServiceDeleter ());
689 _colIndices = services::SharedPtr<size_t>((
size_t *)daal::services::daal_malloc( dataSize *
sizeof(
size_t) ), services::ServiceDeleter());
690 _rowOffsets = services::SharedPtr<size_t>((
size_t *)daal::services::daal_malloc( (nrow + 1) *
sizeof(size_t) ), services::ServiceDeleter());
692 _memStatus = internallyAllocated;
694 if( !_ptr || !_colIndices || !_rowOffsets )
696 freeDataMemoryImpl();
697 return services::Status(services::ErrorMemoryAllocationFailed);
700 _rowOffsets.get()[0] = ((_indexing == oneBased) ? 1 : 0);
701 return services::Status();
708 CSRIndexing getCSRIndexing()
const 716 virtual services::Status check(
const char *description,
bool checkDataAllocation =
true) const DAAL_C11_OVERRIDE
719 DAAL_CHECK_STATUS(s, data_management::NumericTable::check(description, checkDataAllocation));
721 if( _indexing != oneBased )
723 return services::Status(services::Error::create(services::ErrorUnsupportedCSRIndexing, services::ArgumentName, description));
726 return services::Status();
730 NumericTableFeature _defaultFeature;
731 CSRIndexing _indexing;
733 services::SharedPtr<byte> _ptr;
734 services::SharedPtr<size_t> _colIndices;
735 services::SharedPtr<size_t> _rowOffsets;
737 template<
typename DataType>
738 CSRNumericTable(
const services::SharedPtr<DataType>& ptr,
const services::SharedPtr<size_t>& colIndices,
const services::SharedPtr<size_t>& rowOffsets,
739 size_t nColumns,
size_t nRows, CSRIndexing indexing,
740 services::Status &st):
741 NumericTable(nColumns, nRows, DictionaryIface::equal, st), _indexing(indexing)
744 st |= setArrays<DataType>(ptr, colIndices, rowOffsets);
746 _defaultFeature.setType<DataType>();
747 st |= _ddict->setAllFeatures( _defaultFeature );
750 services::Status allocateDataMemoryImpl(daal::MemType type = daal::dram) DAAL_C11_OVERRIDE
752 return services::Status(services::ErrorMethodNotSupported);
755 void freeDataMemoryImpl() DAAL_C11_OVERRIDE
757 _ptr = services::SharedPtr<byte>();
758 _colIndices = services::SharedPtr<size_t>();
759 _rowOffsets = services::SharedPtr<size_t>();
761 _memStatus = notAllocated;
766 template<
typename Archive,
bool onDeserialize>
767 services::Status serialImpl( Archive *arch )
769 NumericTable::serialImpl<Archive, onDeserialize>( arch );
774 dataSize = getDataSize();
776 arch->set( dataSize );
780 allocateDataMemory( dataSize );
783 size_t nfeat = getNumberOfColumns();
784 size_t nobs = getNumberOfRows();
788 NumericTableFeature &f = (*_ddict)[0];
790 arch->set( (
char *)_ptr.get(), dataSize * f.typeSize );
791 arch->set( _colIndices.get(), dataSize );
792 arch->set( _rowOffsets.get(), nobs + 1 );
795 return services::Status();
800 size_t getDataSize() DAAL_C11_OVERRIDE
802 size_t nobs = getNumberOfRows();
805 return _rowOffsets.get()[nobs] - _rowOffsets.get()[0];
815 template <
typename T>
816 services::Status getTBlock(
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
818 size_t ncols = getNumberOfColumns();
819 size_t nobs = getNumberOfRows();
820 block.setDetails( 0, idx, rwFlag );
821 size_t* rowOffsets = _rowOffsets.get();
825 block.resizeBuffer( ncols, 0 );
826 return services::Status();
829 NumericTableFeature &f = (*_ddict)[0];
833 T* location = (T*)(_ptr.get() + (rowOffsets[idx] - 1) * f.typeSize);
835 if( data_feature_utils::getIndexNumType<T>() == f.indexType )
837 castingBuffer = location;
839 if( !block.resizeBuffer( ncols, nrows ) )
840 return services::Status(services::ErrorMemoryAllocationFailed);
841 buffer = block.getBlockPtr();
845 size_t sparseBlockSize = rowOffsets[idx + nrows] - rowOffsets[idx];
847 if( !block.resizeBuffer( ncols, nrows, sparseBlockSize *
sizeof(T) ) )
848 return services::Status(services::ErrorMemoryAllocationFailed);
849 buffer = block.getBlockPtr();
851 castingBuffer = (T*)block.getAdditionalBufferPtr();
853 data_feature_utils::getVectorUpCast(f.indexType,data_feature_utils::getInternalNumType<T>())
854 ( sparseBlockSize, location, castingBuffer );
857 T *bufRowCursor = castingBuffer;
858 size_t *indicesCursor = _colIndices.get() + rowOffsets[idx] - 1;
860 for(
size_t i = 0; i < ncols * nrows; i++ ) { buffer[i] = (T)0; }
862 for(
size_t i = 0; i < nrows; i++ )
864 size_t sparseRowSize = rowOffsets[idx + i + 1] - rowOffsets[idx + i];
866 for(
size_t k = 0; k < sparseRowSize; k++ )
868 buffer[i * ncols + indicesCursor[k] - 1] = bufRowCursor[k];
871 bufRowCursor += sparseRowSize;
872 indicesCursor += sparseRowSize;
874 return services::Status();
877 template <
typename T>
878 services::Status releaseTBlock( BlockDescriptor<T> &block )
880 if (!(block.getRWFlag() & (int)writeOnly))
882 return services::Status();
885 template <
typename T>
886 services::Status getTFeature(
size_t feat_idx,
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
888 size_t ncols = getNumberOfColumns();
889 size_t nobs = getNumberOfRows();
890 block.setDetails( feat_idx, idx, rwFlag );
891 size_t* rowOffsets = _rowOffsets.get();
895 block.resizeBuffer( 1, 0 );
896 return services::Status();
899 nrows = ( idx + nrows < nobs ) ? nrows : nobs - idx;
901 if( !block.resizeBuffer( 1, nrows ) )
902 return services::Status(services::ErrorMemoryAllocationFailed);
904 NumericTableFeature &f = (*_ddict)[0];
906 char *rowCursor = (
char *)_ptr.get() + (rowOffsets[idx] - 1) * f.typeSize;
907 size_t *indicesCursor = _colIndices.get() + (rowOffsets[idx] - 1);
909 T* bufferPtr = block.getBlockPtr();
911 for(
size_t i = 0; i < nrows; i++)
915 size_t sparseRowSize = rowOffsets[idx + i + 1] - rowOffsets[idx + i];
917 for(
size_t k = 0; k < sparseRowSize; k++)
919 if( indicesCursor[k] - 1 == feat_idx )
921 data_feature_utils::getVectorUpCast(f.indexType, data_feature_utils::getInternalNumType<T>())
922 ( 1, rowCursor + k * f.typeSize, bufferPtr + i );
926 rowCursor += sparseRowSize * f.typeSize;
927 indicesCursor += sparseRowSize;
929 return services::Status();
932 template <
typename T>
933 services::Status releaseTFeature( BlockDescriptor<T> &block )
935 if(block.getRWFlag() & (int)writeOnly)
936 return services::Status();
938 return services::Status();
941 template <
typename T>
942 services::Status getSparseTBlock(
size_t idx,
size_t nrows,
int rwFlag, CSRBlockDescriptor<T> &block )
944 size_t ncols = getNumberOfColumns();
945 size_t nobs = getNumberOfRows();
946 block.setDetails( ncols, idx, rwFlag );
947 size_t* rowOffsets = _rowOffsets.get();
951 block.resizeValuesBuffer( 0 );
952 return services::Status();
955 nrows = ( idx + nrows < nobs ) ? nrows : nobs - idx;
957 NumericTableFeature &f = (*_ddict)[0];
960 size_t nValues = rowOffsets[idx + nrows] - rowOffsets[idx];
962 if( data_feature_utils::getIndexNumType<T>() == f.indexType )
964 block.setValuesPtr(&_ptr, _ptr.get() +(rowOffsets[idx] - 1) * f.typeSize, nValues);
968 if( !block.resizeValuesBuffer(nValues) ) {
return services::Status(); }
970 services::SharedPtr<byte> location(_ptr, _ptr.get() +(rowOffsets[idx] - 1) * f.typeSize);
971 data_feature_utils::getVectorUpCast(f.indexType, data_feature_utils::getInternalNumType<T>())
972 ( nValues, location.get(), block.getBlockValuesPtr() );
975 services::SharedPtr<size_t> shiftedColumns(_colIndices, _colIndices.get() + (rowOffsets[idx] - 1));
976 block.setColumnIndicesPtr( shiftedColumns, nValues );
980 block.setRowIndicesPtr( _rowOffsets, nrows );
984 if( !block.resizeRowsBuffer(nrows) ) {
return services::Status(); }
986 size_t *row_offsets = block.getBlockRowIndicesSharedPtr().get();
988 for(
size_t i = 0; i < nrows + 1; i++)
990 row_offsets[i] = rowOffsets[idx + i] - rowOffsets[idx] + 1;
993 return services::Status();
996 template <
typename T>
997 services::Status releaseSparseTBlock(CSRBlockDescriptor<T> &block)
999 if (block.getRWFlag() & (int)writeOnly)
1001 NumericTableFeature &f = (*_ddict)[0];
1002 if (f.indexType != data_feature_utils::getIndexNumType<T>())
1004 size_t nrows = block.getNumberOfRows();
1005 size_t idx = block.getRowsOffset();
1006 size_t nValues = _rowOffsets.get()[idx + nrows] - _rowOffsets.get()[idx];
1008 services::SharedPtr<byte> ptr = services::reinterpretPointerCast<byte, T>(block.getBlockValuesSharedPtr());
1009 services::SharedPtr<byte> location = services::SharedPtr<byte>(ptr, _ptr.get() + (_rowOffsets.get()[idx] - 1) * f.typeSize);
1011 data_feature_utils::getVectorDownCast(f.indexType, data_feature_utils::getInternalNumType<T>())
1012 (nValues, ptr.get(), location.get());
1016 return services::Status();
1019 virtual services::Status setNumberOfColumnsImpl(
size_t ncol) DAAL_C11_OVERRIDE
1021 _ddict->setNumberOfFeatures( ncol );
1022 _ddict->setAllFeatures( _defaultFeature );
1023 return services::Status();
1027 typedef services::SharedPtr<CSRNumericTableIface> CSRNumericTableIfacePtr;
1028 typedef services::SharedPtr<CSRNumericTable> CSRNumericTablePtr;
1031 using interface1::CSRNumericTableIface;
1032 using interface1::CSRNumericTableIfacePtr;
1033 using interface1::CSRBlockDescriptor;
1034 using interface1::CSRNumericTable;
1035 using interface1::CSRNumericTablePtr;
daal::data_management::interface1::CSRBlockDescriptor::setRowIndicesPtr
void setRowIndicesPtr(size_t *ptr, size_t nRows)
Definition: csr_numeric_table.h:149
daal::services::interface1::Status
Class that holds the results of API calls. In case of API routine failure it contains the list of err...
Definition: error_handling.h:491
daal
Definition: algorithm_base_common.h:57
daal::data_management::interface1::CSRNumericTable::getCSRIndexing
CSRIndexing getCSRIndexing() const
Definition: csr_numeric_table.h:708
daal::data_management::interface1::CSRNumericTable::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:603
daal::data_management::interface1::CSRNumericTable::getDataSize
size_t getDataSize() DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:800
daal::data_management::interface1::CSRNumericTable::setArrays
services::Status setArrays(const services::SharedPtr< DataType > &ptr, const services::SharedPtr< size_t > &colIndices, const services::SharedPtr< size_t > &rowOffsets, CSRIndexing indexing=oneBased)
Definition: csr_numeric_table.h:575
daal::data_management::interface1::CSRNumericTable::resize
virtual services::Status resize(size_t nrows) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:509
daal::data_management::interface1::CSRNumericTable::check
virtual services::Status check(const char *description, bool checkDataAllocation=true) const DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:716
daal::data_management::interface1::CSRBlockDescriptor::getNumberOfColumns
size_t getNumberOfColumns() const
Definition: csr_numeric_table.h:116
daal::data_management::interface1::CSRNumericTable::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:632
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:172
daal::data_management::interface1::CSRNumericTable::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:594
daal::data_management::interface1::CSRBlockDescriptor
Base class that manages buffer memory for read/write operations required by CSR numeric tables...
Definition: csr_numeric_table.h:71
daal::dram
Definition: daal_defines.h:159
daal::data_management::interface1::BlockDescriptor::getBlockPtr
DataType * getBlockPtr() const
Definition: numeric_table.h:95
daal::data_management::interface1::CSRNumericTable::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:636
daal::data_management::interface1::CSRNumericTable::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:598
daal::data_management::interface1::CSRNumericTable::getSparseBlock
services::Status getSparseBlock(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:646
daal::data_management::interface1::CSRNumericTable::setArrays
services::Status setArrays(DataType *const ptr, size_t *colIndices, size_t *rowOffsets, CSRIndexing indexing=oneBased)
Definition: csr_numeric_table.h:552
daal::data_management::interface1::CSRBlockDescriptor::setRowIndicesPtr
void setRowIndicesPtr(services::SharedPtr< size_t > ptr, size_t nRows)
Definition: csr_numeric_table.h:178
daal::algorithms::multivariate_outlier_detection::location
Definition: outlier_detection_multivariate_types.h:98
daal::data_management::interface1::BlockDescriptor::resizeBuffer
bool resizeBuffer(size_t nColumns, size_t nRows, size_t auxMemorySize=0)
Definition: numeric_table.h:177
daal::data_management::interface1::CSRNumericTable::getBlockOfRows
services::Status getBlockOfRows(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:590
daal::data_management::interface1::CSRNumericTable::CSRNumericTable
CSRNumericTable(DataType *const ptr, size_t *colIndices=0, size_t *rowOffsets=0, size_t nColumns=0, size_t nRows=0, CSRIndexing indexing=oneBased)
Definition: csr_numeric_table.h:418
daal::services::ErrorUnsupportedCSRIndexing
Definition: error_indexes.h:143
daal::data_management::interface1::BlockDescriptor::getAdditionalBufferPtr
void * getAdditionalBufferPtr() const
Definition: numeric_table.h:250
daal::services::interface1::SharedPtr
Shared pointer that retains shared ownership of an object through a pointer. Several SharedPtr object...
Definition: daal_shared_ptr.h:187
daal::data_management::interface1::CSRNumericTable::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: csr_numeric_table.h:626
daal::data_management::interface1::CSRNumericTable::getArrays
services::Status getArrays(DataType **ptr, size_t **colIndices, size_t **rowOffsets) const
Definition: csr_numeric_table.h:521
daal::services::daal_malloc
DAAL_EXPORT void * daal_malloc(size_t size, size_t alignment=DAAL_MALLOC_DEFAULT_ALIGNMENT)
daal::data_management::interface1::CSRNumericTable::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:607
daal::data_management::interface1::CSRNumericTable::releaseSparseBlock
services::Status releaseSparseBlock(CSRBlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:659
daal::services::interface1::SharedPtr::get
T * get() const
Definition: daal_shared_ptr.h:332
daal::data_management::interface1::CSRBlockDescriptor::resizeValuesBuffer
bool resizeValuesBuffer(size_t nValues)
Definition: csr_numeric_table.h:199
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::CSRNumericTable::getSparseBlock
services::Status getSparseBlock(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:654
daal::data_management::interface1::CSRNumericTable
Class that provides methods to access data stored in the CSR layout.
Definition: csr_numeric_table.h:387
daal::data_management::interface1::CSRBlockDescriptor::resizeRowsBuffer
bool resizeRowsBuffer(size_t nRows)
Definition: csr_numeric_table.h:224
daal::data_management::interface1::CSRNumericTable::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:611
daal::data_management::interface1::CSRNumericTableIface::CSRIndexing
CSRIndexing
Enumeration to specify the indexing scheme for access to data in the CSR layout.
Definition: csr_numeric_table.h:312
daal::data_management::interface1::BlockDescriptor::getRWFlag
size_t getRWFlag() const
Definition: numeric_table.h:244
daal::data_management::interface1::CSRBlockDescriptor::getBlockValuesSharedPtr
services::SharedPtr< DataType > getBlockValuesSharedPtr() const
Definition: csr_numeric_table.h:100
daal::services::interface1::ServiceDeleter
Implementation of DeleterIface to destroy a pointer by the daal_free function.
Definition: daal_shared_ptr.h:110
daal::data_management::interface1::CSRNumericTable::getArrays
services::Status getArrays(services::SharedPtr< DataType > &ptr, services::SharedPtr< size_t > &colIndices, services::SharedPtr< size_t > &rowOffsets) const
Definition: csr_numeric_table.h:536
daal::data_management::interface1::CSRNumericTable::create
static services::SharedPtr< CSRNumericTable > create(DataType *const ptr, size_t *colIndices=0, size_t *rowOffsets=0, size_t nColumns=0, size_t nRows=0, CSRIndexing indexing=oneBased, services::Status *stat=NULL)
Definition: csr_numeric_table.h:445
daal::data_management::interface1::CSRBlockDescriptor::getNumberOfRows
size_t getNumberOfRows() const
Definition: csr_numeric_table.h:122
daal::services::interface1::Error::create
static SharedPtr< Error > create(ErrorID id)
daal::data_management::interface1::CSRBlockDescriptor::freeValuesBuffer
void freeValuesBuffer()
Definition: csr_numeric_table.h:262
daal::data_management::interface1::BlockDescriptor::reset
void reset()
Definition: numeric_table.h:132
daal::data_management::interface1::CSRBlockDescriptor::reset
void reset()
Definition: csr_numeric_table.h:187
daal::data_management::interface1::CSRNumericTable::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: csr_numeric_table.h:616
daal::data_management::interface1::CSRNumericTable::allocateDataMemory
services::Status allocateDataMemory(size_t dataSize, daal::MemType type=daal::dram)
Definition: csr_numeric_table.h:677
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::data_management::interface1::NumericTable::check
virtual services::Status check(const char *description, bool checkDataAllocation=true) const DAAL_C11_OVERRIDE
Definition: numeric_table.h:787
daal::data_management::interface1::CSRNumericTableIface
Abstract class that defines the interface of CSR numeric tables.
Definition: csr_numeric_table.h:305
daal::data_management::interface1::NumericTableFeature::setType
void setType()
Definition: data_dictionary.h:117
daal::services::ErrorIncorrectNumberOfObservations
Definition: error_indexes.h:97
daal::data_management::interface1::CSRNumericTable::CSRNumericTable
CSRNumericTable(const services::SharedPtr< DataType > &ptr, const services::SharedPtr< size_t > &colIndices, const services::SharedPtr< size_t > &rowOffsets, size_t nColumns, size_t nRows, CSRIndexing indexing=oneBased)
Definition: csr_numeric_table.h:469
daal::data_management::interface1::CSRNumericTable::create
static services::SharedPtr< CSRNumericTable > create(const services::SharedPtr< DataType > &ptr, const services::SharedPtr< size_t > &colIndices, const services::SharedPtr< size_t > &rowOffsets, size_t nColumns, size_t nRows, CSRIndexing indexing=oneBased, services::Status *stat=NULL)
Definition: csr_numeric_table.h:495
daal::data_management::interface1::CSRBlockDescriptor::getBlockValuesPtr
DataType * getBlockValuesPtr() const
Definition: csr_numeric_table.h:84
daal::data_management::interface1::BlockDescriptor::setDetails
void setDetails(size_t columnIdx, size_t rowIdx, int rwFlag)
Definition: numeric_table.h:221
daal::data_management::interface1::CSRNumericTable::releaseSparseBlock
services::Status releaseSparseBlock(CSRBlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:663
daal::data_management::interface1::CSRNumericTable::getSparseBlock
services::Status getSparseBlock(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:650
daal::services::interface1::EmptyDeleter
Implementation of DeleterIface without pointer destroying.
Definition: daal_shared_ptr.h:125
daal::data_management::interface1::CSRBlockDescriptor::freeRowsBuffer
void freeRowsBuffer()
Definition: csr_numeric_table.h:274
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:74
daal::services::ArgumentName
Definition: error_indexes.h:76
daal::data_management::interface1::CSRNumericTable::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:640
daal::data_management::interface1::CSRBlockDescriptor::getDataSize
size_t getDataSize() const
Definition: csr_numeric_table.h:128
daal::MemType
MemType
Definition: daal_defines.h:157
daal::data_management::interface1::CSRNumericTable::releaseSparseBlock
services::Status releaseSparseBlock(CSRBlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:667
daal::data_management::interface1::CSRNumericTable::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: csr_numeric_table.h:621
daal::services::ErrorMethodNotSupported
Definition: error_indexes.h:95