/usr/local/lib64/python3.6/site-packages/torch/include/caffe2/utils
NameSizeModeActions
math/-0755rm
threadpool/-0755rm
bench_utils.h8540644editdlrm
cast.h11100644editdlrm
cblas.h341830644editdlrm
conversions.h6610644editdlrm
cpuid.h25600644editdlrm
cpu_neon.h15780644editdlrm
eigen_utils.h67060644editdlrm
filler.h39870644editdlrm
fixed_divisor.h36340644editdlrm
knobs.h5320644editdlrm
knob_patcher.h7150644editdlrm
map_utils.h6350644editdlrm
math-detail.h19160644editdlrm
math.h152510644editdlrm
murmur_hash3.h9090644editdlrm
proto_convert.h2630644editdlrm
proto_utils.h132540644editdlrm
proto_wrap.h3780644editdlrm
signal_handler.h6980644editdlrm
simple_queue.h26020644editdlrm
smart_tensor_printer.h14020644editdlrm
string_utils.h12060644editdlrm
zmq_helper.h30200644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/caffe2/utils/eigen_utils.h (6706B)
// Copyright 2004-present Facebook. All Rights Reserved. #ifndef CAFFE2_OPERATORS_UTILS_EIGEN_H_ #define CAFFE2_OPERATORS_UTILS_EIGEN_H_ #include "Eigen/Core" #include "Eigen/Dense" #include #include namespace caffe2 { // Common Eigen types that we will often use template using EigenMatrixMap = Eigen::Map>; template using EigenArrayMap = Eigen::Map>; template using EigenVectorMap = Eigen::Map>; template using EigenVectorArrayMap = Eigen::Map>; template using ConstEigenMatrixMap = Eigen::Map>; template using ConstEigenArrayMap = Eigen::Map>; template using ConstEigenVectorMap = Eigen::Map>; template using ConstEigenVectorArrayMap = Eigen::Map>; using EigenOuterStride = Eigen::OuterStride; using EigenInnerStride = Eigen::InnerStride; using EigenStride = Eigen::Stride; template using EigenOuterStridedMatrixMap = Eigen:: Map, 0, EigenOuterStride>; template using EigenOuterStridedArrayMap = Eigen:: Map, 0, EigenOuterStride>; template using ConstEigenOuterStridedMatrixMap = Eigen::Map< const Eigen::Matrix, 0, EigenOuterStride>; template using ConstEigenOuterStridedArrayMap = Eigen::Map< const Eigen::Array, 0, EigenOuterStride>; template using EigenStridedMatrixMap = Eigen:: Map, 0, EigenStride>; template using EigenStridedArrayMap = Eigen::Map, 0, EigenStride>; template using ConstEigenStridedMatrixMap = Eigen:: Map, 0, EigenStride>; template using ConstEigenStridedArrayMap = Eigen:: Map, 0, EigenStride>; // 1-d array template using EArrXt = Eigen::Array; using EArrXf = Eigen::ArrayXf; using EArrXd = Eigen::ArrayXd; using EArrXi = Eigen::ArrayXi; using EArrXb = EArrXt; using EArrXI32 = EArrXt; using EArrXU16 = EArrXt; using EArrXU8 = EArrXt; using EArr3U8 = Eigen::Array; // 2-d array, column major template using EArrXXt = Eigen::Array; using EArrXXf = Eigen::ArrayXXf; using EArrXXI32 = EArrXXt; using EArrXXU16 = EArrXXt; using EArrXXU8 = EArrXXt; using EArrXXi = EArrXXt; // 2-d array, row major template using ERArrXXt = Eigen::Array; using ERArrXXf = ERArrXXt; using ERArrXXI32t = ERArrXXt; using ERArrXXU16t = ERArrXXt; using ERArrXXU8t = ERArrXXt; using ERArrXXi = ERArrXXt; using ERArrXXi64t = ERArrXXt; using ERArrXXi32t = ERArrXXt; // 1-d vector template using EVecXt = Eigen::Matrix; using EVecXd = Eigen::VectorXd; using EVecXf = Eigen::VectorXf; // 1-d row vector using ERVecXd = Eigen::RowVectorXd; using ERVecXf = Eigen::RowVectorXf; // 2-d matrix, column major template using EMatXt = Eigen::Matrix; using EMatXd = Eigen::MatrixXd; using EMatXf = Eigen::MatrixXf; using EMatXU8 = EMatXt; using EMatXU16 = EMatXt; // 2-d matrix, row major template using ERMatXt = Eigen::Matrix; using ERMatXd = ERMatXt; using ERMatXf = ERMatXt; using ERMatXU8 = ERMatXt; namespace utils { template Eigen::Map> AsEArrXt(const std::vector& arr) { return {arr.data(), static_cast(arr.size())}; } template Eigen::Map> AsEArrXt(std::vector& arr) { return {arr.data(), static_cast(arr.size())}; } // return a sub array of 'array' based on indices 'indices' template void GetSubArray( const Eigen::ArrayBase& array, const Eigen::ArrayBase& indices, Eigen::ArrayBase* out_array) { CAFFE_ENFORCE_EQ(array.cols(), 1); // using T = typename Derived::Scalar; out_array->derived().resize(indices.size()); for (const auto i : c10::irange(indices.size())) { DCHECK_LT(indices[i], array.size()); (*out_array)[i] = array[indices[i]]; } } // return a sub array of 'array' based on indices 'indices' template EArrXt GetSubArray( const Eigen::ArrayBase& array, const Eigen::ArrayBase& indices) { using T = typename Derived::Scalar; EArrXt ret(indices.size()); GetSubArray(array, indices, &ret); return ret; } // return a sub array of 'array' based on indices 'indices' template EArrXt GetSubArray( const Eigen::ArrayBase& array, const std::vector& indices) { return GetSubArray(array, AsEArrXt(indices)); } // return 2d sub array of 'array' based on row indices 'row_indices' template void GetSubArrayRows( const Eigen::ArrayBase& array2d, const Eigen::ArrayBase& row_indices, Eigen::ArrayBase* out_array) { out_array->derived().resize(row_indices.size(), array2d.cols()); for (const auto i : c10::irange(row_indices.size())) { DCHECK_LT(row_indices[i], array2d.size()); out_array->row(i) = array2d.row(row_indices[i]).template cast(); } } // return indices of 1d array for elements evaluated to true template std::vector GetArrayIndices(const Eigen::ArrayBase& array) { std::vector ret; for (const auto i : c10::irange(array.size())) { if (array[i]) { ret.push_back(i); } } return ret; } } // namespace utils } // namespace caffe2 #endif