Grafico dei commit

205 Commit

Autore SHA1 Messaggio Data
Evgeny Mankov ce57b99f9d [HIPIFY][Complex] Add cuComplex support
+ Add API_COMPLEX support (data types and functions)
+ Add cuComplex_API_supported_by_HIP.md
+ Add cuComplex_Julia.cu test
+ Update README.md
2018-08-08 18:34:57 +03:00
Evgeny Mankov 55ee734b22 [HIPIFY][docs] Formatting 2018-08-01 17:29:00 +03:00
Evgeny Mankov c57bfd50e3 [HIPIFY][FFT] Add cuFFT support
+ Add API_FFT support (data types and functions)
+ Add CUFFT_API_supported_by_HIP.md
+ Add simple_cufft.cu test
+ Update README.md
2018-07-31 22:25:48 +03:00
Evgeny Mankov e00cfefd4f [HIPIFY][BLAS] cuBLAS support revise
+ doc for CUBLAS API supported by HIP
+ 3 tests: 0 & 1 based indexing, sgemm matmul
2018-07-28 21:00:44 +03:00
Evgeny Mankov 618b1f5171 [HIPIFY][DNN] cuDNN support revise
+ add doc for CUDDN API supported by HIP
+ cuDNN softMax test
2018-07-20 21:00:24 +03:00
Evgeny Mankov 4e0d07f07a [HIPIFY] Support of cudaComputeMode / CUcomputemode
+ update docs
+ fix typo in hip_runtime_api.h
2018-07-14 16:08:19 +03:00
Evgeny Mankov b9c15702d2 [HIPIFY] Current trunk LLVM 7.0 initial support
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.
2018-07-11 20:15:49 +03:00
Evgeny Mankov 22dffde22e [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 2806dff2be [HIPIFY][docs] Update README.md after testing with new LLVM releases 5.0.2 and 6.0.1 2018-07-10 20:37:54 +03:00
Evgeny Mankov 5585072e63 [HIPIFY][DNN] support of cuDNN 7.1.3 - finishing 2018-05-21 18:31:20 +03:00
Evgeny Mankov 1108a925ca [HIPIFY][DNN] support of cuDNN 7.1.3 - continuation 2
- not finished yet.
- based on https://github.com/ROCmSoftwarePlatform/hipDNN.
- testing on https://github.com/baidu-research/DeepBench - almost pass, except cusparse (not supported yet).
- started testing of examples from libcudnn7-dev_7.1.3.16-1+cuda8.0_amd64 package.
2018-05-14 16:23:59 +03:00
Evgeny Mankov b31df9cc60 [HIPIFY][DNN] support of cuDNN 7.1.3 - continuation
- not finished yet.
- based on https://github.com/ROCmSoftwarePlatform/hipDNN.
- testing on https://github.com/baidu-research/DeepBench.
2018-05-10 17:36:51 +03:00
Evgeny Mankov 57d9ced72a [HIPIFY][Blas] Sync with CUDA 9.1 2018-05-08 20:42:30 +03:00
Evgeny Mankov 089ac77b97 [HIPIFY] Sync with hipBLAS 2018-05-08 19:20:47 +03:00
Evgeny Mankov b6d4c7cfe6 [HIPIFY][doc] Readme.md update
+ supported CUDA version to LLVM version correspondence table is added.
+ Test section is rewritten.
+ Windows support is added.
2018-05-04 10:50:18 +03:00
Evgeny Mankov 4d19bd1da5 [HIPIFY] Initial cuDNN support
- based on https://github.com/ROCmSoftwarePlatform/hipDNN.
- lit testing was supplemented with CUDA_DNN_ROOT_DIR for cuDNN testing.
- single cuDNN test was added.
2018-05-03 11:33:40 +03:00
Evgeny Mankov bfee03f95b [HIPIFY] Sync with HIP (Execution Control, Surfaces, Memory)
Execution Control [deprecated since 7.0]:
cudaConfigureCall -> hipConfigureCall
cudaLaunch -> hipLaunchByPtr
cudaSetupArgument -> hipSetupArgument

Surfaces (partially):
cudaSurfaceObject_t -> hipSurfaceObject_t
cudaSurfaceBoundaryMode -> hipSurfaceBoundaryMode
cudaCreateSurfaceObject -> hipCreateSurfaceObject
cudaDestroySurfaceObject -> hipDestroySurfaceObject

Memory Management:
cudaMemset2DAsync -> hipMemset2DAsync
2018-04-24 22:04:04 +03:00
Evgeny Mankov ad28f72ca9 [HIPIFY] undo apply .clangformat to HIPIFY source files 2018-04-23 20:22:15 +03:00
Maneesh Gupta 9e47fccc89 Apply .clangformat to all repo source files
Change-Id: I7e79c6058f0303f9a98911e3b7dd2e8596079344
2018-03-12 11:29:03 +05:30
Evgeny Mankov 8ba4acb3cd [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
Evgeny Mankov eef94a74bc [HIPIFY][tests] add poisson-api-example test
+ add missing types
+ doc update
2018-01-30 19:50:18 +03:00
Evgeny Mankov 2ae2693c8a [HIPIFY][tests] fix typo 2018-01-30 18:55:09 +03:00
Evgeny Mankov 58f2d3c93f [HIPIFY] InclusionDirective refactoring
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.
2018-01-29 18:33:47 +03:00
Evgeny Mankov 657be80c29 Merge pull request #340 from emankov/master
[HIPIFY][fix] Fix PragmaDirective
2018-01-24 18:09:54 +03:00
Evgeny Mankov aaa9559768 [HIPIFY][fix] CUDA and cuBLAS main headers correct handling 2018-01-23 23:43:36 +03:00
Evgeny Mankov b9fc653b08 [HIPIFY][fix] Fix PragmaDirective
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.
2018-01-23 23:06:55 +03:00
Evgeny Mankov 1ecb5b5901 [HIPIFY] Sync with hipBLAS ToT and CUDA cuBLAS 9.1 2018-01-22 17:12:02 +03:00
Evgeny Mankov 5b1b3438fd [HIPIFY] cuRAND lib support (Device) 2018-01-19 21:29:05 +03:00
Evgeny Mankov 2e2e38f163 [HIPIFY] cuRAND lib support (partial - only Host) 2018-01-19 17:38:51 +03:00
Evgeny Mankov a8cae9ec07 Merge pull request #332 from emankov/cudaMap_2
[HIPIFY] Add cudaMalloc3D support
2018-01-18 13:05:57 +03:00
Evgeny Mankov eb27585136 [HIPIFY] Add cudaMalloc3D support 2018-01-18 12:28:56 +03:00
Evgeny Mankov 2bf8cc691b [HIPIFY] Add CUDA Driver API Texture Ref support (partial) 2018-01-18 12:03:03 +03:00
Evgeny Mankov e2ac6c6296 [HIPIFY] Add more supported by HIP CUDA Driver API Arrays data types and functions 2018-01-16 21:07:50 +03:00
Evgeny Mankov 8f84e7a4ee Merge pull request #319 from emankov/issue_211
[HIPIFY][fix][#211] Algorithm for explicit insert of hip include directive
2018-01-16 19:47:15 +03:00
Evgeny Mankov 23889e7987 [HIPIFY] Add more supported by HIP CUDA RT API Textures and Arrays data types 2018-01-16 17:21:19 +03:00
Evgeny Mankov a26e323612 Update HipifyAction.cpp
dead code eliminate
2018-01-16 15:08:08 +03:00
Evgeny Mankov e90a76a1ef [HIPIFY][fix][#211] Algorithm for explicit insert of hip include directive
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.
2018-01-15 21:05:05 +03:00
emankov f83df46b8c [HIPIFY][#311][fix] Get rid of socat in run_test.sh 2018-01-15 14:20:37 +03:00
Evgeny Mankov d11dccdd44 [HIPIFY][cmake] Version compatibility checks of CUDA and clang are added 2018-01-12 17:36:41 +03:00
Evgeny Mankov 5b7d733fc1 Merge pull request #307 from emankov/issue_306
[HIPIFY][FIX][#306] Eliminate second cuda main include directive
2018-01-10 22:50:44 +03:00
Evgeny Mankov cc133b09aa [HIPIFY][fix][#306] Code improve 2018-01-10 21:26:05 +03:00
Evgeny Mankov 7b060535c0 [HIPIFY][#308][fix] Consume error returned by Replacements::add(...) 2018-01-09 20:03:53 +03:00
Evgeny Mankov 5a45d3ca84 [HIPIFY][FIX][#306] Eliminate second cuda main include directive
// hipified to #include<hip/hip_runtime.h>
#include<cuda.h> // 1st cuda main include (Driver API)
// to eliminate
#include<cuda_runtime.h> // 2nd cuda main include (Runtime API)

HIP has one header hip_runtime.h for both CUDA APIs, thus second cuda main include directive is eliminated entirely.
2017-12-26 20:54:54 +03:00
Evgeny Mankov eff6831217 [HIPIFY][cmake] Fix require_program function
Function require_program erroneously doesn't report "Can't find program" on any missing program except the first one due to the cached FOUND_PROGRAM value.

Additionally:
+ Do not throw FATAL_ERROR on missing program in order to obtain the whole list of missing programs (if any).
+ Report also found program location.
2017-12-18 19:57:04 +03:00
Evgeny Mankov 45befb73d3 [HIPIFY] Remove cudaBuiltin matcher 2017-12-06 20:22:14 +03:00
Evgeny Mankov ccc959fdc9 [HIPIFY] Disable cudaBuiltin matcher.
As HIP has started to support vanilla CUDA syntax for threadIdx, blockIdx, blockDim and gridDim.
Other CUDA builtins are not tracked for now.
2017-12-05 20:28:51 +03:00
Evgeny Mankov 43f0a14005 [HIPIFY] remove duplicates from CUDA_IDENTIFIER_MAP 2017-12-05 19:46:53 +03:00
Evgeny Mankov b25d199111 Merge pull request #262 from ChrisKitching/frontendaction
[HIPIFY] Mostly fix preprocessor-or-template induced issues
2017-11-27 17:30:11 +03:00
Chris Kitching 506deca07f Use proper clang diagnostics for printing warnings
Much pretty. Very wow

This gives users all the usual power when it comes to manipulating
clang diagnostics. People can pass -Werror can have hipify fail if
it doesn't completely translate a file, for example. Much nicer
than reinventing the wheel.
2017-11-13 20:58:55 +00:00
Chris Kitching 7a441aef10 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