[PATCH] D52437: [CUDA] Add preliminary support for CUDA 10.0

2018-09-24 Thread Andrea Bocci via Phabricator via cfe-commits
fwyzard created this revision.
fwyzard added reviewers: tra, Hahnfeld.
Herald added a subscriber: cfe-commits.

Add the definitions for CUDA 10.0 and CUDA architecture 7.5 (Turing),
and define CUDA 10.0 as the highest supported version.

Starting with CUDA 10.0, the include files

  include/crt/*
  include/common_functions.h
  include/device_double_functions.h
  include/device_functions.h
  include/host_config.h
  include/host_defines.h
  include/math_functions.h

are marked as internal, and issue a warning if they are directly included.
To suppress the warning, __clang_cuda_runtime_wrapper.h defines the macro
__CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__ before including any of them.


Repository:
  rC Clang

https://reviews.llvm.org/D52437

Files:
  clang/include/clang/Basic/Cuda.h
  clang/lib/Basic/Cuda.cpp
  clang/lib/Driver/ToolChains/Cuda.cpp
  clang/lib/Headers/__clang_cuda_runtime_wrapper.h

Index: clang/lib/Headers/__clang_cuda_runtime_wrapper.h
===
--- clang/lib/Headers/__clang_cuda_runtime_wrapper.h
+++ clang/lib/Headers/__clang_cuda_runtime_wrapper.h
@@ -62,7 +62,7 @@
 #include "cuda.h"
 #if !defined(CUDA_VERSION)
 #error "cuda.h did not define CUDA_VERSION"
-#elif CUDA_VERSION < 7000 || CUDA_VERSION > 9020
+#elif CUDA_VERSION < 7000 || CUDA_VERSION > 1
 #error "Unsupported CUDA version!"
 #endif
 
@@ -94,6 +94,9 @@
 #else
 #define __CUDA_LIBDEVICE__
 #endif
+#if CUDA_VERSION >= 1
+#define __CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__
+#endif
 // Disables definitions of device-side runtime support stubs in
 // cuda_device_runtime_api.h
 #include "driver_types.h"
@@ -420,5 +423,9 @@
 #pragma pop_macro("uint3")
 #pragma pop_macro("__USE_FAST_MATH__")
 
+#ifdef __CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__
+#undef __CUDA_INCLUDE_COMPILER_INTERNAL_HEADERS__
+#endif
+
 #endif // __CUDA__
 #endif // __CLANG_CUDA_RUNTIME_WRAPPER_H__
Index: clang/lib/Driver/ToolChains/Cuda.cpp
===
--- clang/lib/Driver/ToolChains/Cuda.cpp
+++ clang/lib/Driver/ToolChains/Cuda.cpp
@@ -59,6 +59,8 @@
 return CudaVersion::CUDA_91;
   if (Major == 9 && Minor == 2)
 return CudaVersion::CUDA_92;
+  if (Major == 10 && Minor == 0)
+return CudaVersion::CUDA_100;
   return CudaVersion::UNKNOWN;
 }
 
Index: clang/lib/Basic/Cuda.cpp
===
--- clang/lib/Basic/Cuda.cpp
+++ clang/lib/Basic/Cuda.cpp
@@ -22,6 +22,8 @@
 return "9.1";
   case CudaVersion::CUDA_92:
 return "9.2";
+  case CudaVersion::CUDA_100:
+return "10.0";
   }
   llvm_unreachable("invalid enum");
 }
@@ -60,6 +62,8 @@
 return "sm_70";
   case CudaArch::SM_72:
 return "sm_72";
+  case CudaArch::SM_75:
+return "sm_75";
   case CudaArch::GFX600: // tahiti
 return "gfx600";
   case CudaArch::GFX601: // pitcairn, verde, oland,hainan
@@ -106,6 +110,7 @@
   .Case("sm_62", CudaArch::SM_62)
   .Case("sm_70", CudaArch::SM_70)
   .Case("sm_72", CudaArch::SM_72)
+  .Case("sm_75", CudaArch::SM_75)
   .Case("gfx600", CudaArch::GFX600)
   .Case("gfx601", CudaArch::GFX601)
   .Case("gfx700", CudaArch::GFX700)
@@ -152,6 +157,8 @@
 return "compute_70";
   case CudaVirtualArch::COMPUTE_72:
 return "compute_72";
+  case CudaVirtualArch::COMPUTE_75:
+return "compute_75";
   case CudaVirtualArch::COMPUTE_AMDGCN:
 return "compute_amdgcn";
   }
@@ -173,6 +180,7 @@
   .Case("compute_62", CudaVirtualArch::COMPUTE_62)
   .Case("compute_70", CudaVirtualArch::COMPUTE_70)
   .Case("compute_72", CudaVirtualArch::COMPUTE_72)
+  .Case("compute_75", CudaVirtualArch::COMPUTE_75)
   .Case("compute_amdgcn", CudaVirtualArch::COMPUTE_AMDGCN)
   .Default(CudaVirtualArch::UNKNOWN);
 }
@@ -210,6 +218,8 @@
 return CudaVirtualArch::COMPUTE_70;
   case CudaArch::SM_72:
 return CudaVirtualArch::COMPUTE_72;
+  case CudaArch::SM_75:
+return CudaVirtualArch::COMPUTE_75;
   case CudaArch::GFX600:
   case CudaArch::GFX601:
   case CudaArch::GFX700:
@@ -252,6 +262,8 @@
 return CudaVersion::CUDA_90;
   case CudaArch::SM_72:
 return CudaVersion::CUDA_91;
+  case CudaArch::SM_75:
+return CudaVersion::CUDA_100;
   case CudaArch::GFX600:
   case CudaArch::GFX601:
   case CudaArch::GFX700:
Index: clang/include/clang/Basic/Cuda.h
===
--- clang/include/clang/Basic/Cuda.h
+++ clang/include/clang/Basic/Cuda.h
@@ -24,7 +24,8 @@
   CUDA_90,
   CUDA_91,
   CUDA_92,
-  LATEST = CUDA_92,
+  CUDA_100,
+  LATEST = CUDA_100,
 };
 const char *CudaVersionToString(CudaVersion V);
 
@@ -47,6 +48,7 @@
   SM_62,
   SM_70,
   SM_72,
+  SM_75,
   GFX600,
   GFX601,
   GFX700,
@@ -82,6 +84,7 @@
   COMPUTE_62,
   COMPUTE_70,
   COMPUTE_72,
+  COMPUTE_75,
   COMPUTE_AMDGCN,
 };
 const char *CudaVirtualArchToString(CudaVirtualArch A);

[PATCH] D52437: [CUDA] Add preliminary support for CUDA 10.0

2018-09-24 Thread Andrea Bocci via Phabricator via cfe-commits
fwyzard added a comment.

Thanks, indeed I missed some of the changes related to SM 7.5.


Repository:
  rC Clang

https://reviews.llvm.org/D52437



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits