Skip to end of banner
Go to start of banner

Porting Cuda Codes to HIP

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Current »

HIP: Heterogeneous Interface for Portability is developed by AMD to program on AMD GPUs. 

ROCm environment offers two automated methods for automatically converting CUDA projects to HIP:  Hipify perl a Perl script you can run on the CUDA source code to convert it to HIP format and Hipify clang a preprocessor that operates from within the HIP/ Clang compiler tool chain, converting the code as a preliminary step within the compiler process.

The hipify perl script acts directly on the CUDA source code using a series of simple string replacements. Ex., (sed e ’s/cuda/hip/g’)

To convert a CUDA file (foo.cu , for example) to HIP format, enter the following after loading a ROCm module:

Terminal N. Loading ROCm module and using the hipify-perl tool for translating the code from CUDA to HIP
$ module load rocm/<version>
$ hipify-perl foo.cu > new_foo.cpp


You can then compile the HIP ready . cpp file for the ROCm environment using the HIP/ Clang compiler provided in the ROCm installation:

Terminal N. Compiling the code with hipcc
$ hipcc new_foo.cpp

There are several other utility scripts and options available to support the porting of codes:

$ echo $(hipconfig --path)
$ findcode.sh hipcc hipconfig hipconvertinplace.sh hip_embed_pch.sh hipexamine.sh hipify-perl roc-obj-extract finduncodep.sh hipcc_cmake_linker_helper hipconvertinplace-perl.sh hipdemangleatp hipexamine-perl.sh hipify-cmakefile hipvars.pm roc-obj-ls

For example, hipify-perl inplace option saves the HIP version of the code in the same file. The original CUDA code is saved in the backup file .prehip:

Terminal N. Compiling the code with hipcc
$ hipify-perl -inplace <filename>
$ hipexamine-perl.sh <filename/directory>
This script will scan a file/directory to determine which file/files contain CUDA code and how much of that code can be automatically hipified.

$ hipconvertinplace-perl.sh <directory>
It converts all the related files that are located inside the directory

for more information see HIP/hip_programming_guide.md at develop · ROCm-Developer-Tools/HIP · GitHub, HIP/hip_porting_guide.md at develop · ROCm-Developer-Tools/HIP · GitHub, HIPIFY/README.md at master · ROCm-Developer-Tools/HIPIFY · GitHub

  • No labels