100 #if !defined(__CUDACC_RTC__) 107 #include <functional> 109 #if (!defined(_MSC_VER) && (__cplusplus >= 201103L)) || (defined(_MSC_VER) && (_MS_VER >= 1500)) 110 #include <type_traits> 124 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1900)) 134 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1310)) 141 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1600)) 142 #ifndef static_assert 143 #define __platform_cat_(a, b) a##b 144 #define __platform_cat(a, b) __platform_cat_(a, b) 145 #define static_assert(__e, __m) typedef int __platform_cat(AsSeRt, __LINE__)[(__e) ? 1 : -1] 155 #define __NV_STD_MAX(a, b) (((b) > (a)) ? (b) : (a)) 160 #define __NV_STD_MIN(a, b) (((b) < (a)) ? (b) : (a)) 174 template <
typename T>
180 template <
typename T>
188 template <
typename T>
200 template <
typename T>
202 return (b < a) ? b : a;
206 template <
typename T>
208 return (a < b) ? b : a;
211 #if !defined(__CUDACC_RTC__) 218 template <
class T1,
class T2>
220 return (lhs.first == rhs.first) && (lhs.second == rhs.second);
223 template <
class T1,
class T2>
225 return (lhs.first != rhs.first) && (lhs.second != rhs.second);
228 template <
class T1,
class T2>
230 return (lhs.first < rhs.first) ? true : (rhs.first < lhs.first) ?
false 231 : (lhs.second < rhs.second);
234 template <
class T1,
class T2>
239 template <
class T1,
class T2>
244 template <
class T1,
class T2>
249 template <
class T1,
class T2>
251 std::pair<T1, T2> retval;
270 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 273 template <
typename value_t, value_t V>
277 template <
typename value_t, value_t V>
291 using std::integral_constant;
302 #if (!defined(_MSC_VER) && (__cplusplus < 201402L)) || (defined(_MSC_VER) && (_MSC_VER < 1900)) 310 using std::bool_constant;
314 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1700)) 321 using std::nullptr_t;
329 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1600)) 332 template <
bool C,
typename T =
void>
338 template <
typename T>
342 template <
bool B,
class T,
class F>
348 template <
class T,
class F>
355 using std::enable_if;
356 using std::conditional;
364 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 367 template <
typename T>
373 template <
typename T>
379 template <
typename T>
385 template <
typename T>
391 template <
typename T>
398 using std::remove_const;
399 using std::remove_volatile;
400 using std::remove_cv;
408 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 411 template <
typename A,
typename B>
415 template <
typename A>
419 template <
typename BaseT,
typename DerivedT>
422 typedef char (&
no)[2];
424 template <
typename B,
typename D>
430 template <
typename T>
439 template <
typename BaseT,
typename DerivedT>
442 (is_base_of_helper<typename remove_cv<BaseT>::type,
443 typename remove_cv<DerivedT>::type>::value) ||
444 (is_same<typename remove_cv<BaseT>::type,
445 typename remove_cv<DerivedT>::type>::value)> {};
450 using std::is_base_of;
458 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 461 template <
typename T>
463 template <
typename T>
467 template <
typename T>
471 template <
typename T>
475 template <
typename T>
479 template <
typename T>
483 template <
typename T>
507 template <
typename T>
509 template <
typename T>
511 template <
typename T>
515 template <
typename T>
518 (is_same<float, typename remove_cv<T>::type>::value ||
519 is_same<double, typename remove_cv<T>::type>::value)> {};
522 template <
typename T>
524 :
integral_constant<bool, (is_integral<T>::value || is_floating_point<T>::value)> {};
527 template <
typename T>
530 (is_arithmetic<T>::value || is_void<T>::value ||
531 is_same<nullptr_t, typename remove_cv<T>::type>::value)> {};
535 using std::is_volatile;
536 using std::is_pointer;
538 using std::is_integral;
539 using std::is_floating_point;
540 using std::is_arithmetic;
541 using std::is_fundamental;
545 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1800)) || \ 546 (defined(__GNUG__) && (__GNUC__ < 5)) 558 template <
typename T>
560 :
integral_constant<bool, (is_fundamental<T>::value || is_pointer<T>::value)> {};
564 using std::is_trivially_copyable;
572 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 575 template <
typename value_t>
587 template <
typename value_t>
588 struct alignment_of : std::alignment_of<value_t> {};
639 template <
typename value_t>
641 template <
typename value_t>
643 template <
typename value_t>
646 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1800)) 648 template <
size_t Align>
704 template <
size_t Len,
size_t Align>
711 using std::aligned_storage;
715 #if !defined(__CUDACC_RTC__) 716 template <
typename T>
723 template <
typename T>
729 template <
class T,
class Deleter = default_delete<T> >
766 if (old_ptr !=
nullptr) {
781 operator bool() const
noexcept {
return _ptr !=
nullptr; }
794 template <
typename T,
typename Deleter>
#define CUTLASS_HOST_DEVICE
Definition: cutlass.h:46
Basic include for CUTLASS macros.