mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 11:49:02 +08:00
Advertize the packet api of the tensor reducers iff the corresponding packet primitives are available.
This commit is contained in:
parent
84df9142e7
commit
bb3ff8e9d9
@ -87,7 +87,7 @@ struct functor_traits<scalar_sigmoid_op<T> > {
|
|||||||
// Standard reduction functors
|
// Standard reduction functors
|
||||||
template <typename T> struct SumReducer
|
template <typename T> struct SumReducer
|
||||||
{
|
{
|
||||||
static const bool PacketAccess = true;
|
static const bool PacketAccess = packet_traits<T>::HasAdd;
|
||||||
static const bool IsStateful = false;
|
static const bool IsStateful = false;
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
|
||||||
@ -121,7 +121,7 @@ template <typename T> struct SumReducer
|
|||||||
|
|
||||||
template <typename T> struct MeanReducer
|
template <typename T> struct MeanReducer
|
||||||
{
|
{
|
||||||
static const bool PacketAccess = !NumTraits<T>::IsInteger;
|
static const bool PacketAccess = packet_traits<T>::HasAdd && !NumTraits<T>::IsInteger;
|
||||||
static const bool IsStateful = true;
|
static const bool IsStateful = true;
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
|
||||||
@ -164,7 +164,7 @@ template <typename T> struct MeanReducer
|
|||||||
|
|
||||||
template <typename T> struct MaxReducer
|
template <typename T> struct MaxReducer
|
||||||
{
|
{
|
||||||
static const bool PacketAccess = true;
|
static const bool PacketAccess = packet_traits<T>::HasMax;
|
||||||
static const bool IsStateful = false;
|
static const bool IsStateful = false;
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
|
||||||
@ -197,7 +197,7 @@ template <typename T> struct MaxReducer
|
|||||||
|
|
||||||
template <typename T> struct MinReducer
|
template <typename T> struct MinReducer
|
||||||
{
|
{
|
||||||
static const bool PacketAccess = true;
|
static const bool PacketAccess = packet_traits<T>::HasMin;
|
||||||
static const bool IsStateful = false;
|
static const bool IsStateful = false;
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
|
||||||
@ -231,7 +231,7 @@ template <typename T> struct MinReducer
|
|||||||
|
|
||||||
template <typename T> struct ProdReducer
|
template <typename T> struct ProdReducer
|
||||||
{
|
{
|
||||||
static const bool PacketAccess = true;
|
static const bool PacketAccess = packet_traits<T>::HasMul;
|
||||||
static const bool IsStateful = false;
|
static const bool IsStateful = false;
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void reduce(const T t, T* accum) const {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user