Commit Graph

49 Commits

Author SHA1 Message Date
Evgeny Mankov a9268008ac [HIPIFY] Remove hipLaunchParm in HIP kernel declaration. 2017-04-03 20:32:50 +03:00
Evgeny Mankov 3cd0e53a22 [HIPIFY] Switch building from gcc to clang 3.8. 2017-03-21 21:01:05 +03:00
Evgeny Mankov 70ed1014ad [HIP] [FIX] Fix GCC build. 2017-03-20 21:03:18 +03:00
Evgeny Mankov 4ba96241b4 [HIPIFY] Sync HIPIFY with HIP by enum values.
+ all Cuda 7.5 RT API enum values are synced.
+ a few missing functions are added.
+ CONV_EXEC type is added for Execution control functions and data types.
2017-03-03 21:59:05 +03:00
Evgeny Mankov eae27590d7 [HIPIFY] sync with HIP by HIP_UNSUPPORTED Runtime functions. 2017-02-20 21:19:34 +03:00
Evgeny Mankov d6c01aabab [HIPIFY] Sync HIPIFY with HIP by data types. 2017-02-20 18:28:59 +03:00
Evgeny Mankov 77e97627da [HIPIFY] Add more Stream and Occupancy functions. 2017-02-17 15:04:15 +03:00
Evgeny Mankov 72a9df0250 [HIPIFY] Add missing Memcpy functions.
+ cudaChooseDevice
2017-02-16 23:03:01 +03:00
Evgeny Mankov f37343267a [HIPIFY] Add more Memory Management functions 2017-02-16 21:26:44 +03:00
Evgeny Mankov 069bb1389c [HIPIFY] Add Channel (Textures) support. 2017-02-16 21:10:10 +03:00
Evgeny Mankov fd5d8c2bb5 [HIPIFY] Add Inter-Process Communications (IPC) support. 2017-02-16 20:24:53 +03:00
Evgeny Mankov 8a2748e8de [HIPIFY] Add CUDA Driver LAUNCH_PARAM defines. 2017-02-16 20:00:36 +03:00
Evgeny Mankov d713349872 [HIPIFY] Add safe type check for cudaChooseDevice matcher. 2017-02-16 19:38:35 +03:00
Evgeny Mankov 7c1deb6140 [HIPIFY] [Fix] Crash on thrust example fallback_allocator.cu.
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/65

[Bug]
Access violation in cudaStructVar matcher.

      StringRef name = structVar->getType()
        ->getAsStructureType()
        ->getDecl() // <--- Access Violation
        ->getNameAsString();

[Solution]
Add isStructureType() check before getting type as Struct.

[ToDo]
Find case-studies for that StructVar matcher with types other than Struct.
2017-02-15 19:48:31 +03:00
Evgeny Mankov 26dc7a0995 [HIPIFY] Add file:line:col info to [HIPIFY] warnings/errors. 2017-02-14 21:36:49 +03:00
Evgeny Mankov 353f5b238a [HIPIFY] Add more unhandled refs for opaque pointers.
CUfunc_st -> hipFunction_t *
CUctx_st -> hipCtx_t *
CUmod_st -> hipModule_t *
2017-02-14 17:34:10 +03:00
Evgeny Mankov ce2daa53fb [HIPIFY] Fix warnings on unhandled refs.
CUstream_st -> hipStream_t *
CUevent_st -> hipEvent_t * (fixed, was -> hipEvent_t)

Warning:
[HIPIFY] warning: the following reference is not handled: 'CUstream_st' [struct var ptr]. (thrust/examples/cuda/async_reduce.cu)
2017-02-14 17:23:09 +03:00
Evgeny Mankov afe6073d3f [HIPIFY] Narrow cudaKernelCallExpr matcher.
[Explanation]
Narrow cudaKernelCallExpr matcher to isExpansionInMainFile() - to the file being actually converted (without system includes).
But as for Thrust, there are *.inl files, which are nevertheless being expanded in main file.
These files contain cuda kernel launches, which are not converted successfully by hipify, for instance:
thrust/system/cuda/detail/detail/launch_closure.inl:98:23.

[ToDo]
File a bug on cudaKernelCallExpr matcher for conversion error (thrust\examples\cuda\<any cu example>).
2017-02-14 16:28:05 +03:00
Evgeny Mankov e5c601df45 [HIPIFY] Minor refactoring
+ insertHipHeaders function is added to Cuda2Hip class;
+ fix replacement ending for hip header.
2017-02-13 18:13:49 +03:00
Evgeny Mankov 25d4de9e95 [HIPIFY] 'CHANGED LOC', 'TOTAL LOC' and 'CODE CHANGED (in lines)' are added to statistics. 2017-02-10 22:02:41 +03:00
Evgeny Mankov cc8a7f3d3e [HIPIFY] Readme.md update. 2017-02-08 19:50:05 +03:00
Evgeny Mankov b3098091fd [HIPIFY] Readme.md update.
+ Launching example.
+ Delimiter "--" is strongly recommended.
+ "-x cuda" option is mentioned as well.
2017-02-08 19:43:32 +03:00
Evgeny Mankov 5200073b4c [HIPIFY] Formatting, no functional changes. 2017-01-13 14:59:15 +03:00
Evgeny Mankov fd0c56a767 [HIPIFY] cudaDataType_t and libraryPropertyType_t support (CUDA 8.0.44 only)
All are marked as HIP_UNSUPPORTED.
IMPORTANT:
1. libraryPropertyType_t has no cuda prefix. => TO_DO: new matcher is needed.
2. all libraries (cublas, cufft, cusolver, cusparse, nvgraph) have started to use these types (since 8.0).
2017-01-10 20:24:27 +03:00
Evgeny Mankov 81fd34f236 [HIPIFY] cudaDeviceAttr (RT API) support up to CUDA 8.0.44
Attributes, which are not yet supported by HIP, are marked as HIP_UNSUPPORTED.
2017-01-10 19:29:33 +03:00
Evgeny Mankov c0c04f34be [HIPIFY] CUdevice_attribute support up to CUDA 8.0.44
Attributes, which are not yet supported by HIP, are marked as HIP_UNSUPPORTED.
2017-01-10 17:54:22 +03:00
Evgeny Mankov bbb75fdd8e [HIPIFY] Elapsed time is added to statistics. 2016-12-28 20:44:05 +03:00
Evgeny Mankov ddf51d382c [HIPIFY] Added the rest of cuBlas API.
CUBLAS API 7.5 now is supported by hipify;
API calls, which are not yet supported by hcblas/hipblas, are listed as HIP_UNSUPPORTED.
2016-12-28 18:08:10 +03:00
Evgeny Mankov 9070d55814 [HIPIFY] Formatting, no functional changes. 2016-12-27 19:48:59 +03:00
Evgeny Mankov e740d368d9 [HIPIFY] [Fix] An argument of a function used as macro argument is not hipified.
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/35
2016-12-27 18:54:02 +03:00
Evgeny Mankov 3cd1adcb24 [HIPIFY] Pointer to typedef declaration is not hipified
Fix for https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/60
2016-12-26 19:03:50 +03:00
Evgeny Mankov e8c5906062 [HIPIFY] Fix line endings. 2016-12-23 18:01:26 +03:00
Evgeny Mankov 52b3fb9f79 [HIPIFY] Stats: Calculation of changed code amount, based on actually replaced bytes.
+ REPLACED bytes, TOTAL bytes & CODE CHANGED are added to statistics.
+ -o-stats option for specifying the file with statistic.
2016-12-23 17:40:06 +03:00
Evgeny Mankov ac8166d051 [HIPIFY] Statistics in CSV file.
+ Stats by CUDA ref name.
+ Conversion %.

TODO: Calculation of changed code amount, based on actually replaced bytes.
2016-12-21 23:08:01 +03:00
Evgeny Mankov ea8e886077 [HIPIFY] Reflect unsupported CUDA API refs in statistics
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/53

+ Unsupported refs (by HIP) are now might be listed along with the supported ones.
+ Warnings are added for the unhandled (by HIPIFY) refs, for instance:
  "warning: the following reference is not handled: 'cublasContext' [param decl ptr]."
+ Reflect unsupported CUDA API refs in statistics.
+ Occupancy API [HIP_UNSUPPORTED].
+ A few CUBLAS refs are listed as HIP_UNSUPPORTED.

TODO: Statistics in CSV file.
2016-12-19 14:38:19 +03:00
Evgeny Mankov a9488603b4 [HIPIFY] nested macro is not hipified, when it isAnyIdentifier
Fix for https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/55
2016-12-15 21:00:34 +03:00
Evgeny Mankov 6bcacf83a4 [HIPIFY] Code refactoring and total stat collecting
+ Single base class for Preprocessor and MatchFinder classes.
+ Total Stats for multiple files is added.
2016-12-13 18:01:08 +03:00
Evgeny Mankov b73ffa4e7c [HIPIFY] Rename -n to -examine 2016-12-12 20:03:01 +03:00
Evgeny Mankov d5eb7f494f [HIPIFY] Multiple source files support. 2016-12-12 19:57:19 +03:00
Evgeny Mankov c5f5e662ef [HIPIFY] -no-backup option is added.
Is useful for release hipifying in place.
2016-12-08 23:14:19 +03:00
Evgeny Mankov f5deff4ba3 [HIPIFY] -no-output support.
Actually output file is created by clang itself, but isn't updated and is deleted after processing.
In cooperation with -print-stat -no-output (or single -n) is used for examine the source CUDA code.

Conflicting options:
-inplce
-o
2016-12-08 22:45:10 +03:00
Evgeny Mankov a81dfc5a0f Fix the limitation of supported input files.
Actually .cu and .cuda was supported.

+ All the file names are allowed, including file names without extension.

[IMPORTANT]
To hipify CUDA input file, which name is not *.cu, please add option "-x cuda" after tool's options ending marker "--", for instance:

./hipify-clang NeuralNet -- -x cuda

This option will go to clang itself, not the hipify tool.
2016-12-08 20:28:43 +03:00
Evgeny Mankov e1812a1319 [HIPIFY] wrap kernel name with HIP_KERNEL_NAME macros...
only in case of commas in it.
2016-10-28 20:05:51 +03:00
Evgeny Mankov 3101c26d14 * [HIPIFY] Initial Profiler support.
CUDA Driver API porting to HIP:

+ cuProfilerStart, cuProfilerStop.
- cuProfilerInitialize & cudaProfilerInitialize - unsupported yet by HIP.
2016-10-28 18:32:13 +03:00
Evgeny Mankov 4831ac9f7e [HIPIFY] Fix typo in option's help description 2016-10-20 18:57:52 +03:00
Evgeny Mankov d9b2ed07c3 [HIPIFY] Add missing options to tool's -help
Also HelpMessage with a description of the common command-line options related to the compilation database and input files is added.
2016-10-20 18:29:24 +03:00
Evgeny Mankov 5c6e741b92 [HIPIFY] Initial support of CUDA Limits. 2016-10-13 23:32:52 +03:00
Maneesh Gupta 656c1766ea Add packaging steps for hipify-clang
Change-Id: I0ed916d5fcb4fc4734f1d92e686fc053e4680052
2016-10-05 22:34:42 +05:30
Maneesh Gupta 11fd56ed5d clang-hipify -> hipify-clang. Also attempt to build it by default
Change-Id: I694e6c772f5347c820d9bd6c9aa61d6d9696911e
2016-10-05 13:06:22 +05:30