当前位置: 首页 > article >正文

cuda附加到python进程(vscode)

1、问题:Please try running echo 0 | sudo tee /proc/sys/kernel/yama/-ptrace_scope
/proc/sys/kernel/yama/ptrace_scope 设置不当,其控制着 ptrace 操作的允许范围。如果此文件设置为非零值,它将限制用户附加到其他进程的能力。

检查 /proc/sys/kernel/yama/ptrace_scope 设置
使用以下命令检查此文件的值:
cat /proc/sys/kernel/yama/ptrace_scope
如果值为非零,请将其设置为 0 以允许附加到所有进程:
sudo sysctl -w kernel.yama.ptrace_scope=0

2、launch.json配置:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
        //使用这个需要现在命令行启动python
            "name": "CUDA C++: Attach",
            "type": "cuda-gdb",
            "request": "attach",
            "program": "/home/erge/python/venv/splatam/bin/python3.10",
            "processId": "${command:cuda.pickProcess}"
        },
        {
            "name": "Python 调试程序: 当前文件",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": false,
            "args": [
                // "configs/replica/splatam.py"
            ],
            "env": {
                "CUDA_VISIBLE_DEVICES": "0"
            }
            
        },
		//这个可以直接使用
        {
            "name": "(cuda) launch",
            "type": "cuda-gdb",
            "request": "launch",
            "program": "/home/erge/python/venv/splatam/bin/python3.10",
            "args": "${workspaceFolder}/scripts/splatam.py",
            "initCommands": ["cd ${workspaceFolder}",
                            "add-symbol-file diff-gaussian-rasterization-w-depth/build/lib.linux-x86_64-cpython-310/diff_gaussian_rasterization/_C.cpython-310-x86_64-linux-gnu.so"],
            "stopAtEntry": true
        },
    ]
}

3、需要调试的cuda文件路径不允许存在中文,cuda-gdb会把中文转成数字,然后按数字去找文件,导致文件找不到。我安装的是ubuntu中文版,然后桌面路径默认是中文的,导致无法找到对应文件

4、setup.py设置,需要禁止优化,以diff-gaussian-rasterization-w-depth为例:
需要把:

# setup(
#     name="diff_gaussian_rasterization",
#     packages=['diff_gaussian_rasterization'],
#     ext_modules=[
#         CUDAExtension(
#             name="diff_gaussian_rasterization._C",
#             sources=[
#             "cuda_rasterizer/rasterizer_impl.cu",
#             "cuda_rasterizer/forward.cu",
#             "cuda_rasterizer/backward.cu",
#             "rasterize_points.cu",
#             "ext.cpp"],
#             extra_compile_args={"nvcc": ["-I" + os.path.join(os.path.dirname(os.path.abspath(__file__)), "third_party/glm/")]})
#         ],
#     cmdclass={
#         'build_ext': BuildExtension
#     }
# )

改为:

# 获取当前文件所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))

setup(
    name="diff_gaussian_rasterization",
    packages=['diff_gaussian_rasterization'],
    ext_modules=[
        CUDAExtension(
            name="diff_gaussian_rasterization._C",
            sources=[
                "cuda_rasterizer/rasterizer_impl.cu",
                "cuda_rasterizer/forward.cu",
                "cuda_rasterizer/backward.cu",
                "rasterize_points.cu",
                "ext.cpp"
            ],
            extra_compile_args={
                "cxx": ["-g", "-O0"],  # 对于 C++ 文件启用调试模式
                "nvcc": [
                    "-I" + os.path.join(current_dir, "third_party/glm/"),
                    "-g",              # 启用调试信息
                    "-G",              # 启用完整的调试符号(可选)
                    "-O0"              # 禁用优化
                ]
            }
        )
    ],
    cmdclass={
        'build_ext': BuildExtension
    }
)

4、CMakeLists.txt的配置:
setup.py 和 CMakeLists.txt 是两种不同的构建系统配置文件,通常用于不同目的和工具链。在某些情况下,Python 包的构建过程中可能结合使用 setup.py 和 CMake。可以选择通过 setup.py 调用 CMake 来处理这些复杂项目的构建,因此最好把cmake也设置成debug模式:set(CMAKE_BUILD_TYPE “Debug”)
在diff-gaussian-rasterization-w-depth中应该只是使用setup.py编译,可能不需要设置cmake。


http://www.kler.cn/a/441115.html

相关文章:

  • 【逻辑学导论第15版】A. 推理
  • 【开源免费】基于SpringBoot+Vue.JS公交线路查询系统(JAVA毕业设计)
  • 【Rust自学】15.0. 智能指针(序):什么是智能指针及Rust智能指针的特性
  • zyNo.19
  • git中有关old mode 100644、new mode 10075的问题解决小结
  • Spring AI 在微服务中的应用:支持分布式 AI 推理
  • 记录linux websocket握手时间过长问题
  • 基于python绘制数据表(上)
  • Spark优化----Spark 数据倾斜
  • Android Room 数据库使用详解
  • 【使用PyQt5和YOLOv11开发电脑屏幕区域的实时分类GUI】——选择检测区域
  • CTFHUB靶场关于SSRF保姆级攻略
  • 大模型呼出机器人有哪些功能特点?
  • 多维高斯分布
  • docker安装Redis、docker使用Redis、docker离线安装redis、Redis离线安装
  • 代码随想录算法训练营第三十五天|01背包理论基础|卡码网46.携带研究材料|LC416.分割等和子集
  • 深入理解STL list erase
  • ThreadLocal数据结构、内存泄漏分析
  • Maven 打包(system jar 和微服务父子项目)
  • ios系统冷知识
  • SamOutV2 0.18B模型发布
  • 接口测试常用工具 Postman
  • 基础开发工具-编辑器vim
  • PHPstudy中的数据库启动不了
  • Unity3D实现接口类的应用例子
  • STL 剖析