24 #ifndef __CSR_NUMERIC_TABLE_H__
25 #define __CSR_NUMERIC_TABLE_H__
27 #include "services/base.h"
28 #include "data_management/data/numeric_table.h"
29 #include "data_management/data/data_serialize.h"
30 #include "data_management/data/internal/conversion.h"
34 namespace data_management
47 template<
typename DataType = DAAL_DATA_TYPE>
48 class DAAL_EXPORT CSRBlockDescriptor
55 ~CSRBlockDescriptor() { freeValuesBuffer(); freeRowsBuffer(); }
61 inline DataType *getBlockValuesPtr()
const
65 return (DataType *)_rawPtr;
67 return _values_ptr.get();
70 inline size_t *getBlockColumnIndicesPtr()
const {
return _cols_ptr.get(); }
71 inline size_t *getBlockRowIndicesPtr()
const {
return _rows_ptr.get(); }
77 inline services::SharedPtr<DataType> getBlockValuesSharedPtr()
const
81 return services::SharedPtr<DataType>(services::reinterpretPointerCast<DataType, byte>(*_pPtr), (DataType *)_rawPtr);
86 inline services::SharedPtr<size_t> getBlockColumnIndicesSharedPtr()
const {
return _cols_ptr; }
87 inline services::SharedPtr<size_t> getBlockRowIndicesSharedPtr()
const {
return _rows_ptr; }
93 inline size_t getNumberOfColumns()
const {
return _ncols; }
99 inline size_t getNumberOfRows()
const {
return _nrows; }
105 inline size_t getDataSize()
const
107 return ((_nrows > 0) ? _rows_ptr.get()[_nrows] - _rows_ptr.get()[0] : 0);
110 inline void setValuesPtr( DataType *ptr,
size_t nValues )
112 _values_ptr = services::SharedPtr<DataType>(ptr, services::EmptyDeleter());
116 inline void setColumnIndicesPtr(
size_t *ptr,
size_t nValues )
118 _cols_ptr = services::SharedPtr<size_t>(ptr, services::EmptyDeleter());
126 inline void setRowIndicesPtr(
size_t *ptr,
size_t nRows )
128 _rows_ptr = services::SharedPtr<size_t>(ptr, services::EmptyDeleter());
132 inline void setValuesPtr( services::SharedPtr<DataType> ptr,
size_t nValues )
138 inline void setValuesPtr( services::SharedPtr<byte> *pPtr, byte* rawPtr,
size_t nValues)
145 inline void setColumnIndicesPtr( services::SharedPtr<size_t> ptr,
size_t nValues )
155 inline void setRowIndicesPtr( services::SharedPtr<size_t> ptr,
size_t nRows )
176 inline bool resizeValuesBuffer(
size_t nValues )
178 size_t newSize = nValues *
sizeof(DataType);
179 if ( newSize > _values_capacity )
182 _values_buffer = services::SharedPtr<DataType>((DataType *)daal::services::daal_malloc(newSize), services::ServiceDeleter()) ;
183 if ( _values_buffer )
185 _values_capacity = newSize;
193 _values_ptr = _values_buffer;
201 inline bool resizeRowsBuffer(
size_t nRows )
204 size_t newSize = (nRows + 1) *
sizeof(
size_t);
205 if ( newSize > _rows_capacity )
208 _rows_buffer = services::SharedPtr<size_t>((
size_t *)daal::services::daal_malloc(newSize), services::ServiceDeleter()) ;
211 _rows_capacity = newSize;
220 _rows_ptr = _rows_buffer;
225 inline void setDetails(
size_t nColumns,
size_t rowIdx,
int rwFlag )
228 _rowsOffset = rowIdx;
232 inline size_t getRowsOffset()
const {
return _rowsOffset; }
233 inline size_t getRWFlag()
const {
return _rwFlag; }
239 void freeValuesBuffer()
243 _values_buffer = services::SharedPtr<DataType>();
245 _values_capacity = 0;
251 void freeRowsBuffer()
253 _rows_buffer = services::SharedPtr<size_t>();
258 services::SharedPtr<DataType> _values_ptr;
259 services::SharedPtr<size_t> _cols_ptr;
260 services::SharedPtr<size_t> _rows_ptr;
268 services::SharedPtr<DataType> _values_buffer;
269 size_t _values_capacity;
271 services::SharedPtr<size_t> _rows_buffer;
272 size_t _rows_capacity;
274 services::SharedPtr<byte> *_pPtr;
282 class CSRNumericTableIface
297 virtual ~CSRNumericTableIface() {}
304 virtual size_t getDataSize() = 0;
315 virtual services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<double> &block) = 0;
327 virtual services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<float> &block) = 0;
339 virtual services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<int> &block) = 0;
345 virtual services::Status releaseSparseBlock(CSRBlockDescriptor<double> &block) = 0;
351 virtual services::Status releaseSparseBlock(CSRBlockDescriptor<float> &block) = 0;
357 virtual services::Status releaseSparseBlock(CSRBlockDescriptor<int> &block) = 0;
364 class DAAL_EXPORT CSRNumericTable :
public NumericTable,
public CSRNumericTableIface
367 DECLARE_SERIALIZABLE_TAG();
368 DECLARE_SERIALIZABLE_IMPL();
370 DAAL_CAST_OPERATOR(CSRNumericTable)
375 CSRNumericTable(): NumericTable(0, 0, DictionaryIface::equal), _indexing(oneBased)
378 this->_status |= setArrays<double>( 0, 0, 0 );
394 template<
typename DataType>
395 CSRNumericTable( DataType *
const ptr,
size_t *colIndices = 0,
size_t *rowOffsets = 0,
396 size_t nColumns = 0,
size_t nRows = 0, CSRIndexing indexing = oneBased ):
397 NumericTable(nColumns, nRows, DictionaryIface::equal), _indexing(indexing)
400 this->_status |= setArrays<DataType>(ptr, colIndices, rowOffsets);
402 _defaultFeature.setType<DataType>();
403 this->_status |= _ddict->setAllFeatures( _defaultFeature );
421 template<
typename DataType>
422 static services::SharedPtr<CSRNumericTable> create(DataType *
const ptr,
size_t *colIndices = 0,
size_t *rowOffsets = 0,
423 size_t nColumns = 0,
size_t nRows = 0, CSRIndexing indexing = oneBased,
424 services::Status *stat = NULL)
426 return create<DataType>(services::SharedPtr<DataType>(ptr, services::EmptyDeleter()),
427 services::SharedPtr<size_t>(colIndices, services::EmptyDeleter()),
428 services::SharedPtr<size_t>(rowOffsets, services::EmptyDeleter()),
429 nColumns, nRows, indexing, stat);
445 template<
typename DataType>
446 CSRNumericTable(
const services::SharedPtr<DataType>& ptr,
const services::SharedPtr<size_t>& colIndices,
const services::SharedPtr<size_t>& rowOffsets,
447 size_t nColumns,
size_t nRows, CSRIndexing indexing = oneBased ):
448 NumericTable(nColumns, nRows, DictionaryIface::equal), _indexing(indexing)
451 this->_status |= setArrays<DataType>(ptr, colIndices, rowOffsets);
453 _defaultFeature.setType<DataType>();
454 this->_status |= _ddict->setAllFeatures( _defaultFeature );
471 template<
typename DataType>
472 static services::SharedPtr<CSRNumericTable> create(
const services::SharedPtr<DataType>& ptr,
473 const services::SharedPtr<size_t>& colIndices,
474 const services::SharedPtr<size_t>& rowOffsets,
475 size_t nColumns,
size_t nRows, CSRIndexing indexing = oneBased,
476 services::Status *stat = NULL)
478 DAAL_DEFAULT_CREATE_IMPL_EX(CSRNumericTable, ptr, colIndices, rowOffsets, nColumns, nRows, indexing);
481 virtual ~CSRNumericTable()
483 freeDataMemoryImpl();
486 virtual services::Status resize(
size_t nrows) DAAL_C11_OVERRIDE
488 return setNumberOfRowsImpl(nrows);
497 template<
typename DataType>
498 services::Status getArrays(DataType **ptr,
size_t **colIndices,
size_t **rowOffsets)
const
500 if (ptr) { *ptr = (DataType*)_ptr.get(); }
501 if (colIndices) { *colIndices = _colIndices.get(); }
502 if (rowOffsets) { *rowOffsets = _rowOffsets.get(); }
503 return services::Status();
512 template<
typename DataType>
513 services::Status getArrays(services::SharedPtr<DataType> &ptr, services::SharedPtr<size_t> &colIndices, services::SharedPtr<size_t> &rowOffsets)
const
515 if(ptr) { *ptr = _ptr; }
516 if (colIndices) { *colIndices = _colIndices; }
517 if (rowOffsets) { *rowOffsets = _rowOffsets; }
518 return services::Status();
528 template<
typename DataType>
529 services::Status setArrays(DataType *
const ptr,
size_t *colIndices,
size_t *rowOffsets, CSRIndexing indexing = oneBased)
531 freeDataMemoryImpl();
535 _ptr = services::SharedPtr<byte>((byte*)ptr, services::EmptyDeleter());
536 _colIndices = services::SharedPtr<size_t>(colIndices, services::EmptyDeleter());
537 _rowOffsets = services::SharedPtr<size_t>(rowOffsets, services::EmptyDeleter());
538 _indexing = indexing;
540 if( ptr != 0 && colIndices != 0 && rowOffsets != 0 ) { _memStatus = userAllocated; }
541 return services::Status();
551 template<
typename DataType>
552 services::Status setArrays(
const services::SharedPtr<DataType>& ptr,
const services::SharedPtr<size_t>& colIndices,
const services::SharedPtr<size_t>& rowOffsets, CSRIndexing indexing = oneBased)
554 freeDataMemoryImpl();
558 _ptr = services::reinterpretPointerCast<byte, DataType>(ptr);
559 _colIndices = colIndices;
560 _rowOffsets = rowOffsets;
561 _indexing = indexing;
563 if( ptr && colIndices && rowOffsets ) { _memStatus = userAllocated; }
564 return services::Status();
567 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
569 return getTBlock<double>(vector_idx, vector_num, rwflag, block);
571 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
573 return getTBlock<float>(vector_idx, vector_num, rwflag, block);
575 services::Status getBlockOfRows(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
577 return getTBlock<int>(vector_idx, vector_num, rwflag, block);
580 services::Status releaseBlockOfRows(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
582 return releaseTBlock<double>(block);
584 services::Status releaseBlockOfRows(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
586 return releaseTBlock<float>(block);
588 services::Status releaseBlockOfRows(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
590 return releaseTBlock<int>(block);
593 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
594 ReadWriteMode rwflag, BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
596 return getTFeature<double>(feature_idx, vector_idx, value_num, rwflag, block);
598 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
599 ReadWriteMode rwflag, BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
601 return getTFeature<float>(feature_idx, vector_idx, value_num, rwflag, block);
603 services::Status getBlockOfColumnValues(
size_t feature_idx,
size_t vector_idx,
size_t value_num,
604 ReadWriteMode rwflag, BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
606 return getTFeature<int>(feature_idx, vector_idx, value_num, rwflag, block);
609 services::Status releaseBlockOfColumnValues(BlockDescriptor<double> &block) DAAL_C11_OVERRIDE
611 return releaseTFeature<double>(block);
613 services::Status releaseBlockOfColumnValues(BlockDescriptor<float> &block) DAAL_C11_OVERRIDE
615 return releaseTFeature<float>(block);
617 services::Status releaseBlockOfColumnValues(BlockDescriptor<int> &block) DAAL_C11_OVERRIDE
619 return releaseTFeature<int>(block);
623 services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<double> &block) DAAL_C11_OVERRIDE
625 return getSparseTBlock<double>(vector_idx, vector_num, rwflag, block);
627 services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<float> &block) DAAL_C11_OVERRIDE
629 return getSparseTBlock<float>(vector_idx, vector_num, rwflag, block);
631 services::Status getSparseBlock(
size_t vector_idx,
size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor<int> &block) DAAL_C11_OVERRIDE
633 return getSparseTBlock<int>(vector_idx, vector_num, rwflag, block);
636 services::Status releaseSparseBlock(CSRBlockDescriptor<double> &block) DAAL_C11_OVERRIDE
638 return releaseSparseTBlock<double>(block);
640 services::Status releaseSparseBlock(CSRBlockDescriptor<float> &block) DAAL_C11_OVERRIDE
642 return releaseSparseTBlock<float>(block);
644 services::Status releaseSparseBlock(CSRBlockDescriptor<int> &block) DAAL_C11_OVERRIDE
646 return releaseSparseTBlock<int>(block);
654 services::Status allocateDataMemory(
size_t dataSize, daal::MemType type = daal::dram)
656 freeDataMemoryImpl();
658 size_t nrow = getNumberOfRows();
661 return services::Status(services::ErrorIncorrectNumberOfObservations);
663 NumericTableFeature &f = (*_ddict)[0];
665 _ptr = services::SharedPtr<byte> ( (byte*)daal::services::daal_malloc( dataSize * f.typeSize ), services::ServiceDeleter ());
666 _colIndices = services::SharedPtr<size_t>((
size_t *)daal::services::daal_malloc( dataSize *
sizeof(
size_t) ), services::ServiceDeleter());
667 _rowOffsets = services::SharedPtr<size_t>((
size_t *)daal::services::daal_malloc( (nrow + 1) *
sizeof(size_t) ), services::ServiceDeleter());
669 _memStatus = internallyAllocated;
671 if( !_ptr || !_colIndices || !_rowOffsets )
673 freeDataMemoryImpl();
674 return services::Status(services::ErrorMemoryAllocationFailed);
677 _rowOffsets.get()[0] = ((_indexing == oneBased) ? 1 : 0);
678 return services::Status();
685 CSRIndexing getCSRIndexing()
const
693 virtual services::Status check(
const char *description,
bool checkDataAllocation =
true) const DAAL_C11_OVERRIDE
696 DAAL_CHECK_STATUS(s, data_management::NumericTable::check(description, checkDataAllocation));
698 if( _indexing != oneBased )
700 return services::Status(services::Error::create(services::ErrorUnsupportedCSRIndexing, services::ArgumentName, description));
703 return services::Status();
707 NumericTableFeature _defaultFeature;
708 CSRIndexing _indexing;
710 services::SharedPtr<byte> _ptr;
711 services::SharedPtr<size_t> _colIndices;
712 services::SharedPtr<size_t> _rowOffsets;
714 template<
typename DataType>
715 CSRNumericTable(
const services::SharedPtr<DataType>& ptr,
const services::SharedPtr<size_t>& colIndices,
const services::SharedPtr<size_t>& rowOffsets,
716 size_t nColumns,
size_t nRows, CSRIndexing indexing,
717 services::Status &st):
718 NumericTable(nColumns, nRows, DictionaryIface::equal, st), _indexing(indexing)
721 st |= setArrays<DataType>(ptr, colIndices, rowOffsets);
723 _defaultFeature.setType<DataType>();
724 st |= _ddict->setAllFeatures( _defaultFeature );
727 services::Status allocateDataMemoryImpl(daal::MemType type = daal::dram) DAAL_C11_OVERRIDE
729 return services::Status(services::ErrorMethodNotSupported);
732 void freeDataMemoryImpl() DAAL_C11_OVERRIDE
734 _ptr = services::SharedPtr<byte>();
735 _colIndices = services::SharedPtr<size_t>();
736 _rowOffsets = services::SharedPtr<size_t>();
738 _memStatus = notAllocated;
743 template<
typename Archive,
bool onDeserialize>
744 services::Status serialImpl( Archive *arch )
746 NumericTable::serialImpl<Archive, onDeserialize>( arch );
751 dataSize = getDataSize();
753 arch->set( dataSize );
757 allocateDataMemory( dataSize );
760 size_t nfeat = getNumberOfColumns();
761 size_t nobs = getNumberOfRows();
765 NumericTableFeature &f = (*_ddict)[0];
767 arch->set( (
char *)_ptr.get(), dataSize * f.typeSize );
768 arch->set( _colIndices.get(), dataSize );
769 arch->set( _rowOffsets.get(), nobs + 1 );
772 return services::Status();
777 size_t getDataSize() DAAL_C11_OVERRIDE
779 size_t nobs = getNumberOfRows();
782 return _rowOffsets.get()[nobs] - _rowOffsets.get()[0];
792 template <
typename T>
793 services::Status getTBlock(
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
795 size_t ncols = getNumberOfColumns();
796 size_t nobs = getNumberOfRows();
797 block.setDetails( 0, idx, rwFlag );
798 size_t* rowOffsets = _rowOffsets.get();
802 block.resizeBuffer( ncols, 0 );
803 return services::Status();
806 NumericTableFeature &f = (*_ddict)[0];
810 T* location = (T*)(_ptr.get() + (rowOffsets[idx] - 1) * f.typeSize);
812 if( features::internal::getIndexNumType<T>() == f.indexType )
814 castingBuffer = location;
816 if( !block.resizeBuffer( ncols, nrows ) )
817 return services::Status(services::ErrorMemoryAllocationFailed);
818 buffer = block.getBlockPtr();
822 size_t sparseBlockSize = rowOffsets[idx + nrows] - rowOffsets[idx];
824 if( !block.resizeBuffer( ncols, nrows, sparseBlockSize *
sizeof(T) ) )
825 return services::Status(services::ErrorMemoryAllocationFailed);
826 buffer = block.getBlockPtr();
828 castingBuffer = (T*)block.getAdditionalBufferPtr();
830 internal::getVectorUpCast(f.indexType, internal::getConversionDataType<T>())
831 ( sparseBlockSize, location, castingBuffer );
834 T *bufRowCursor = castingBuffer;
835 size_t *indicesCursor = _colIndices.get() + rowOffsets[idx] - 1;
837 for(
size_t i = 0; i < ncols * nrows; i++ ) { buffer[i] = (T)0; }
839 for(
size_t i = 0; i < nrows; i++ )
841 size_t sparseRowSize = rowOffsets[idx + i + 1] - rowOffsets[idx + i];
843 for(
size_t k = 0; k < sparseRowSize; k++ )
845 buffer[i * ncols + indicesCursor[k] - 1] = bufRowCursor[k];
848 bufRowCursor += sparseRowSize;
849 indicesCursor += sparseRowSize;
851 return services::Status();
854 template <
typename T>
855 services::Status releaseTBlock( BlockDescriptor<T> &block )
857 if (!(block.getRWFlag() & (int)writeOnly))
859 return services::Status();
862 template <
typename T>
863 services::Status getTFeature(
size_t feat_idx,
size_t idx,
size_t nrows,
int rwFlag, BlockDescriptor<T> &block)
865 size_t ncols = getNumberOfColumns();
866 size_t nobs = getNumberOfRows();
867 block.setDetails( feat_idx, idx, rwFlag );
868 size_t* rowOffsets = _rowOffsets.get();
872 block.resizeBuffer( 1, 0 );
873 return services::Status();
876 nrows = ( idx + nrows < nobs ) ? nrows : nobs - idx;
878 if( !block.resizeBuffer( 1, nrows ) )
879 return services::Status(services::ErrorMemoryAllocationFailed);
881 NumericTableFeature &f = (*_ddict)[0];
883 char *rowCursor = (
char *)_ptr.get() + (rowOffsets[idx] - 1) * f.typeSize;
884 size_t *indicesCursor = _colIndices.get() + (rowOffsets[idx] - 1);
886 T* bufferPtr = block.getBlockPtr();
888 for(
size_t i = 0; i < nrows; i++)
892 size_t sparseRowSize = rowOffsets[idx + i + 1] - rowOffsets[idx + i];
894 for(
size_t k = 0; k < sparseRowSize; k++)
896 if( indicesCursor[k] - 1 == feat_idx )
898 internal::getVectorUpCast(f.indexType, internal::getConversionDataType<T>())
899 ( 1, rowCursor + k * f.typeSize, bufferPtr + i );
903 rowCursor += sparseRowSize * f.typeSize;
904 indicesCursor += sparseRowSize;
906 return services::Status();
909 template <
typename T>
910 services::Status releaseTFeature( BlockDescriptor<T> &block )
912 if(block.getRWFlag() & (int)writeOnly)
913 return services::Status();
915 return services::Status();
918 template <
typename T>
919 services::Status getSparseTBlock(
size_t idx,
size_t nrows,
int rwFlag, CSRBlockDescriptor<T> &block )
921 size_t ncols = getNumberOfColumns();
922 size_t nobs = getNumberOfRows();
923 block.setDetails( ncols, idx, rwFlag );
924 size_t* rowOffsets = _rowOffsets.get();
928 block.resizeValuesBuffer( 0 );
929 return services::Status();
932 nrows = ( idx + nrows < nobs ) ? nrows : nobs - idx;
934 NumericTableFeature &f = (*_ddict)[0];
937 size_t nValues = rowOffsets[idx + nrows] - rowOffsets[idx];
939 if( features::internal::getIndexNumType<T>() == f.indexType )
941 block.setValuesPtr(&_ptr, _ptr.get() +(rowOffsets[idx] - 1) * f.typeSize, nValues);
945 if( !block.resizeValuesBuffer(nValues) ) {
return services::Status(); }
947 services::SharedPtr<byte> location(_ptr, _ptr.get() +(rowOffsets[idx] - 1) * f.typeSize);
948 internal::getVectorUpCast(f.indexType, internal::getConversionDataType<T>())
949 ( nValues, location.get(), block.getBlockValuesPtr() );
952 services::SharedPtr<size_t> shiftedColumns(_colIndices, _colIndices.get() + (rowOffsets[idx] - 1));
953 block.setColumnIndicesPtr( shiftedColumns, nValues );
957 block.setRowIndicesPtr( _rowOffsets, nrows );
961 if( !block.resizeRowsBuffer(nrows) ) {
return services::Status(); }
963 size_t *row_offsets = block.getBlockRowIndicesSharedPtr().get();
965 for(
size_t i = 0; i < nrows + 1; i++)
967 row_offsets[i] = rowOffsets[idx + i] - rowOffsets[idx] + 1;
970 return services::Status();
973 template <
typename T>
974 services::Status releaseSparseTBlock(CSRBlockDescriptor<T> &block)
976 if (block.getRWFlag() & (int)writeOnly)
978 NumericTableFeature &f = (*_ddict)[0];
979 if (f.indexType != features::internal::getIndexNumType<T>())
981 size_t nrows = block.getNumberOfRows();
982 size_t idx = block.getRowsOffset();
983 size_t nValues = _rowOffsets.get()[idx + nrows] - _rowOffsets.get()[idx];
985 services::SharedPtr<byte> ptr = services::reinterpretPointerCast<byte, T>(block.getBlockValuesSharedPtr());
986 services::SharedPtr<byte> location = services::SharedPtr<byte>(ptr, _ptr.get() + (_rowOffsets.get()[idx] - 1) * f.typeSize);
988 internal::getVectorDownCast(f.indexType, internal::getConversionDataType<T>())
989 (nValues, ptr.get(), location.get());
993 return services::Status();
996 virtual services::Status setNumberOfColumnsImpl(
size_t ncol) DAAL_C11_OVERRIDE
998 _ddict->setNumberOfFeatures( ncol );
999 _ddict->setAllFeatures( _defaultFeature );
1000 return services::Status();
1004 typedef services::SharedPtr<CSRNumericTableIface> CSRNumericTableIfacePtr;
1005 typedef services::SharedPtr<CSRNumericTable> CSRNumericTablePtr;
1008 using interface1::CSRNumericTableIface;
1009 using interface1::CSRNumericTableIfacePtr;
1010 using interface1::CSRBlockDescriptor;
1011 using interface1::CSRNumericTable;
1012 using interface1::CSRNumericTablePtr;
daal::services::ErrorMethodNotSupported
Definition: error_indexes.h:71
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:603
daal::services::ArgumentName
Definition: error_indexes.h:52
daal::data_management::interface1::CSRBlockDescriptor::getBlockValuesPtr
DataType * getBlockValuesPtr() const
Definition: csr_numeric_table.h:61
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:571
daal::data_management::interface1::CSRBlockDescriptor::freeRowsBuffer
void freeRowsBuffer()
Definition: csr_numeric_table.h:251
daal::data_management::interface1::CSRNumericTableIface
Abstract class that defines the interface of CSR numeric tables.
Definition: csr_numeric_table.h:282
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:395
daal::algorithms::multivariate_outlier_detection::location
Definition: outlier_detection_multivariate_types.h:74
daal::data_management::interface1::CSRNumericTable::getCSRIndexing
CSRIndexing getCSRIndexing() const
Definition: csr_numeric_table.h:685
daal::services::ErrorIncorrectNumberOfObservations
Definition: error_indexes.h:73
daal::data_management::interface1::BlockDescriptor::getAdditionalBufferPtr
void * getAdditionalBufferPtr() const
Definition: numeric_table.h:226
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:48
daal::data_management::interface1::CSRNumericTable::releaseSparseBlock
services::Status releaseSparseBlock(CSRBlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:644
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::CSRNumericTable::resize
virtual services::Status resize(size_t nrows) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:486
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:529
daal::data_management::interface1::CSRBlockDescriptor::resizeRowsBuffer
bool resizeRowsBuffer(size_t nRows)
Definition: csr_numeric_table.h:201
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:513
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:472
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:631
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:693
daal::data_management::interface1::CSRBlockDescriptor::getBlockValuesSharedPtr
services::SharedPtr< DataType > getBlockValuesSharedPtr() const
Definition: csr_numeric_table.h:77
daal::MemType
MemType
Definition: daal_defines.h:147
daal::data_management::interface1::CSRNumericTable::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:584
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:598
daal::data_management::interface1::CSRNumericTable::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:609
daal::data_management::interface1::CSRNumericTable::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:588
daal::data_management::interface1::CSRNumericTableIface::releaseSparseBlock
virtual services::Status releaseSparseBlock(CSRBlockDescriptor< double > &block)=0
daal::data_management::interface1::CSRNumericTableIface::getSparseBlock
virtual services::Status getSparseBlock(size_t vector_idx, size_t vector_num, ReadWriteMode rwflag, CSRBlockDescriptor< double > &block)=0
daal::data_management::interface1::CSRBlockDescriptor::resizeValuesBuffer
bool resizeValuesBuffer(size_t nValues)
Definition: csr_numeric_table.h:176
daal::data_management::interface1::CSRBlockDescriptor::reset
void reset()
Definition: csr_numeric_table.h:164
daal::data_management::interface1::CSRNumericTable::releaseSparseBlock
services::Status releaseSparseBlock(CSRBlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:640
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:552
daal::data_management::interface1::CSRNumericTable::getArrays
services::Status getArrays(DataType **ptr, size_t **colIndices, size_t **rowOffsets) const
Definition: csr_numeric_table.h:498
daal::data_management::interface1::CSRNumericTable::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< float > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:613
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:593
daal::data_management::interface1::CSRNumericTable::getDataSize
size_t getDataSize() DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:777
daal::data_management::interface1::CSRBlockDescriptor::setRowIndicesPtr
void setRowIndicesPtr(size_t *ptr, size_t nRows)
Definition: csr_numeric_table.h:126
daal::data_management::interface1::CSRBlockDescriptor::getDataSize
size_t getDataSize() const
Definition: csr_numeric_table.h:105
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::CSRNumericTable::allocateDataMemory
services::Status allocateDataMemory(size_t dataSize, daal::MemType type=daal::dram)
Definition: csr_numeric_table.h:654
daal::data_management::interface1::CSRNumericTable::releaseSparseBlock
services::Status releaseSparseBlock(CSRBlockDescriptor< double > &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< double > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:567
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:575
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::CSRBlockDescriptor::freeValuesBuffer
void freeValuesBuffer()
Definition: csr_numeric_table.h:239
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:623
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:150
daal::data_management::interface1::CSRBlockDescriptor::getNumberOfColumns
size_t getNumberOfColumns() const
Definition: csr_numeric_table.h:93
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:627
daal::data_management::interface1::CSRNumericTable
Class that provides methods to access data stored in the CSR layout.
Definition: csr_numeric_table.h:364
daal::data_management::interface1::NumericTableFeature
Data structure describes the Numeric Table feature.
Definition: data_dictionary.h:53
daal::data_management::interface1::CSRNumericTable::releaseBlockOfColumnValues
services::Status releaseBlockOfColumnValues(BlockDescriptor< int > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:617
daal::data_management::interface1::CSRNumericTableIface::zeroBased
Definition: csr_numeric_table.h:291
daal::data_management::interface1::CSRNumericTableIface::getDataSize
virtual size_t getDataSize()=0
daal::data_management::interface1::CSRBlockDescriptor::getNumberOfRows
size_t getNumberOfRows() const
Definition: csr_numeric_table.h:99
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:289
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:446
daal::data_management::interface1::CSRNumericTable::releaseBlockOfRows
services::Status releaseBlockOfRows(BlockDescriptor< double > &block) DAAL_C11_OVERRIDE
Definition: csr_numeric_table.h:580
daal::data_management::interface1::CSRNumericTableIface::oneBased
Definition: csr_numeric_table.h:292
daal::services::ErrorUnsupportedCSRIndexing
Definition: error_indexes.h:119
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:422
daal::data_management::interface1::BlockDescriptor::setDetails
void setDetails(size_t columnIdx, size_t rowIdx, int rwFlag)
Definition: numeric_table.h:197
daal::data_management::interface1::BlockDescriptor::getBlockPtr
DataType * getBlockPtr() const
Definition: numeric_table.h:71
daal::data_management::interface1::CSRBlockDescriptor::setRowIndicesPtr
void setRowIndicesPtr(services::SharedPtr< size_t > ptr, size_t nRows)
Definition: csr_numeric_table.h:155
daal::data_management::interface1::BlockDescriptor::resizeBuffer
bool resizeBuffer(size_t nColumns, size_t nRows, size_t auxMemorySize=0)
Definition: numeric_table.h:153