Skip to content

Question/Suggestion Parallel tesselation. #481

@phkahler

Description

@phkahler

It looks like converting surfaces to triangles for display can take a lot of time. SolveSpace doesn't make use of multi-core CPUs as far as I can tell. One place we might try this is in the amazingly short function:

void SShell::TriangulateInto(SMesh *sm) {

    SSurface *s;
    for(s = surface.First(); s; s = surface.NextAfter(s)) {
        s->TriangulateInto(this, sm);
    }
}

All shells will have multiple surfaces. I'm not sure that function call can be done in parallel. Maybe we could have a look. If so, we'd just create a vector of triangle lists and use OpenMP parallel for (or equivalent?) to go over handing each surface its own list to populate and then concatenate the triangle lists after.

This hinges on weather that is a pure function. If so, what's the preferred way to do things in parallel? I'm not aware of any place SS does that.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions