Removed trivial copy constructors on parameter classes to enable devi… (#366)
* Removed trivial copy constructors on parameter classes to enable device-side launch of CUTLASS kernels * Added SFINAE to the `TensorRef(NonConstTensorRef const&)` constructor to avoid making it a copy-constructor for device code * std => platform * fix affine2 * really fix affine2 Co-authored-by: Haicheng Wu <haichengw@nvidia.com>
This commit is contained in:
@@ -94,14 +94,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
/// Copy constructor
|
||||
CUTLASS_HOST_DEVICE
|
||||
Coord(Coord<kRank, Index, LongIndex> const &coord) {
|
||||
for (int i = 0; i < kRank; ++i) {
|
||||
idx[i] = coord[i];
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a slice of the Coord which may be larger or smaller in rank
|
||||
/// than this.
|
||||
template <int Slice>
|
||||
|
||||
@@ -162,6 +162,10 @@ public:
|
||||
ptr_A(ptr_A), ptr_B(ptr_B), ptr_C(ptr_C), ptr_D(ptr_D),
|
||||
batch_stride_A(batch_stride_A), batch_stride_B(batch_stride_B), batch_stride_C(batch_stride_C), batch_stride_D(batch_stride_D),
|
||||
stride_a(stride_a), stride_b(stride_b), stride_c(stride_c), stride_d(stride_d) {
|
||||
lda = 0;
|
||||
ldb = 0;
|
||||
ldc = 0;
|
||||
ldd = 0;
|
||||
|
||||
CUTLASS_TRACE_HOST("GemmUniversal::Arguments::Arguments() - problem_size: " << problem_size);
|
||||
}
|
||||
|
||||
@@ -219,9 +219,12 @@ class TensorRef {
|
||||
}
|
||||
|
||||
/// Converting constructor from TensorRef to non-constant data.
|
||||
template<typename _Magic = int>
|
||||
CUTLASS_HOST_DEVICE
|
||||
TensorRef(
|
||||
NonConstTensorRef const &ref ///< TensorRef to non-const data
|
||||
NonConstTensorRef const &ref, ///< TensorRef to non-const data
|
||||
///SFINAE trick to avoid creating a copy-constructor when Element_ is already non-const
|
||||
_Magic magic = (typename platform::enable_if< ! platform::is_same<NonConstTensorRef, TensorRef<Element_, Layout_> >::value, _Magic>::type)0
|
||||
):
|
||||
ptr_(ref.data()), layout_(ref.layout()) { }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user