Spaces:
Running
on
Zero
Running
on
Zero
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)}") |