mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-27 07:29:52 +08:00
Fix for HIP breakage - 191220
The breakage was introduced by the following commit :
ae07801dd8
After the commit, HIPCC errors out on some tests with the following error
```
Building HIPCC object unsupported/test/CMakeFiles/cxx11_tensor_device_1.dir/cxx11_tensor_device_1_generated_cxx11_tensor_device.cu.o
In file included from /home/rocm-user/eigen/unsupported/test/cxx11_tensor_device.cu:17:
In file included from /home/rocm-user/eigen/unsupported/Eigen/CXX11/Tensor💯
/home/rocm-user/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h:129:12: error: no matching constructor for initialization of 'Eigen::internal::TensorBlockResourceRequirements'
return {merge(lhs.shape_type, rhs.shape_type), // shape_type
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rocm-user/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h:75:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 3 were provided
struct TensorBlockResourceRequirements {
^
/home/rocm-user/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h:75:8: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 3 were provided
/home/rocm-user/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h:75:8: note: candidate constructor (the implicit copy constructor) not viable: requires 5 arguments, but 3 were provided
/home/rocm-user/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h:75:8: note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 3 were provided
...
...
```
The fix is to explicitly decalre the (implicitly called) constructor as a device func
This commit is contained in:
parent
1e9664b147
commit
636e2bb3fa
@ -77,6 +77,17 @@ struct TensorBlockResourceRequirements {
|
||||
size_t size; // target block size
|
||||
TensorOpCost cost_per_coeff; // cost of computing a single block element
|
||||
|
||||
#ifdef EIGEN_HIPCC
|
||||
// For HIPCC, we need to explicitly declare as a "device fun", the constructor
|
||||
// which is implicitly invoked in the "merge" / "any" routines. else HIPCC
|
||||
// errors out complaining about the lack of a matching constructor
|
||||
EIGEN_DEVICE_FUNC
|
||||
TensorBlockResourceRequirements(TensorBlockShapeType shape_type_, size_t size_,
|
||||
TensorOpCost cost_)
|
||||
: shape_type(shape_type_), size(size_), cost_per_coeff(cost_)
|
||||
{}
|
||||
#endif
|
||||
|
||||
template <typename Scalar>
|
||||
EIGEN_DEVICE_FUNC static TensorBlockResourceRequirements withShapeAndSize(
|
||||
TensorBlockShapeType shape_type, size_t size_in_bytes,
|
||||
|
Loading…
Reference in New Issue
Block a user