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.
[ROCm/hip commit: 950434f4af]
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)
[ROCm/hip commit: a6db38c337]
[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>).
[ROCm/hip commit: d1cfcf55f1]
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).
[ROCm/hip commit: 9a0780001b]
CUBLAS API 7.5 now is supported by hipify;
API calls, which are not yet supported by hcblas/hipblas, are listed as HIP_UNSUPPORTED.
[ROCm/hip commit: 6ceb85a03a]
+ REPLACED bytes, TOTAL bytes & CODE CHANGED are added to statistics.
+ -o-stats option for specifying the file with statistic.
[ROCm/hip commit: 6882057fd2]
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.
[ROCm/hip commit: 3dd32e969d]
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
[ROCm/hip commit: 2374153c10]
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.
[ROCm/hip commit: 23bbe6e467]
Also HelpMessage with a description of the common command-line options related to the compilation database and input files is added.
[ROCm/hip commit: dae4b060bd]