Gráfico de commits

44 Commits

Autor SHA1 Mensaje Fecha
Evgeny Mankov c2c144ac04 [HIPIFY][fix] Abandon canCompileHostAndDeviceInOneJob check for --cuda-compile-host-device option
[Reason] It turned out that it is not so: 2 jobs are always
2019-11-07 11:30:40 +03:00
Evgeny Mankov 16a27213e4 [HIPIFY] Reorder options propagation to clang
[Reason] Leave overriding opportunity for -D, -std=c++XX, etc.
2019-11-07 11:21:06 +03:00
Evgeny Mankov 02589264a0 [HIPIFY] Introduce --cuda-gpu-arch as hipify-clang's option
+ Pass it to clang if specified
2019-11-02 14:19:31 +03:00
Evgeny Mankov 3f2eefa82a [HIPIFY] Introduce --cuda-compile-host-device for LLVM >= 9
* LLVM < 9 continues using --cuda-host-only
2019-10-29 19:42:53 +03:00
Evgeny Mankov b6e6f12b54 [HIPIFY] Disable delayed template parsing
By implicit unconditional passing -fno-delayed-template-parsing option (which appeared in LLVM 3.8.0, thus doesn't need compatibility wrapping) to hipify-clang.

[Reason] To parse uncalled template functions otherwise they are not parsed without calling, thus not hipified.

Affects cub_03.cu test, which has uncalled global template function.
2019-10-22 19:07:37 +03:00
Evgeny Mankov 3011e41420 [HIPIFY][#1430] Build fix for LLVM < 8.0.0 2019-09-18 11:53:23 +03: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 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 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 6b4a1fe1db [HIPIFY][#1221] Add regex replacements for include refs with path separators while generating hipify-perl 2019-07-12 16:18:00 +03:00
Evgeny Mankov 3b40e53cff [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
2019-07-07 20:55:17 +03:00
Evgeny Mankov db6571ae75 [HIPIFY] Fix multiple input files support
Reported in #1168
2019-06-20 18:05:57 +03:00
Evgeny Mankov 6b370e7743 [HIPIFY][python] Initial support of hipify-python generation from hipify-clang
+ Only a generation of transformation map of CUDA entities is implemented.
+ 2 hipify-clang options are added: -python, -o-python-map-dir.
+ Explicitly set -roc option for cuda_to_hip_mappings.py generation.
+ Generated file already might be used by pytorch team.
2019-05-08 19:08:55 +03:00
Evgeny Mankov 9ddc316fa7 [HIPIFY][perl] Support of hipify-perl generation from hipify-clang: next steps
+ Generate transformation map sorted by entity type.
+ Add a generation of supported header files.
2019-05-08 15:25:06 +03:00
Evgeny Mankov 5a3d33a338 [HIPIFY][perl] Initial support of hipify-perl generation from hipify-clang
+ Only a generation of transformation map of CUDA entities supported by HIP is implemented.
+ 3 hipify-clang options are added: -perl, -o-perl-map, -o-perl-map-dir.
+ OptionsParser mode is changed from OneOrMore to Optional to support hipify-perl generation without actual hipification.
+ Add explicit control of source files specification absence in case of no perl generation.
2019-05-07 17:27:34 +03:00
Evgeny Mankov 6d3c443234 [HIPIFY][fix][#204] Suppress warning message: #pragma once in main file 2019-04-24 20:35:52 +03:00
Evgeny Mankov ce28bc79ef [HIPIFY] Introduce Verbose '-v' option as hipify's own 2019-01-30 15:19:06 +03:00
Evgeny Mankov 1be38618e2 [HIPIFY][fix][#867] Relative paths routines fixes and improvements
+ Always check for existence any file or dir, first of all, because real_path and make_absolute differ: real_path additionally performs access on file/dir.
+ Relative path routines in source files implemented similarly to dirs.
+ Error handling improvements.
2019-01-16 19:30:09 +03:00
Evgeny Mankov e6c09bb9af [HIPIFY] rename variables as requested in review 2019-01-14 21:19:34 +03:00
Evgeny Mankov 13ffeb47ce [HIPIFY] Introduce '-D' option as hipify-clang's one
+ '-D' might be set as hipify-clang option (before separator '--' or without specifying separator at all);
+ '-D' as a clang option might be specified as well (after options separator '--');
+ All defines specified as hipify-clang defines (before options separator '--') will be set after clang's ones and will redefine the same clang's ones.
2019-01-14 19:34:42 +03:00
Evgeny Mankov 93aeb04cec [HIPIFY] Introduce '-I' option as hipify-clang's one
+ '-I' might be set as hipify-clang option (before separator '--' or without specifying separator at all);
+ '-I' as a clang option might be specified as well (after options separator '--').
2019-01-14 18:23:54 +03:00
Evgeny Mankov aa4c59ae0c [HIPIFY] Introduce '--' option - a separator between hipify-clang and clang options
+ Append '--' to the end of hipify-clang options in case of its absence.

[Reason]
+ Avoid the necessity for the user in JSON compilation database specification.
  Otherwise:
  Error while trying to load a compilation database:
  Could not auto-detect compilation database for file "test.cu"

  Though the hipification will be performed correctly without JSON database.
2019-01-10 18:27:30 +03:00
Evgeny Mankov fbfe005e4e [HIPIFY] Introduce CUDA installation path option '-cuda-path'
Repeats clang's '--cuda-path' option.

[Reason]
In case of absence of any other clang's options setting '-cuda-path' allows not to specify separator '--' before clang's '--cuda-path'.

+ Tests and scripts are updated accordingly.
2019-01-09 20:18:36 +03:00
emankov 4a475a9db6 [HIPIFY][fix][#849] Create temporary file based on source file name only 2019-01-05 14:52:15 +03:00
emankov c09022232a [HIPIFY][fix] Change system includes order
'include/cuda_wrappers' should go first.
2018-12-29 22:10:00 +03:00
emankov c519c89abf [HIPIFY] Add system includes for packaged hipify-clang to use it without the necessity of installing clang
Header files in those dirs are an integral part of clang, which includes wrapper headers for CUDA.
There is no need in checking those dirs.

[Reasons]
1. clang will not take into account empty or irrelevant include dirs;
2. Packages for different clang versions will have different header files in the above dirs.
2018-12-29 21:53:18 +03:00
emankov 7ea586c323 [HIPIFY] Starts implicitly setting '-x cuda' by hipify-clang itself
+ No need in setting '-x cuda' for the user anymore;
+ Testing and Readme updated accordingly.
2018-12-29 17:04:59 +03:00
emankov 2d3f62c3e1 [HIPIFY][win] Set -std=c++14 if MSVC
+ Due to latest Windows SDK implementation based on c++14 features, '-std+c++14' is a must;
+ Doesn't affect older versions of MSVC 2017, 2015 (the latest supported is MSVC 2015);
+ On linux still '-std=c++11' is a must;
+ Exclude '-std=' from lit config.
2018-12-29 15:51:06 +03:00
emankov 208d7cfaf1 [HIPIFY] LLVM compatibility
+ sys::fs::make_absolute fro LLVM < 5.0
+ sys::fs::real_path for LLVM >= 5.0
2018-12-28 01:34:35 +03:00
emankov 912c4710ed [HIPIFY] Use sys::fs::createTemporaryFile without file creation
[Reasons]
+ File is opened further by clang
+ There is a regression with LLVM 5.x, when system error occurs: temporary file couldn't be renamed - permission denied.
2018-12-27 17:00:18 +03:00
emankov c8d720081f [HIPIFY] Introduce option -o-dir
Option -o-dir for output directory:
  + if not specified source file(s) directory is used;
  + creates the directory if the directory doesn't exist (only one level in a tree);
  + if -o and -o-dir both are specified the hipified file is placed to "-o-dir" + "-o";
  + reports an error in case of a wrong directory specified, in case of necessity of creating a tree of subfolders, or in case of a filename specified.
2018-12-26 16:30:41 +03:00
emankov cc59af5dbd [HIPIFY][#812] Finishing with temps
1. Option -temp-dir for temporary directory:
  + if not specified system temp is used;
  + creates the directory if the directory doesn't exist (only one level in a tree);
  + reports an error in case of a wrong directory specified, in case of necessity of creating a tree of subfolders, or in case of a filename specified.
2. Option -save-temps for preserving temporary files:
  + if specified temporary files are not being deleted from system temps and user temps as well.
3. Work with files in terms of calculated absolute paths by collapsing all '.' and '..' patterns, resolving symlinks and expanding '~' expression to the user's home directory:
  + to produce correct include paths;
  + to avoid possible errors on file routines.
2018-12-22 00:47:19 +03:00
emankov 8bf3b42e7e [HIPIFY][fix][#824] Fix the bug with -inplace option
+ Do temp file copying instead of renaming
+ Replace all file routine functions with LLVM's
+ Do not output hipified file in case of errors
2018-12-20 20:43:50 +03:00
emankov fcaf954998 [HIPIFY] Add the legal right comment to all the sources 2018-12-20 18:47:57 +03:00
Evgeny Mankov da6fdc0397 [HIPIFY] Temporary files in system temps introducing
+ Files are not being placed near original source before hipification anymore, system tmp is used for them now.
+ Additional include (-I) to absolute original source dir is added
+ Partially implements #812
+ Tested on windows/linux, single/multiple inputs, with and without includes to user header files
2018-12-17 20:48:48 +03:00
Evgeny Mankov 9d223f0f65 [HIPIFY][fix] Fixer for #801
[issue #801] Errors in hipification statistics
2018-12-12 21:33:00 +03:00
Evgeny Mankov 5d1255272b [HIPIFY] Split CUDA2HIP map into a number of maps based on API type
[Reasons]
+ Simplify the support
+ Optimize compilation and code generation time

[Additionally]
+ Update minimum required version of cmake
+ Fix MSVC compile options force update
2018-10-23 00:00:10 +03:00
Evgeny Mankov ee3a5cc722 [HIPIFY] Code cleanup and formatting 2018-10-15 15:27:37 +03:00
Evgeny Mankov 9fcb48e5c4 [HIPIFY] Add DEBUG(X) macro compatibility
In LLVM 7.0 DEBUG(X) was deleted, LLVM_DEBUG(X) should be used instead.
2018-07-11 18:21:00 +03:00
Evgeny Mankov 8499e79e2b [HIPIFY] undo apply .clangformat to HIPIFY source files 2018-04-23 20:22:15 +03:00
Maneesh Gupta 1ba06f63c4 Apply .clangformat to all repo source files
Change-Id: I7e79c6058f0303f9a98911e3b7dd2e8596079344
2018-03-12 11:29:03 +05:30
Evgeny Mankov 7f3e89bbb0 [HIPIFY][fix] Build against llvm 3.8.0 fixed - missing include
/srv/HIP/hipify-clang/src/main.cpp:134:19: error: no member named 'dbgs' in namespace 'llvm'
      DEBUG(llvm::dbgs() << "Skipped some replacements.\n");
            ~~~~~~^
2018-02-08 00:08:47 +03:00
Chris Kitching 24cdc5e1d3 Use a custom FrontendAction to simplify identifier translation
Most of what hipify does is really just replacing CUDA idenitifers
with HIP ones. CUDA function calls, preprocessor macro calls,
enum references, types, etc.

This is problematic: calls/types/enum-refs require name resolution
for the AST matcher to work. This fails in the presence of code
deleted by the preprocessor, and in two-pass template compilation.

Instead, we can simply hook the lexer and have it rewrite the
identifiers for us.

This approach means identifier transformations will work correctly
regardless of where they appear (and we get to delete lots of code)

- Fixes #260
- Helps a bit with #207 - it will still fail to translate kernel
calls in preprocessor-ignored code, but everything except kerel
launches should translate correctly now, even in
preprocessor-deleted code.
2017-11-13 20:58:54 +00:00