I am trying to ease the restriction of having only trivalent polyhedral vertices in R3D and seeing what effect that has on performance of the Portage code. Basically, we almost always give R3D polyhedra with non-trivalent vertices and it has to duplicate the vertices in r3d_init_poly. This seems to take a lot of time.
My thought is that if we make the number of edge-connected vertex neighbors a larger compile time variable (R3D_MAX_NBRS) so that the loops are of static length allowing the compiler to unroll the loops, then we won't be spending as much time in r3d_init_poly
I am able to refactor most of the code but am having the darndest time understanding what the duplicating vertices function is doing in r3d_init_poly. Any hints on how to expand this to rewrite this part?
I am trying to ease the restriction of having only trivalent polyhedral vertices in R3D and seeing what effect that has on performance of the Portage code. Basically, we almost always give R3D polyhedra with non-trivalent vertices and it has to duplicate the vertices in r3d_init_poly. This seems to take a lot of time.
My thought is that if we make the number of edge-connected vertex neighbors a larger compile time variable (R3D_MAX_NBRS) so that the loops are of static length allowing the compiler to unroll the loops, then we won't be spending as much time in r3d_init_poly
I am able to refactor most of the code but am having the darndest time understanding what the duplicating vertices function is doing in r3d_init_poly. Any hints on how to expand this to rewrite this part?