File size: 3,305 Bytes
5aa4483
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import os
import subprocess

def install_cuda_toolkit():
    try:
        print("正在安装 CUDA...")
        CUDA_TOOLKIT_URL = "https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run"
        CUDA_TOOLKIT_FILE = "/tmp/%s" % os.path.basename(CUDA_TOOLKIT_URL)

        # 下载 CUDA 安装包并显示进度
        print(f"下载 CUDA 安装包: {CUDA_TOOLKIT_URL}")
        subprocess.run(["wget", "--progress=bar:force", CUDA_TOOLKIT_URL, "-O", CUDA_TOOLKIT_FILE], check=True)

        # 给安装包添加执行权限并显示输出
        print(f"为安装包添加执行权限: {CUDA_TOOLKIT_FILE}")
        subprocess.run(["chmod", "+x", CUDA_TOOLKIT_FILE], check=True)

        # 安装 CUDA 12.1,并显示安装过程的输出
        print("正在安装 CUDA...")
        subprocess.run([CUDA_TOOLKIT_FILE, "--silent", "--toolkit"], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        # 设置环境变量
        os.environ["CUDA_HOME"] = "/usr/local/cuda"
        os.environ["PATH"] = "%s/bin:%s" % (os.environ["CUDA_HOME"], os.environ["PATH"])
        os.environ["LD_LIBRARY_PATH"] = "%s/lib:%s" % (
            os.environ["CUDA_HOME"],
            "" if "LD_LIBRARY_PATH" not in os.environ else os.environ["LD_LIBRARY_PATH"],
        )
        
        # 设置 PyTorch 使用的 CUDA 架构
        os.environ["TORCH_CUDA_ARCH_LIST"] = "8.0;8.6;9.0"  # 可以根据需要调整
        print("CUDA 12.1 安装并配置完成!")
    
    except subprocess.CalledProcessError as e:
        print(f"安装 CUDA 失败: {e}")
        print(f"错误输出: {e.stderr}")

def install_custom_rasterizer():
    try:
        print("正在编译并安装 custom_rasterizer...")
        # 假设 custom_rasterizer 代码目录在 /path/to/your/project/texgen/custom_rasterizer
        custom_rasterizer_dir = "/home/user/app/hy3dgen/texgen/custom_rasterizer"  # 替换为实际路径
        
        # 进入 custom_rasterizer 目录
        os.chdir(custom_rasterizer_dir)
        
        # 编译并生成 .whl 文件,并显示输出
        print("正在编译 custom_rasterizer...")
        subprocess.run(["python3", "setup.py", "bdist_wheel"], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        # 获取生成的 .whl 文件路径
        whl_file_path = os.path.join(custom_rasterizer_dir, "dist", "custom_rasterizer-<version>-cp310-cp310-linux_x86_64.whl")
        
        print(f"custom_rasterizer 的 .whl 文件已生成:{whl_file_path}")
        return whl_file_path
    
    except subprocess.CalledProcessError as e:
        print(f"安装 custom_rasterizer 失败: {e}")
        print(f"错误输出: {e.stderr}")

# 主程序
if __name__ == "__main__":
    try:
        print("正在安装 CUDA")
        # 安装 CUDA 12.1
        install_cuda_toolkit()
        
        print("正在安装 custom_rasterizer")
        # 编译并安装 custom_rasterizer
        whl_file_path = install_custom_rasterizer()

        if whl_file_path:
            print(f"安装完成,路径是: {whl_file_path}")
        else:
            print("安装 custom_rasterizer 失败,未生成 .whl 文件")
    
    except Exception as e:
        print(f"程序执行过程中发生错误: {str(e)}")