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>
184 return (b < a) ? b : a;
188 template <
typename T>
190 return (a < b) ? b : a;
193 #if !defined(__CUDACC_RTC__) 200 template <
class T1,
class T2>
202 return (lhs.first == rhs.first) && (lhs.second == rhs.second);
205 template <
class T1,
class T2>
207 return (lhs.first != rhs.first) && (lhs.second != rhs.second);
210 template <
class T1,
class T2>
212 return (lhs.first < rhs.first) ?
true : (rhs.first < lhs.first) ?
false 213 : (lhs.second < rhs.second);
216 template <
class T1,
class T2>
221 template <
class T1,
class T2>
226 template <
class T1,
class T2>
231 template <
class T1,
class T2>
233 std::pair<T1, T2> retval;
252 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 255 template <
typename value_t, value_t V>
259 template <
typename value_t, value_t V>
261 static const value_t value = V;
273 using std::integral_constant;
284 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus <= 201402L)) || (defined(_MSC_VER) && (_MSC_VER < 1900)) 292 using std::bool_constant;
296 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1700)) 303 using std::nullptr_t;
311 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1600)) 314 template <
bool C,
typename T =
void>
320 template <
typename T>
324 template <
bool B,
class T,
class F>
330 template <
class T,
class F>
337 using std::enable_if;
338 using std::conditional;
346 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 349 template <
typename T>
355 template <
typename T>
361 template <
typename T>
367 template <
typename T>
373 template <
typename T>
380 using std::remove_const;
381 using std::remove_volatile;
382 using std::remove_cv;
390 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 393 template <
typename A,
typename B>
397 template <
typename A>
401 template <
typename BaseT,
typename DerivedT>
403 typedef char (&yes)[1];
404 typedef char (&no)[2];
406 template <
typename B,
typename D>
412 template <
typename T>
421 template <
typename BaseT,
typename DerivedT>
424 (is_base_of_helper<typename remove_cv<BaseT>::type,
425 typename remove_cv<DerivedT>::type>::value) ||
426 (is_same<typename remove_cv<BaseT>::type,
427 typename remove_cv<DerivedT>::type>::value)> {};
432 using std::is_base_of;
440 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 443 template <
typename T>
445 template <
typename T>
449 template <
typename T>
453 template <
typename T>
457 template <
typename T>
461 template <
typename T>
465 template <
typename T>
489 template <
typename T>
491 template <
typename T>
493 template <
typename T>
497 template <
typename T>
500 (is_same<float, typename remove_cv<T>::type>::value ||
501 is_same<double, typename remove_cv<T>::type>::value)> {};
504 template <
typename T>
506 :
integral_constant<bool, (is_integral<T>::value || is_floating_point<T>::value)> {};
509 template <
typename T>
512 (is_arithmetic<T>::value || is_void<T>::value ||
513 is_same<nullptr_t, typename remove_cv<T>::type>::value)> {};
517 using std::is_volatile;
518 using std::is_pointer;
520 using std::is_integral;
521 using std::is_floating_point;
522 using std::is_arithmetic;
523 using std::is_fundamental;
527 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1800)) || \ 528 (defined(__GNUG__) && (__GNUC__ < 5)) 540 template <
typename T>
542 :
integral_constant<bool, (is_fundamental<T>::value || is_pointer<T>::value)> {};
546 using std::is_trivially_copyable;
554 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1500)) 557 template <
typename value_t>
564 enum { value =
sizeof(
pad) -
sizeof(value_t) };
569 template <
typename value_t>
621 template <
typename value_t>
623 template <
typename value_t>
625 template <
typename value_t>
628 #if defined(__CUDACC_RTC__) || (!defined(_MSC_VER) && (__cplusplus < 201103L)) || (defined(_MSC_VER) && (_MSC_VER < 1800)) 630 template <
size_t Align>
686 template <
size_t Len,
size_t Align>
693 using std::aligned_storage;
697 #if !defined(__CUDACC_RTC__) 698 template <
typename T>
705 template <
typename T>
711 template <
class T,
class Deleter = default_delete<T> >
723 deleter_type _deleter;
746 pointer old_ptr = _ptr;
748 if (old_ptr !=
nullptr) {
749 get_deleter()(old_ptr);
763 operator bool() const
noexcept {
return _ptr !=
nullptr; }
776 template <
typename T,
typename Deleter>
Definition: aligned_buffer.h:35
#define CUTLASS_HOST_DEVICE
Definition: cutlass.h:89
Basic include for CUTLASS.