Caffe2 - Python API
A deep learning, cross platform ML framework
Classes | Functions | Variables
pyHIPIFY.hipify_python Namespace Reference

Classes

class  bcolors
 
class  disablefuncmode
 
class  InputError
 
class  Trie
 

Functions

def openf (filename, mode)
 
def matched_files_iter (root_path, includes=('*',), ignores=(), extensions=(), out_of_place_only=False)
 
def preprocess (output_directory, all_files, show_detailed=False, show_progress=True, hip_clang_launch=False)
 
def compute_stats (stats)
 
def add_dim3 (kernel_string, cuda_kernel)
 
def processKernelLaunches (string, stats)
 
def find_closure_group (input_string, start, group)
 
def find_bracket_group (input_string, start)
 
def find_parentheses_group (input_string, start)
 
def disable_asserts (input_string)
 
def replace_math_functions (input_string)
 
def hip_header_magic (input_string)
 
def replace_extern_shared (input_string)
 
def disable_function (input_string, function, replace_style)
 
def get_hip_file_path (filepath)
 
def is_out_of_place (filepath)
 
def is_pytorch_file (filepath)
 
def is_caffe2_gpu_file (filepath)
 
def preprocessor (output_directory, filepath, stats, hip_clang_launch)
 
def file_specific_replacement (filepath, search_string, replace_string, strict=False)
 
def file_add_header (filepath, header)
 
def fix_static_global_kernels (in_txt)
 
def disable_unsupported_function_call (function, input_string, replacement)
 
def disable_module (input_file)
 
def extract_arguments (start, string)
 
def str2bool (v)
 
def hipify (project_directory, show_detailed=False, extensions=(".cu",".cuh",".c",".cc",".cpp",".h",".in",".hpp"), output_directory="", includes=(), json_settings="", out_of_place_only=False, ignores=(), show_progress=True, hip_clang_launch=False)
 

Variables

 PYTORCH_TEMPLATE_MAP
 
 CAFFE2_TEMPLATE_MAP
 
 RE_KERNEL_LAUNCH
 
 RE_ASSERT
 
 RE_SYNCTHREADS
 
 RE_EXTERN_SHARED
 
 CAFFE2_TRIE
 
 CAFFE2_MAP
 
 PYTORCH_TRIE
 
 PYTORCH_MAP
 
 dst
 
 meta_data
 
 RE_CAFFE2_PREPROCESSOR
 
 RE_PYTORCH_PREPROCESSOR
 
 RE_QUOTE_HEADER
 
 RE_ANGLE_HEADER
 
 RE_THC_GENERIC_FILE
 
 RE_CU_SUFFIX
 
 RE_INCLUDE
 

Detailed Description

The Python Hipify script.
##
# Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
#               2017-2018 Advanced Micro Devices, Inc. and
#                         Facebook Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

Function Documentation

def pyHIPIFY.hipify_python.add_dim3 (   kernel_string,
  cuda_kernel 
)
adds dim3() to the second and third arguments in the kernel launch

Definition at line 289 of file hipify_python.py.

def pyHIPIFY.hipify_python.disable_asserts (   input_string)
Disables regular assert statements
e.g. "assert(....)" -> "/*assert(....)*/"

Definition at line 496 of file hipify_python.py.

def pyHIPIFY.hipify_python.disable_function (   input_string,
  function,
  replace_style 
)
Finds and disables a function in a particular file.

If type(function) == List
    function - The signature of the function to disable.
        e.g. ["bool", "overlappingIndices", "(const Tensor& t)"]
        disables function -> "bool overlappingIndices(const Tensor& t)"

If type(function) == String
    function - Disables the function by name only.
        e.g. "overlappingIndices"

replace_style - The style to use when stubbing functions.

Definition at line 570 of file hipify_python.py.

def pyHIPIFY.hipify_python.disable_module (   input_file)
Disable a module entirely except for header includes.

Definition at line 1013 of file hipify_python.py.

def pyHIPIFY.hipify_python.disable_unsupported_function_call (   function,
  input_string,
  replacement 
)
Disables calls to an unsupported HIP function

Definition at line 973 of file hipify_python.py.

def pyHIPIFY.hipify_python.extract_arguments (   start,
  string 
)
Return the list of arguments in the upcoming function parameter closure.
    Example:
    string (input): '(blocks, threads, 0, THCState_getCurrentStream(state))'
    arguments (output):
        '[{'start': 1, 'end': 7},
        {'start': 8, 'end': 16},
        {'start': 17, 'end': 19},
        {'start': 20, 'end': 53}]'

Definition at line 1027 of file hipify_python.py.

def pyHIPIFY.hipify_python.find_bracket_group (   input_string,
  start 
)
Finds the first balanced parantheses.

Definition at line 483 of file hipify_python.py.

def pyHIPIFY.hipify_python.find_closure_group (   input_string,
  start,
  group 
)
Generalization for finding a balancing closure group

     if group = ["(", ")"], then finds the first balanced parantheses.
     if group = ["{", "}"], then finds the first balanced bracket.

Given an input string, a starting position in the input string, and the group type,
find_closure_group returns the positions of group[0] and group[1] as a tuple.

Example:
    find_closure_group("(hi)", 0, ["(", ")"])

Returns:
    0, 3

Definition at line 443 of file hipify_python.py.

def pyHIPIFY.hipify_python.find_parentheses_group (   input_string,
  start 
)
Finds the first balanced bracket.

Definition at line 488 of file hipify_python.py.

def pyHIPIFY.hipify_python.fix_static_global_kernels (   in_txt)
Static global kernels in HIP results in a compilation error.

Definition at line 967 of file hipify_python.py.

def pyHIPIFY.hipify_python.get_hip_file_path (   filepath)
Returns the new name of the hipified file

Definition at line 709 of file hipify_python.py.

def pyHIPIFY.hipify_python.hip_header_magic (   input_string)
If the file makes kernel builtin calls and does not include the cuda_runtime.h header,
then automatically add an #include to match the "magic" includes provided by NVCC.
TODO:
    Update logic to ignore cases where the cuda_runtime.h is included by another file.

Definition at line 524 of file hipify_python.py.

def pyHIPIFY.hipify_python.preprocess (   output_directory,
  all_files,
  show_detailed = False,
  show_progress = True,
  hip_clang_launch = False 
)
Call preprocessor on selected files.

Arguments)
    show_detailed - Show a detailed summary of the transpilation process.

Definition at line 250 of file hipify_python.py.

def pyHIPIFY.hipify_python.preprocessor (   output_directory,
  filepath,
  stats,
  hip_clang_launch 
)
Executes the CUDA -> HIP conversion on the specified file. 

Definition at line 884 of file hipify_python.py.

def pyHIPIFY.hipify_python.processKernelLaunches (   string,
  stats 
)
Replace the CUDA style Kernel launches with the HIP style kernel launches.

Definition at line 327 of file hipify_python.py.

def pyHIPIFY.hipify_python.replace_extern_shared (   input_string)
Match extern __shared__ type foo[]; syntax and use HIP_DYNAMIC_SHARED() MACRO instead.
   https://github.com/ROCm-Developer-Tools/HIP/blob/master/docs/markdown/hip_kernel_language.md#__shared__
Example:
    "extern __shared__ char smemChar[];" => "HIP_DYNAMIC_SHARED( char, smemChar)"
    "extern __shared__ unsigned char smem[];" => "HIP_DYNAMIC_SHARED( unsigned char, my_smem)"

Definition at line 555 of file hipify_python.py.

def pyHIPIFY.hipify_python.replace_math_functions (   input_string)
FIXME: Temporarily replace std:: invocations of math functions with non-std:: versions to prevent linker errors
    NOTE: This can lead to correctness issues when running tests, since the correct version of the math function (exp/expf) might not get called.
    Plan is to remove this function once HIP supports std:: math function calls inside device code

Definition at line 509 of file hipify_python.py.

def pyHIPIFY.hipify_python.str2bool (   v)
ArgumentParser doesn't support type=bool. Thus, this helper method will convert
from possible string types to True / False.

Definition at line 1073 of file hipify_python.py.