Commit Graph

366 Commits

Author SHA1 Message Date
Evgeny Mankov 76a439f4c0 [HIPIFY] Reconcile transformation (statistics) types between hipify-clang and hipify-perl
+ Update hipify-perl accordingly
2019-09-29 17:33:37 +03:00
Evgeny Mankov 849b2678a8 [HIPIFY][perl] Generate stat functions
TODO: make statistics as much as similar to hipify-clang's
2019-09-29 14:20:32 +03:00
Evgeny Mankov b1e7b1437d [HIPIFY][doc] The latest cuDNN 7.6.4 is supported 2019-09-28 20:49:56 +03:00
Evgeny Mankov f21e7d8abc [HIPIFY] Generate more hipify-perl (continuation)
+ Minor hipify-perl clean-up
+ Minor CUDA2HIP_Perl refactoring
2019-09-27 19:10:54 +03:00
Evgeny Mankov f50852e3a6 [HIPIFY] Add supported fp16 functions
+ Update hipify-perl accordingly
2019-09-26 18:13:20 +03:00
Evgeny Mankov d17a8e04f1 [HIPIFY][doc] Update README.md
+ Testing, versioning
2019-09-26 17:08:29 +03:00
Evgeny Mankov 9d1d4b78e3 [HIPIFY][#1439] Add reinterpret_cast to args of some functions
+ Perl part of [#1458]
+ Affected functions: hipFuncSetCacheConfig, hipFuncGetAttributes
+ Implement function generateHostFunctions() in hipify-clang for that purposes
+ Update hipify-perl accordingly
2019-09-25 18:53:17 +03:00
Evgeny Mankov 84baa83a25 [HIPIFY] HipifyAction refactoring
+ Merge of cudaSymbolFuncCall and cudaReinterpretCastArgFuncCall matchers into a single cudaHostFuncCall matcher
+ More const std::string declarations
+ Formatting
2019-09-24 10:33:51 +03:00
Evgeny Mankov dd6a92afb7 [HIPIFY][#1439] Add reinterpret_cast to args of some functions
+ Affected functions: hipFuncSetCacheConfig, hipFuncGetAttributes
+ Add a corresponding Matcher cudaReinterpretCastArgFuncCall
+ Add reinterpret_cast.cu test

TODO: Do the same for hipify-perl
2019-09-24 09:44:17 +03:00
Evgeny Mankov 3de10d402c [HIPIFY][doc] Return X86 target back in LLVM's cmake
Due to LLVM 9.0.0 release, which still needs X86 for NVPTX, LLVM trunk - doesn't.
2019-09-23 22:20:23 +03:00
Evgeny Mankov fd5ecbf014 [HIPIFY][perl] CUDA2HIP_Perl code cleanup 2019-09-22 23:43:07 +03:00
Evgeny Mankov 4acefa95c9 [HIPIFY][perl] generateSymbolFunctions() small refactoring 2019-09-22 22:34:07 +03:00
Evgeny Mankov 1b989bcb8d [HIPIFY][#1435][perl] Add HIP_SYMBOL wrapper to the templated Device Symbol argument of the following functions:
cudaMemcpyToSymbol, cudaMemcpyToSymbolAsync, cudaGetSymbolSize, cudaGetSymbolAddress, cudaMemcpyFromSymbol, cudaMemcpyFromSymbolAsync

+ Perl part of [#1441]
+ Implement function generateSymbolFunctions() in hipify-clang for that purposes
+ Update hipify-perl

TODO: Eliminate dim3() issue in hipify-perl as well
2019-09-21 07:33:17 +03:00
Evgeny Mankov ab063617eb [HIPIFY][doc] Update README.md due to LLVM 9.0.0 release
+ LLVM 9.0.0 is latest stable release, no patches are needed
+ The latest CUDA 10.1 Update 2 is supported
+ Tested on Windows and Linux
2019-09-20 09:16:10 +03:00
Evgeny Mankov 3722d5b4b9 [HIPIFY][#1435] Add HIP_SYMBOL wrapper to the templated Device Symbol argument of the following functions:
cudaMemcpyToSymbol, cudaMemcpyToSymbolAsync, cudaGetSymbolSize, cudaGetSymbolAddress, cudaMemcpyFromSymbol, cudaMemcpyFromSymbolAsync

+ Add a corresponding cudaSymbolFuncCall matcher.
+ Add device_symbols.cu test for the above 6 functions, update existed.
+ Fix dim3() type cast issue, update affected tests.

TODO: Do the same in hipify-perl
2019-09-19 19:33:42 +03:00
Evgeny Mankov f0b1170784 [HIPIFY][#1437] Fix: cudaFuncGetAttributes to hipFuncGetAttributes is supported
+ Update hipify-perl and CUDA_Runtime_API_functions_supported_by_HIP.md accordingly
2019-09-18 17:57:31 +03:00
Evgeny Mankov fc493da5c7 [HIPIFY] Add supported device functions (from device_functions.h)
+ [perl] Sync hipify-perl accordingly
2019-09-18 17:07:50 +03:00
Evgeny Mankov 3011e41420 [HIPIFY][#1430] Build fix for LLVM < 8.0.0 2019-09-18 11:53:23 +03:00
Evgeny Mankov 042c125601 [HIPIFY] Add supported device functions (from math_functions.h)
+ [perl] Add generation of sub countSupportedDeviceFunctions
+ [FIX] Do not perform any replacement for supported device functions
+ [perl] Sync hipify-perl accordingly
2019-09-17 16:17:28 +03:00
Evgeny Mankov 4f59ec25fe [HIPIFY][perl][fix] Treat ::device_function as a device function
+ Do not treat somenamespace::device_function_name as a device function
+ Fix generation of warnUnsupportedDeviceFunctions function in hipify-clang
+ Update hipify-perl based on hipify-clang -perl generation
+ Update device test math_functions.cu for hipify-perl

[Restrictions]
- hipify-perl is yet unable to handle function declarations in user namespaces
- hipify-perl is yet unable to handle using directive
2019-09-16 17:36:55 +03:00
Evgeny Mankov 3f66e7b0b9 [HIPIFY] Fix build failure due to typo in [#1377] 2019-09-16 14:28:52 +03:00
ansurya ceb734b917 Added new device attributes (#1377)
* Added new device attributes

* updated comment

* updated with new device attributes supported
2019-09-16 08:31:30 +00:00
Evgeny Mankov b7df0627b1 [HIPIFY] Scripting related refactoring
+ Move generating hipify-perl and hipify-python into separate namespaces and files
+ Move getAbsoluteFilePath and getAbsoluteDirectoryPath to StringUtils
2019-09-15 21:13:56 +03:00
Evgeny Mankov fd8a7675f8 [HIPIFY][perl] Generate sub warnUnsupportedDeviceFunctions 2019-09-15 15:18:58 +03:00
Evgeny Mankov 182058fa0b [HIPIFY][doc] Update README.md
+ Adding -DLLVM_TARGETS_TO_BUILD="NVPTX" to LLVM's cmake command line for minimizing LLVM's build (tested)
+ Test logs update
+ Versions update
2019-09-13 18:56:48 +03:00
Evgeny Mankov 34540002dd [HIPIFY] Add unsupported fp16 functions 2019-09-12 18:51:25 +03:00
Evgeny Mankov 58c1a144d1 [HIPIFY] Add more unsupported device functions 2019-09-12 17:53:25 +03:00
Evgeny Mankov 0426035468 [HIPIFY][#1404] Fix: add cooperative_groups.h -> hip/hip_cooperative_groups.h 2019-09-11 18:07:09 +03:00
Evgeny Mankov 56ab105e9d [HIPIFY][#1400] Fix Template Instantiation kernel launch (clang & perl)
+ Enclose template instantiation kernel calls into round brackets, leave regular kernel names unchanged (hipify-perl doesn't handle cases with macros).
+ Fix corresponding tests.

PS. hipify-perl couldn't handle correctly the following cases due to macros expansion disability, thus hipify-clang should be used instead:

#define KERNEL_NAME_MACRO axpy<float>
#define KERNEL_CALL_MACRO axpy<float><<<1, 2>>>
#define KERNEL_ARG_LIST_MACRO a, x, y

// CUDA:
KERNEL_NAME_MACRO<<<1, 2>>>(KERNEL_ARG_LIST_MACRO);
KERNEL_CALL_MACRO(KERNEL_ARG_LIST_MACRO);

// hipify-perl:
hipLaunchKernelGGL(KERNEL_NAME_MACRO, dim3(1), dim3(2), 0, 0, KERNEL_ARG_LIST_MACRO);
KERNEL_CALL_MACRO(KERNEL_ARG_LIST_MACRO);

// hipify-clang:
hipLaunchKernelGGL((KERNEL_NAME_MACRO), dim3(1), dim3(2), 0, 0, KERNEL_ARG_LIST_MACRO);
hipLaunchKernelGGL((axpy<float>), dim3(1), dim3(2), 0, 0, KERNEL_ARG_LIST_MACRO);
2019-09-10 15:59:06 +03:00
Evgeny Mankov 6602fadc16 [HIPIFY] Add device functions support
+ Add a corresponding matcher cudaDeviceFuncCall to match only (__device__ or __global__) and not __host__ functions.
+ Add a corresponding device functions mapping:
  only unsupported are listed, cause supported are exactly the same as of CUDA and do not need transformation;
  make FindAndReplace for device functions separated from host API calls.
+ Add a test to distinguish device functions and user-defined.
2019-09-06 18:34:12 +03:00
Evgeny Mankov ab560d8fd2 [HIPIFY][cmake][#1394] Fix
[#1394] cmake's VERSION_GREATER_EQUAL introduced in 3.7
2019-09-05 12:08:56 +03:00
Evgeny Mankov fbf23ed231 [HIPIFY][doc] Update README.md (testing, versions) 2019-09-02 18:18:43 +03:00
Evgeny Mankov ce4140f94d [HIPIFY][fix] Fix for upcoming LLVM 10.0 2019-09-01 18:15:03 +03:00
Evgeny Mankov b45c26361d [HIPIFY][DNN] cuDNN 7.6.3 support 2019-08-29 19:55:38 +03:00
Evgeny Mankov 24be21495d [HIPIFY][#207][fix] Translate all preprocessor's conditional blocks
+ Start to translate preprocessor's false conditional blocks too:
  based on clang's https://reviews.llvm.org/D66597;
  available only starting from LLVM 10.0 or trunk.
+ Option -skip-excluded-preprocessor-conditional-blocks for skipping excluded conditional blocks:
  the default behavior for hipify-clang built with LLVM < 10.0;
  false by default for hipify-clang built with LLVM 10 or trunk.
+ Add 4 preprocessor unit tests, 2 of which are LLVM 10.0 only
+ Update couple of existing tests by setting -skip-excluded-preprocessor-conditional-blocks option:
  update lit testing accordingly
2019-08-28 21:17:35 +03:00
Evgeny Mankov eeb4452b23 [HIPIFY][cmake] Minor refactoring
1. Fix setting std c++ (11|14)
2. Get rid of WIN32, use MSVC instead
3. Use VERSION_GREATER_EQUAL and VERSION_MAJOR instead of logical expressions
2019-08-28 20:40:10 +03:00
Evgeny Mankov e1d4f8510a [HIPIFY][cmake] Explicitly set c++14
[Reason] LLVM became c++14 last week due to the following change:

37508d3dd94b0154861a90b1909d17b01400df99
Replace llvm::integer_sequence and friends with the C++14 standard version
2019-08-23 19:32:24 +03:00
Evgeny Mankov b863c1392c [HIPIFY][fix] Set the correct exit value for hipify-clang if errors.
This fixes a hanging of unit tests.
2019-08-21 21:36:53 +03:00
Evgeny Mankov 54fee7abdc [HIPIFY] CUDA 10.1 Update 2 support 2019-08-21 21:06:20 +03:00
Evgeny Mankov d20ae3b50a [HIPIFY] Add cudaMallocManaged -> hipMallocManaged
+ Add mapping for corresponding data types
+ Add a test
+ Update docs
2019-08-13 17:56:06 +03:00
Evgeny Mankov 27d101aa76 [HIPIFY][Driver API] Add support for hipFuncGetAttribute() and enum hipFunction_attribute 2019-08-13 16:48:07 +03:00
Evgeny Mankov 1390ecf538 [HIPIFY] Add cuMemcpy2DAsync -> hipMemcpyParam2DAsync mapping 2019-08-13 16:31:19 +03:00
Evgeny Mankov aa285d978e [HIPIFY] Cooperative groups support 2019-08-12 19:20:13 +03:00
Evgeny Mankov 3ac3b2800b [HIPIFY][cuRAND][#1257] Fix
+ Update CURAND_API_supported_by_HIP.md and test accordingly
2019-08-09 21:27:16 +03:00
Evgeny Mankov 739e2df224 [HIPIFY][doc] Update README.md
+ cuDNN, Python, and VS supported versions update;
+ testing output update.
2019-08-05 14:49:01 +03:00
Evgeny Mankov 25075729f9 [HIPIFY][fix][#211] Taking into account include guard controlling macro
...while including HIP main header file, which is inserted now after #indef controlling macro, or after #pragma once, if it's occurred earlier.

+ Add a couple of unit tests.
ToDo: Check backward compatibility on older clang versions.
2019-08-02 16:46:45 +03:00
Evgeny Mankov 77e9ade9bc [HIP][doc] Populate CUDA Runtime API doc with CUDA version field
+ CUDA version - version in which API has appeared and (optional) last version before abandoning it; no value in case of earlier versions < 7.5.
+ Fix typos, add missing references.
2019-07-31 22:59:05 +03:00
Evgeny Mankov 18117a4ad1 [HIPIFY][SPARSE] Sync cuSPARSE 10.1 - HIP - HIPIFY (Step 2 of 2)
+ Add undocumented but presented in cusparse.h functions since CUDA 10.1 Update 1
2019-07-29 21:12:35 +03:00
Evgeny Mankov 2adad9c68d [HIPIFY][SPARSE] Sync cuSPARSE 10.1 - HIP - HIPIFY (Step 1 of 2) 2019-07-26 21:34:36 +03:00
Evgeny Mankov 6f6aa13448 [HIPIFY][SPARSE][doc] Populate cuSPARSE API doc with CUDA version field
+ CUDA version - version in which API has appeared and (optional) last version before abandoning it; no value in case of earlier versions < 7.5.
+ Fix typos
2019-07-26 19:05:42 +03:00