Clang 7.0.0 release has a known bug https://bugs.llvm.org/show_bug.cgi?id=36384, thus 7.0.0 is unstable release for Linux and Windows.
Last stable and tested LLVM+Clang release is 6.0.1.
[ROCm/hip commit: 368e9d5100]
[Reason]
Avoid cmake error occurred when mixing signatures with AddLLVM.cmake
[Error]
CMake Error at CMakeLists.txt:26 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "hipify-clang".
All uses of target_link_libraries with a target must be either all-keyword or all-plain.
Error occurred only on Linux and LLVM 7.0.0
[ROCm/hip commit: 2c367bc8af]
[Reasons]
+ Simplify the support
+ Optimize compilation and code generation time
[Additionally]
+ Update minimum required version of cmake
+ Fix MSVC compile options force update
[ROCm/hip commit: 5d1255272b]
+ for all CUDA versions
+ add missing types
+ fix typos
+ sync with HIP
+ update CUDA_Driver_API_functions_supported_by_HIP.md
+ formatting, annotating
[ROCm/hip commit: 520e795a8d]
TODO (hipBLAS/HIP): rename hipblasDatatype_t to hipDataType_t and move it from hipBLAS to HIP, as Data types are used not only in BLAS library.
[ROCm/hip commit: d279c7a1dd]
Tested with CUDA 8.0, 9.0, 9.1 and 9.2.
Only 8.0 works with LLVM 7.0, due to the changes in LLVM trunc since released 6.0, which works fine with CUDA 8.0 and 9.0.
So, nothing to do in hipify-clang, hope that all the CUDA 9.x related issues will be fixed in 7.0 release.
[ROCm/hip commit: 433e172776]
+ supported CUDA version to LLVM version correspondence table is added.
+ Test section is rewritten.
+ Windows support is added.
[ROCm/hip commit: 054c3f71f0]
/srv/HIP/hipify-clang/src/main.cpp:134:19: error: no member named 'dbgs' in namespace 'llvm'
DEBUG(llvm::dbgs() << "Skipped some replacements.\n");
~~~~~~^
[ROCm/hip commit: 7f3e89bbb0]
Due to support of cuRAND headers.
+ compound test on all headers is added;
+ missing entities are added with updating the doc;
+ a couple cuRAND tests are added (https://github.com/ROCmSoftwarePlatform/rocRAND/tree/master/benchmark):
- the following CUDA entities are still unsupported by hipRAND:
curandMakeMTGP32Constants
curandMakeMTGP32KernelState
curandGetDirectionVectors32
curandDirectionVectorSet_t
CURAND_DIRECTION_VECTORS_32_JOEKUO6
curandStateSobol64_t
curandStateScrambledSobol64_t
curandGenerateLongLong
- and the following - by HIP:
cudaRuntimeGetVersion
- those entities are handled by CHECK-NOT directive for now.
[ROCm/hip commit: 02e23c4d87]
File location have to be verified, otherwise location of the first found '#pragma once' in any included header even system will be erroneously handled, which might lead to attempt to including hip_runtime.h in it.
[ROCm/hip commit: 77f807b597]
If in source CUDA file main header (cuda_runtime.h or cuda.h) is not presented, corresponding HIP main header (hip_runtime.h) should be explicitly included in output hipified file.
[Algorithm]
1. If #pragma once is presented, HIP main header should be placed just after it;
2. Otherwise if any other (not CUDA main) header is presented, HIP main header should be placed just before it;
3. Otherwise HIP main header should be placed in the beginning of output file.
P.S.
There might be one more situation when #ifndef #define ... #endif guard for the entire file is presented (make sense for *.h, *.hpp, *.cuh files). In this case HIP main include should be placed just after such #ifdef, or after #pragma once, if it is also presented. This situation will be handled in a separate change.
[ROCm/hip commit: 09655a0853]