Grasshopper runs slowly and doesn’t use multiple cores

Hi everyone,

I’m facing a performance issue in Grasshopper:
my definitions take a very long time to compute, even though my system shows plenty of unused CPU and RAM.

Symptoms:

  • CPU usage stays around 5–10%

  • RAM usage about 30%

  • Grasshopper solver is still extremely slow

From what I’ve learned, most Rhino and Grasshopper geometry operations are single-threaded, meaning only one CPU core is being used even on a modern multi-core system.


:red_question_mark: I’d like to know:

  1. Is there any built-in or recommended way to enable or leverage multiple cores / threads in Grasshopper for heavy geometry tasks (like Brep intersections, trims, morphs, etc.)?

  2. Are there specific components, workflows, or plugins that can take advantage of multiple cores (for example, Anemone with “Parallel” enabled, Python/C# multithreading, or Rhino Compute + Hops)?

  3. For Brep-heavy definitions, are there best practices or optimization strategies to improve performance when multi-core usage isn’t available?

  4. And finally — is there any official update or roadmap for Rhino 9 that includes true multi-core / multi-thread geometry processing in the Rhino or Grasshopper computation engine?


:laptop: My System Setup

Component Specification
Operating System Windows 11 Pro 64-bit (10.0 Build 26100)
Processor Intel Core i7-14700F (28 CPUs, ~2.1 GHz)
Motherboard Gigabyte Z790 UD AX
Memory (RAM) 32 GB DDR5
Graphics Card NVIDIA GeForce RTX 3060 (12 GB VRAM)
Display 1920×1080 @ 60 Hz (HDR supported)
DirectX Version DirectX 12
Driver Version 32.0.15.6094 (August 2024, WHQL Certified)

Hi Anil -

Here is a list of multi-threaded components in Grasshopper 1: Rhino - Multi-threaded components

The Hops component can run parallel definitions locally or on a larger set of servers.
-wim

Can you post a picture of the geometry you’re trying to process - you say Brep-heavy, but it would be good to see specifics and what you’re trying to achieve (your build looks like it should be able to handle quite a bit)

Sure sir,

Uploaded a small video, (that’s 80cm (800 mm height)) vase.

And used 3D voronoi for that voronoi pattern on surface and morphed points on surface and pulled points on voronoi surface and generated straight line. Then pipe and rectangular pipe also. ,

I’ll attach.gh file also if , may you please take a look?

So each of the thousands of little boxes is a polysurface?

Yes, all those closed polysurface.

Have you tried building the little boxes as meshes?

Not yet.

Interesting - I agree on trying them as meshes - but in terms of workflow, when you’re writing the script, it would work the same if you had 10x or even 20x fewer items, this would dramatically improve performance while you’re refining the logic and once you’re done, you increase the number back to what you need.

For demanding scripts you can sometimes use a timer/anemone loop to cycle through the objects - so instead of asking for an intersection between 1 and 50k other objects, you take small batches and process them to stop your computer seizing up for 35 minutes for one operation

feel free to post the script though, we can see if there are more efficient ways to do what you’re doing

1 Like

I will take look to check my logic and , I hope by using some other method will reduce computing time, and your advice to use loop is very effective. (I have to study it properly, to find out the nodes where I can apply anemone)

And I’ll upload script today.

And thanks a lot for your precious time sir.

I’ll combine my scripts file and upload.