Commit Graph

286 Commits

Author SHA1 Message Date
Evgeny Mankov 14102880b4 [HIPIFY][perl] Generate simpleSubstitutions function
+ Update hipify-perl accordingly


[ROCm/hip commit: 0f19300383]
2019-09-30 16:53:19 +03:00
Evgeny Mankov 042d68e5fb [HIPIFY] Reconcile transformation (statistics) types between hipify-clang and hipify-perl
+ Update hipify-perl accordingly


[ROCm/hip commit: 76a439f4c0]
2019-09-29 17:33:37 +03:00
Evgeny Mankov 7ae34e1b45 [HIPIFY][perl] Generate stat functions
TODO: make statistics as much as similar to hipify-clang's


[ROCm/hip commit: 849b2678a8]
2019-09-29 14:20:32 +03:00
Evgeny Mankov d265ecac09 [HIPIFY] Generate more hipify-perl (continuation)
+ Minor hipify-perl clean-up
+ Minor CUDA2HIP_Perl refactoring


[ROCm/hip commit: f21e7d8abc]
2019-09-27 19:10:54 +03:00
Evgeny Mankov 3aa9f6bd6e [HIPIFY] Add supported fp16 functions
+ Update hipify-perl accordingly


[ROCm/hip commit: f50852e3a6]
2019-09-26 18:13:20 +03:00
Evgeny Mankov ca15d193e8 [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


[ROCm/hip commit: 9d1d4b78e3]
2019-09-25 18:53:17 +03:00
Evgeny Mankov a7e5c3a600 [HIPIFY] HipifyAction refactoring
+ Merge of cudaSymbolFuncCall and cudaReinterpretCastArgFuncCall matchers into a single cudaHostFuncCall matcher
+ More const std::string declarations
+ Formatting


[ROCm/hip commit: 84baa83a25]
2019-09-24 10:33:51 +03:00
Evgeny Mankov 1eff176c03 [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


[ROCm/hip commit: dd6a92afb7]
2019-09-24 09:44:17 +03:00
Evgeny Mankov df09ca6a67 [HIPIFY][perl] CUDA2HIP_Perl code cleanup
[ROCm/hip commit: fd5ecbf014]
2019-09-22 23:43:07 +03:00
Evgeny Mankov 7b817f7eee [HIPIFY][perl] generateSymbolFunctions() small refactoring
[ROCm/hip commit: 4acefa95c9]
2019-09-22 22:34:07 +03:00
Evgeny Mankov cdf0596e6d [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


[ROCm/hip commit: 1b989bcb8d]
2019-09-21 07:33:17 +03:00
Evgeny Mankov 0504e85f02 [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


[ROCm/hip commit: 3722d5b4b9]
2019-09-19 19:33:42 +03:00
Evgeny Mankov aba6748ab3 [HIPIFY][#1437] Fix: cudaFuncGetAttributes to hipFuncGetAttributes is supported
+ Update hipify-perl and CUDA_Runtime_API_functions_supported_by_HIP.md accordingly


[ROCm/hip commit: f0b1170784]
2019-09-18 17:57:31 +03:00
Evgeny Mankov cc543d6029 [HIPIFY] Add supported device functions (from device_functions.h)
+ [perl] Sync hipify-perl accordingly


[ROCm/hip commit: fc493da5c7]
2019-09-18 17:07:50 +03:00
Evgeny Mankov 19d8d17e55 [HIPIFY][#1430] Build fix for LLVM < 8.0.0
[ROCm/hip commit: 3011e41420]
2019-09-18 11:53:23 +03:00
Evgeny Mankov b1cf1a21d6 [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


[ROCm/hip commit: 042c125601]
2019-09-17 16:17:28 +03:00
Evgeny Mankov 2cd2afa84b [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


[ROCm/hip commit: 4f59ec25fe]
2019-09-16 17:36:55 +03:00
Evgeny Mankov a1fcf145f3 [HIPIFY] Fix build failure due to typo in [#1377]
[ROCm/hip commit: 3f66e7b0b9]
2019-09-16 14:28:52 +03:00
ansurya b5549f4397 Added new device attributes (#1377)
* Added new device attributes

* updated comment

* updated with new device attributes supported


[ROCm/hip commit: ceb734b917]
2019-09-16 08:31:30 +00:00
Evgeny Mankov 8e1256aa00 [HIPIFY] Scripting related refactoring
+ Move generating hipify-perl and hipify-python into separate namespaces and files
+ Move getAbsoluteFilePath and getAbsoluteDirectoryPath to StringUtils


[ROCm/hip commit: b7df0627b1]
2019-09-15 21:13:56 +03:00
Evgeny Mankov 019d08d2f0 [HIPIFY][perl] Generate sub warnUnsupportedDeviceFunctions
[ROCm/hip commit: fd8a7675f8]
2019-09-15 15:18:58 +03:00
Evgeny Mankov bc550cc062 [HIPIFY] Add unsupported fp16 functions
[ROCm/hip commit: 34540002dd]
2019-09-12 18:51:25 +03:00
Evgeny Mankov 2863db60b2 [HIPIFY] Add more unsupported device functions
[ROCm/hip commit: 58c1a144d1]
2019-09-12 17:53:25 +03:00
Evgeny Mankov aae3b6dd50 [HIPIFY][#1404] Fix: add cooperative_groups.h -> hip/hip_cooperative_groups.h
[ROCm/hip commit: 0426035468]
2019-09-11 18:07:09 +03:00
Evgeny Mankov ba10db6fc6 [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);


[ROCm/hip commit: 56ab105e9d]
2019-09-10 15:59:06 +03:00
Evgeny Mankov 17b734afde [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.


[ROCm/hip commit: 6602fadc16]
2019-09-06 18:34:12 +03:00
Evgeny Mankov 8a0224db1d [HIPIFY][fix] Fix for upcoming LLVM 10.0
[ROCm/hip commit: ce4140f94d]
2019-09-01 18:15:03 +03:00
Evgeny Mankov 4deb26d19f [HIPIFY][DNN] cuDNN 7.6.3 support
[ROCm/hip commit: b45c26361d]
2019-08-29 19:55:38 +03:00
Evgeny Mankov e78eb9bb47 [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


[ROCm/hip commit: 24be21495d]
2019-08-28 21:17:35 +03:00
Evgeny Mankov ad66d7626c [HIPIFY][fix] Set the correct exit value for hipify-clang if errors.
This fixes a hanging of unit tests.


[ROCm/hip commit: b863c1392c]
2019-08-21 21:36:53 +03:00
Evgeny Mankov 83ad27b7ef [HIPIFY] CUDA 10.1 Update 2 support
[ROCm/hip commit: 54fee7abdc]
2019-08-21 21:06:20 +03:00
Evgeny Mankov bddcbdeeb6 [HIPIFY] Add cudaMallocManaged -> hipMallocManaged
+ Add mapping for corresponding data types
+ Add a test
+ Update docs


[ROCm/hip commit: d20ae3b50a]
2019-08-13 17:56:06 +03:00
Evgeny Mankov 595ce3e048 [HIPIFY][Driver API] Add support for hipFuncGetAttribute() and enum hipFunction_attribute
[ROCm/hip commit: 27d101aa76]
2019-08-13 16:48:07 +03:00
Evgeny Mankov 681ab172b6 [HIPIFY] Add cuMemcpy2DAsync -> hipMemcpyParam2DAsync mapping
[ROCm/hip commit: 1390ecf538]
2019-08-13 16:31:19 +03:00
Evgeny Mankov bf883d95e9 [HIPIFY] Cooperative groups support
[ROCm/hip commit: aa285d978e]
2019-08-12 19:20:13 +03:00
Evgeny Mankov f0789e57e6 [HIPIFY][cuRAND][#1257] Fix
+ Update CURAND_API_supported_by_HIP.md and test accordingly


[ROCm/hip commit: 3ac3b2800b]
2019-08-09 21:27:16 +03:00
Evgeny Mankov 728b2f5843 [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.


[ROCm/hip commit: 25075729f9]
2019-08-02 16:46:45 +03:00
Evgeny Mankov 2810475577 [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.


[ROCm/hip commit: 77e9ade9bc]
2019-07-31 22:59:05 +03:00
Evgeny Mankov f7ef437302 [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


[ROCm/hip commit: 18117a4ad1]
2019-07-29 21:12:35 +03:00
Evgeny Mankov ae32b99c20 [HIPIFY][SPARSE] Sync cuSPARSE 10.1 - HIP - HIPIFY (Step 1 of 2)
[ROCm/hip commit: 2adad9c68d]
2019-07-26 21:34:36 +03:00
Evgeny Mankov 26923a8644 [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


[ROCm/hip commit: 6f6aa13448]
2019-07-26 19:05:42 +03:00
Evgeny Mankov 3ad30304a4 [HIPIFY][#1239] Fix an assert
[ROCm/hip commit: d19fcbcde4]
2019-07-22 22:13:54 +03:00
Evgeny Mankov 5adcecba14 [HIPIFY][#941][fix] Workaround for an assert on forbidden option "--"
+ Fixes the following assert in debug version:
Assertion failed: (S.empty() || S[0] != '-') && "Option can't start with '-", file C:\GIT\LLVM\trunk-for-submits\llvm-project\llvm\lib\Support\CommandLine.cpp, line 440
+ DashDash option left declared in order to be listed in help.


[ROCm/hip commit: f5d6bb8267]
2019-07-19 20:23:17 +03:00
ansurya df4dee39f4 Add Max Texture 1D,2D,3D device properties (#1226)
* Add Max Texture 1D,2D,3D device properties

* Corrected testcase to use enums defined in hipDeviceAttribute_t

* Added texture 1D,2D and 3D support for NVIDIA path


[ROCm/hip commit: 8e496c09d9]
2019-07-18 03:18:50 +00:00
Evgeny Mankov 1ccb6ea65e Merge pull request #1220 from emankov/master
[HIP][HIPIFY] Split HIP_ARRAY_DESCRIPTOR struct to HIP_ARRAY_DESCRIPTOR and HIP_ARRAY3D_DESCRIPTOR

[ROCm/hip commit: 7a87fc6c04]
2019-07-16 18:15:44 +03:00
Evgeny Mankov 33a5eca319 [HIPIFY][#1221] Add regex replacements for include refs with path separators while generating hipify-perl
[ROCm/hip commit: 6b4a1fe1db]
2019-07-12 16:18:00 +03:00
Evgeny Mankov 96801f7b3a [HIP][HIPIFY] Split HIP_ARRAY_DESCRIPTOR struct to HIP_ARRAY_DESCRIPTOR and HIP_ARRAY3D_DESCRIPTOR
[Reason] To be compatible with CUDA [#1133]

Update HIP code, hipify-clang, tests and docs

[TODO] Add support of the corresponding functions on nvcc fallback path


[ROCm/hip commit: c7117df91b]
2019-07-11 14:58:16 +03:00
Evgeny Mankov 5e8190aa9c [HIPIFY] Statistics to CSV file dumping revise
+ Add option -print-stats-csv to dump statistics to CSV file
+ If -o-dir is specified, CSV file will be dumped there
+ Generate 1 summary file sum_stat.csv in case of multiple sources


[ROCm/hip commit: 3b40e53cff]
2019-07-07 20:55:17 +03:00
Evgeny Mankov 7cb92aeb9a [HIPIFY] Fix multiple input files support
Reported in #1168


[ROCm/hip commit: db6571ae75]
2019-06-20 18:05:57 +03:00
Evgeny Mankov 9cda729bbb [HIPIFY][DNN] Support of cuDNN 7.6.0
+ Update docs and README.md accordingly


[ROCm/hip commit: b72909055d]
2019-05-27 21:44:53 +03:00