"docs/features/reasoning_outputs.md" did not exist on "bc8ed3c4bad05f5b1d37f34d5a8d324c23e84785"
hipify.py 2.2 KB
Newer Older
bnellnm's avatar
bnellnm committed
1
#!/usr/bin/env python3
2
# SPDX-License-Identifier: Apache-2.0
3
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
bnellnm's avatar
bnellnm committed
4
5
6
7
8
9
10
11
12
13
14

#
# A command line tool for running pytorch's hipify preprocessor on CUDA
# source files.
#
# See https://github.com/ROCm/hipify_torch
# and <torch install dir>/utils/hipify/hipify_python.py
#

import argparse
import os
15
import shutil
bnellnm's avatar
bnellnm committed
16
17
18

from torch.utils.hipify.hipify_python import hipify

19
if __name__ == "__main__":
bnellnm's avatar
bnellnm committed
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    parser = argparse.ArgumentParser()

    # Project directory where all the source + include files live.
    parser.add_argument(
        "-p",
        "--project_dir",
        help="The project directory.",
    )

    # Directory where hipified files are written.
    parser.add_argument(
        "-o",
        "--output_dir",
        help="The output directory.",
    )

    # Source files to convert.
37
38
39
    parser.add_argument(
        "sources", help="Source files to hipify.", nargs="*", default=[]
    )
bnellnm's avatar
bnellnm committed
40
41
42
43

    args = parser.parse_args()

    # Limit include scope to project_dir only
44
    includes = [os.path.join(args.project_dir, "*")]
bnellnm's avatar
bnellnm committed
45
46
47
48
49
50
51
52

    # Get absolute path for all source files.
    extra_files = [os.path.abspath(s) for s in args.sources]

    # Copy sources from project directory to output directory.
    # The directory might already exist to hold object files so we ignore that.
    shutil.copytree(args.project_dir, args.output_dir, dirs_exist_ok=True)

53
54
55
56
57
58
59
60
61
62
    hipify_result = hipify(
        project_directory=args.project_dir,
        output_directory=args.output_dir,
        header_include_dirs=[],
        includes=includes,
        extra_files=extra_files,
        show_detailed=True,
        is_pytorch_extension=True,
        hipify_extra_files_only=True,
    )
bnellnm's avatar
bnellnm committed
63
64
65
66

    hipified_sources = []
    for source in args.sources:
        s_abs = os.path.abspath(source)
67
68
69
70
71
72
73
74
        hipified_s_abs = (
            hipify_result[s_abs].hipified_path
            if (
                s_abs in hipify_result
                and hipify_result[s_abs].hipified_path is not None
            )
            else s_abs
        )
bnellnm's avatar
bnellnm committed
75
76
        hipified_sources.append(hipified_s_abs)

77
    assert len(hipified_sources) == len(args.sources)
bnellnm's avatar
bnellnm committed
78
79
80

    # Print hipified source files.
    print("\n".join(hipified_sources))