mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Fix calls to device functions from host code
(cherry picked from commit 972cf0c28a)
This commit is contained in:
committed by
Rasmus Munk Larsen
parent
d1825cbb68
commit
82f13830e6
@@ -195,14 +195,14 @@ class TensorConversionOp : public TensorBase<TensorConversionOp<TargetType, XprT
|
||||
};
|
||||
|
||||
template <bool SameType, typename Eval, typename EvalPointerType> struct ConversionSubExprEval {
|
||||
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool run(Eval& impl, EvalPointerType) {
|
||||
static EIGEN_STRONG_INLINE bool run(Eval& impl, EvalPointerType) {
|
||||
impl.evalSubExprsIfNeeded(NULL);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Eval, typename EvalPointerType> struct ConversionSubExprEval<true, Eval, EvalPointerType> {
|
||||
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool run(Eval& impl, EvalPointerType data) {
|
||||
static EIGEN_STRONG_INLINE bool run(Eval& impl, EvalPointerType data) {
|
||||
return impl.evalSubExprsIfNeeded(data);
|
||||
}
|
||||
};
|
||||
@@ -211,8 +211,7 @@ template <typename Eval, typename EvalPointerType> struct ConversionSubExprEval<
|
||||
template <bool SameType, typename Eval, typename EvalPointerType,
|
||||
typename EvalSubExprsCallback>
|
||||
struct ConversionSubExprEvalAsync {
|
||||
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(
|
||||
Eval& impl, EvalPointerType, EvalSubExprsCallback done) {
|
||||
static EIGEN_STRONG_INLINE void run(Eval& impl, EvalPointerType, EvalSubExprsCallback done) {
|
||||
impl.evalSubExprsIfNeededAsync(nullptr, std::move(done));
|
||||
}
|
||||
};
|
||||
@@ -221,8 +220,7 @@ template <typename Eval, typename EvalPointerType,
|
||||
typename EvalSubExprsCallback>
|
||||
struct ConversionSubExprEvalAsync<true, Eval, EvalPointerType,
|
||||
EvalSubExprsCallback> {
|
||||
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(
|
||||
Eval& impl, EvalPointerType data, EvalSubExprsCallback done) {
|
||||
static EIGEN_STRONG_INLINE void run(Eval& impl, EvalPointerType data, EvalSubExprsCallback done) {
|
||||
impl.evalSubExprsIfNeededAsync(data, std::move(done));
|
||||
}
|
||||
};
|
||||
@@ -363,21 +361,21 @@ struct TensorEvaluator<const TensorConversionOp<TargetType, ArgType>, Device>
|
||||
TensorBlock;
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
|
||||
EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
|
||||
: m_impl(op.expression(), device)
|
||||
{
|
||||
}
|
||||
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Dimensions& dimensions() const { return m_impl.dimensions(); }
|
||||
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType data)
|
||||
EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(EvaluatorPointerType data)
|
||||
{
|
||||
return ConversionSubExprEval<IsSameType, TensorEvaluator<ArgType, Device>, EvaluatorPointerType>::run(m_impl, data);
|
||||
}
|
||||
|
||||
#ifdef EIGEN_USE_THREADS
|
||||
template <typename EvalSubExprsCallback>
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void evalSubExprsIfNeededAsync(
|
||||
EIGEN_STRONG_INLINE void evalSubExprsIfNeededAsync(
|
||||
EvaluatorPointerType data, EvalSubExprsCallback done) {
|
||||
ConversionSubExprEvalAsync<IsSameType, TensorEvaluator<ArgType, Device>,
|
||||
EvaluatorPointerType,
|
||||
@@ -385,7 +383,7 @@ struct TensorEvaluator<const TensorConversionOp<TargetType, ArgType>, Device>
|
||||
}
|
||||
#endif
|
||||
|
||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup()
|
||||
EIGEN_STRONG_INLINE void cleanup()
|
||||
{
|
||||
m_impl.cleanup();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user