MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / block

Function block

tensorflow/core/kernels/eigen_contraction_kernel.h:415–445  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

413 /*inner_dim_reordered=*/false, Alignment>; \
414 \
415 static bool block(const typename DataMapper::SubMapper& data_mapper, \
416 const StorageIndex rows, const StorageIndex cols, \
417 const StorageIndex num_kernels, \
418 ColMajorBlock<Scalar, StorageIndex>* block) { \
419 static_assert(DataMapper::DirectOffsets == true, \
420 "DataMapper must support direct offsets"); \
421 \
422 const StorageIndex vert_offset = data_mapper.vert_offset(); \
423 const StorageIndex horiz_offset = data_mapper.horiz_offset(); \
424 const StorageIndex stride = \
425 Side == Lhs ? data_mapper.base_mapper().stride() \
426 : data_mapper.base_mapper().nocontract_strides()[0]; \
427 const Scalar* data = data_mapper.base_mapper().tensor().data(); \
428 data = Side == Lhs ? data : data + vert_offset + horiz_offset * stride; \
429 \
430 const bool is_no_op_packing = stride == rows; \
431 const StorageIndex addressable_mem = (stride * cols * sizeof(Scalar)); \
432 const bool use_direct_access = \
433 is_no_op_packing || num_kernels == 1 /* used once */ || \
434 ((num_kernels == 2) && \
435 (addressable_mem < (256 << 10) /* 256 kb */)); \
436 \
437 if (use_direct_access) { \
438 block->is_direct_access = true; \
439 block->raw_data = const_cast<Scalar*>(data); \
440 block->stride = stride; \
441 block->transpose = 'N'; \
442 return true; \
443 } \
444 return false; \
445 } \
446 }
447
448#define SIMPLE_TENSOR const Tensor<Scalar, 2, Eigen::ColMajor, StorageIndex>

Callers 12

callMethod · 0.85
callMethod · 0.85
_resnet_smallMethod · 0.85
_resnet_smallMethod · 0.85
packLhsFunction · 0.85
packRhsFunction · 0.85

Calls 3

strideMethod · 0.45
dataMethod · 0.45
tensorMethod · 0.45