Skip to content

[Bug]: Use gs.options.renderers.BatchRenderer failed #1591

@YifeiNie

Description

@YifeiNie

Bug Description

Meet error when run

python examples/rigid/single_franka_batch_render.py

[ERROR]
Error at /project/src/render/vk/backend.cpp:137 in static LoaderLib *madrona::render::vk::LoaderLib::load()
Refetching vkGetInstanceProcAddr after dlsym failed

I'm sure renderer=gs.options.renderers.BatchRenderer leads to this problems, because I tested in my own env:

self.scene = gs.Scene(
    sim_options = gs.options.SimOptions(dt = self.dt, substeps = 1),
    viewer_options = gs.options.ViewerOptions(
        max_FPS = self.env_config.get("max_vis_FPS", 15),
        camera_pos = (-3.0, 0.0, 3.0),
        camera_lookat = (0.0, 0.0, 1.0),
        camera_fov = 40,
    ),
    vis_options = gs.options.VisOptions(
        show_world_frame = False,
        rendered_envs_idx = list(range(self.rendered_env_num)),
        env_separate_rigid = True,
        shadow = False,
    ),
    rigid_options = gs.options.RigidOptions(
        dt = self.dt,
        constraint_solver = gs.constraint_solver.Newton,
        enable_collision = True,
        enable_joint_limit = True,
    ),
    renderer=gs.options.renderers.BatchRenderer(
        use_rasterizer = True,
    ),
    show_viewer = self.env_config["show_viewer"],
)

If I comment renderer=gs.options.renderers.BatchRenderer(use_rasterizer = True,) it's ok or has the same error below.
May something in gs-madrona? I guess....
In /project/src/render/vk/backend.cpp around line 137, the code is:

#if defined(MADRONA_LINUX) || defined(MADRONA_MACOS)
    auto get_inst_addr = (PFN_vkGetInstanceProcAddr)dlsym(lib,
        "vkGetInstanceProcAddr");
    if (get_inst_addr == nullptr) {
        FATAL("Couldn't find vkGetInstanceProcAddr");
    }
    
    get_inst_addr = (PFN_vkGetInstanceProcAddr)get_inst_addr(
        VK_NULL_HANDLE, "vkGetInstanceProcAddr");
    if (get_inst_addr == VK_NULL_HANDLE) {
        FATAL("Refetching vkGetInstanceProcAddr after dlsym failed");
    }

    entry_fn = (void (*)())get_inst_addr;
#endif

'get_inst_addr' tries get itself by 'PFN_vkGetInstanceProcAddr', may this caused some problems?

Masters please help me

Steps to Reproduce

Run

python examples/rigid/single_franka_batch_render.py

with

  • OS: [Ubuntu 20.04]
  • GPU[RTX 3050]
  • GPU-driver version (Driver Version: 570.133.07)
  • CUDA / CUDA-toolkit version (12.4)
  • torch.version.cuda (11.8)

Expected Behavior

Run python examples/rigid/single_franka_batch_render.py without error

Screenshots/Videos

No response

Relevant log output

Python 3.10.18
CUDA Toolkit 12.4
Pytorch 11.8

Error at /project/src/render/vk/backend.cpp:137 in static LoaderLib *madrona::render::vk::LoaderLib::load()
Refetching vkGetInstanceProcAddr after dlsym failed

Environment

  • OS: [Ubuntu 20.04]
  • GPU[RTX 3050]
  • GPU-driver version (Driver Version: 570.133.07)
  • CUDA / CUDA-toolkit version (12.4)
  • torch.version.cuda (11.8)

Release version or Commit ID

aa797a9

SOLUTION

DONOT use pip to install gs-madrona, use source code, and comment codes as follows: in gs-madrona/src/render/vk/backend.cpp, recompile and reinstall

get_inst_addr = (PFN_vkGetInstanceProcAddr)get_inst_addr(
    VK_NULL_HANDLE, "vkGetInstanceProcAddr");
if (get_inst_addr == VK_NULL_HANDLE) {
    FATAL("Refetching vkGetInstanceProcAddr after dlsym failed");
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions