Skip to content

Intermittent CUDA error in Ascent clip filter (cudaErrorSymbolNotFound) while image still renders #1683

@aroccaPrediqtt

Description

@aroccaPrediqtt

I am seeing an intermittent failure when using Ascent’s clip pipeline filter with plane clips on a 3D CFD dataset.

Error:

TryExecute encountered an error: parallel_for failed: cudaErrorSymbolNotFound: named symbol not found
Failing functor: viskores::cont::detail::ScanExclusiveFunctor<viskores::worklet::Clip::PointBatchData>
Failing device: Cuda
...
Failing functor: viskores::cont::detail::ScanExclusiveFunctor<viskores::worklet::Clip::CellBatchData>
Failing device: Cuda

Important detail: the image is still rendered even when these errors are printed, and the clipping seems to be executed.

I am passing host data to Ascent, but the filter appears to execute on the CUDA backend. Ascent can use CUDA depending on build/runtime settings.

Tests performed:

  • single clip only: still fails intermittently
  • two clips: same behavior
  • clip -> contour and contour -> clip: same behavior

This looks like a CUDA/backend issue in vtkh_clip / viskores::worklet::Clip rather than a deterministic scene-definition error. I attach an extract of the python wrapper I'm using

    def build_scene(self, plots_config, image_name=None, camera=None, x_clip=None):
        self.actions = conduit.Node()


        add_pipes = self.actions.append()
        add_pipes["action"] = "add_pipelines"

        pipes = add_pipes["pipelines"]
        pl1 = pipes["pl1"]

        if x_clip is not None:
            x1, x2 = map(float, x_clip)

            iso = pl1["f1"]
            iso["type"] = "contour"
            iso["params/iso_values"] = [0.02]
            iso["params/field"] = "q-criterion"

            c1 = pl1["f2"]
            c1["type"] = "clip"
            c1["params/topology"] = "volume"
            c1["params/plane/point/x"] = x1
            c1["params/plane/point/y"] = 0.0
            c1["params/plane/point/z"] = 0.0
            c1["params/plane/normal/x"] = 1.0
            c1["params/plane/normal/y"] = 0.0
            c1["params/plane/normal/z"] = 0.0

            c2 = pl1["f3"]
            c2["type"] = "clip"
            c2["params/topology"] = "volume"
            c2["params/plane/point/x"] = x2
            c2["params/plane/point/y"] = 0.0
            c2["params/plane/point/z"] = 0.0
            c2["params/plane/normal/x"] = 1.0
            c2["params/plane/normal/y"] = 0.0
            c2["params/plane/normal/z"] = 0.0
            c2["params/invert"] = "true"

            # c1 = pl1["f1"]
            # c1["type"] = "clip"
            # c1["params/topology"] = "volume"
            # c1["params/box/min/x"] = x1
            # c1["params/box/min/y"] = -10.0
            # c1["params/box/min/z"] = -10.0
            # c1["params/box/max/x"] = x2
            # c1["params/box/max/y"] =  10.0
            # c1["params/box/max/z"] =  10.0
        else:
            iso = pl1["f1"]
            iso["type"] = "contour"
            iso["params/iso_values"] = [0.02]
            iso["params/field"] = "q-criterion"

Mesh is the same as in:
#1669 (comment)

Has this been seen before?
Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions