Author: Yaxun (Sam) Liu
Date: 2024-04-10T11:16:00-04:00
New Revision: 2bf48892ab0ce5d53126c7b114070bba18521501

URL: 
https://github.com/llvm/llvm-project/commit/2bf48892ab0ce5d53126c7b114070bba18521501
DIFF: 
https://github.com/llvm/llvm-project/commit/2bf48892ab0ce5d53126c7b114070bba18521501.diff

LOG: [HIP] document difference with CUDA (#86838)

Added: 
    

Modified: 
    clang/docs/HIPSupport.rst

Removed: 
    


################################################################################
diff  --git a/clang/docs/HIPSupport.rst b/clang/docs/HIPSupport.rst
index 543c82cf902449..5ba84c2f670556 100644
--- a/clang/docs/HIPSupport.rst
+++ b/clang/docs/HIPSupport.rst
@@ -208,6 +208,20 @@ Host Code Compilation
 - These relocatable objects are then linked together.
 - Host code within a TU can call host functions and launch kernels from 
another TU.
 
+Syntax Difference with CUDA
+===========================
+
+Clang's front end, used for both CUDA and HIP programming models, shares the 
same parsing and semantic analysis mechanisms. This includes the resolution of 
overloads concerning device and host functions. While there exists a 
comprehensive documentation on the syntax 
diff erences between Clang and NVCC for CUDA at `Dialect Differences Between 
Clang and NVCC <https://llvm.org/docs/CompileCudaWithLLVM.html#dialect-
diff erences-between-clang-and-nvcc>`_, it is important to note that these 
diff erences also apply to HIP code compilation.
+
+Predefined Macros for Differentiation
+-------------------------------------
+
+To facilitate 
diff erentiation between HIP and CUDA code, as well as between device and host 
compilations within HIP, Clang defines specific macros:
+
+- ``__HIP__`` : This macro is defined only when compiling HIP code. It can be 
used to conditionally compile code specific to HIP, enabling developers to 
write portable code that can be compiled for both CUDA and HIP.
+
+- ``__HIP_DEVICE_COMPILE__`` : Defined exclusively during HIP device 
compilation, this macro allows for conditional compilation of device-specific 
code. It provides a mechanism to segregate device and host code, ensuring that 
each can be optimized for their respective execution environments.
+
 Function Pointers Support
 =========================
 


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

Reply via email to