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> 120 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) 121 #define CUTLASS_OS_WINDOWS 132 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1900)) 142 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1310)) 149 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1600)) 150 #ifndef static_assert 151 #define __platform_cat_(a, b) a##b 152 #define __platform_cat(a, b) __platform_cat_(a, b) 153 #define static_assert(__e, __m) typedef int __platform_cat(AsSeRt, __LINE__)[(__e) ? 1 : -1] 163 #define __NV_STD_MAX(a, b) (((b) > (a)) ? (b) : (a)) 168 #define __NV_STD_MIN(a, b) (((b) < (a)) ? (b) : (a)) 182 template <
typename T>
188 template <
typename T>
196 template <
typename T>
208 template <
typename T>
210 return (b < a) ? b : a;
214 template <
typename T>
216 return (a < b) ? b : a;
219 #if !defined(__CUDACC_RTC__) 226 template <
class T1,
class T2>
228 return (lhs.first == rhs.first) && (lhs.second == rhs.second);
231 template <
class T1,
class T2>
233 return (lhs.first != rhs.first) && (lhs.second != rhs.second);
236 template <
class T1,
class T2>
238 return (lhs.first < rhs.first) ? true : (rhs.first < lhs.first) ?
false 239 : (lhs.second < rhs.second);
242 template <
class T1,
class T2>
247 template <
class T1,
class T2>
252 template <
class T1,
class T2>
257 template <
class T1,
class T2>
259 std::pair<T1, T2> retval;
278 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 281 template <
typename value_t, value_t V>
285 template <
typename value_t, value_t V>
299 using std::integral_constant;
310 #if (!defined(_MSC_VER) && (__cplusplus <= 201402L)) || (defined(_MSC_VER) && (_MSC_VER < 1900)) 318 using std::bool_constant;
322 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1700)) 329 using std::nullptr_t;
337 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1600)) 340 template <
bool C,
typename T =
void>
346 template <
typename T>
350 template <
bool B,
class T,
class F>
356 template <
class T,
class F>
363 using std::enable_if;
364 using std::conditional;
372 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 375 template <
typename T>
381 template <
typename T>
387 template <
typename T>
393 template <
typename T>
399 template <
typename T>
406 using std::remove_const;
407 using std::remove_volatile;
408 using std::remove_cv;
416 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 419 template <
typename A,
typename B>
423 template <
typename A>
427 template <
typename BaseT,
typename DerivedT>
430 typedef char (&
no)[2];
432 template <
typename B,
typename D>
438 template <
typename T>
447 template <
typename BaseT,
typename DerivedT>
450 (is_base_of_helper<typename remove_cv<BaseT>::type,
451 typename remove_cv<DerivedT>::type>::value) ||
452 (is_same<typename remove_cv<BaseT>::type,
453 typename remove_cv<DerivedT>::type>::value)> {};
458 using std::is_base_of;
466 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 469 template <
typename T>
471 template <
typename T>
475 template <
typename T>
479 template <
typename T>
483 template <
typename T>
487 template <
typename T>
491 template <
typename T>
515 template <
typename T>
517 template <
typename T>
519 template <
typename T>
523 template <
typename T>
526 (is_same<float, typename remove_cv<T>::type>::value ||
527 is_same<double, typename remove_cv<T>::type>::value)> {};
530 template <
typename T>
532 :
integral_constant<bool, (is_integral<T>::value || is_floating_point<T>::value)> {};
535 template <
typename T>
538 (is_arithmetic<T>::value || is_void<T>::value ||
539 is_same<nullptr_t, typename remove_cv<T>::type>::value)> {};
543 using std::is_volatile;
544 using std::is_pointer;
546 using std::is_integral;
547 using std::is_floating_point;
548 using std::is_arithmetic;
549 using std::is_fundamental;
553 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1800)) || \ 554 (defined(__GNUG__) && (__GNUC__ < 5)) 566 template <
typename T>
568 :
integral_constant<bool, (is_fundamental<T>::value || is_pointer<T>::value)> {};
572 using std::is_trivially_copyable;
580 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 583 template <
typename value_t>
595 template <
typename value_t>
596 struct alignment_of : std::alignment_of<value_t> {};
647 template <
typename value_t>
649 template <
typename value_t>
651 template <
typename value_t>
654 #if (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1800)) 656 template <
size_t Align>
712 template <
size_t Len,
size_t Align>
719 using std::aligned_storage;
723 #if !defined(__CUDACC_RTC__) 724 template <
typename T>
731 template <
typename T>
737 template <
class T,
class Deleter = default_delete<T> >
774 if (old_ptr !=
nullptr) {
789 operator bool() const
noexcept {
return _ptr !=
nullptr; }
802 template <
typename T,
typename Deleter>
#define CUTLASS_HOST_DEVICE
Definition: cutlass.h:46
Basic include for CUTLASS macros.