Multithreading and CAD
In last week's upFront.eZine, Ralph Grabowski, in an article talking about UGS Solid Edge, said:
"UGS sees no advantage to multi-core CPUs (which Intel and AMD are pushing), because most software, including CAD, does not multi-thread easily. ("Multi-thread" means parts of the software can be handed off to the second CPU and executed independently.) We tend to work consecutively with CAD software, not concurrently."
This week some of his readers took exception with UGS's position (as reported by Ralph), saying:
"CAD apps should easily benefit from multi-core CPUs and multi-CPU computers: sorting, stuffing the OpenGL pipeline, lots of numerical things like FEA, even handling user interactions can easily be divvied up amongst CPUs."
and
"As far as I know, multi-threading has very little to do with the user's consecutive inputs, but with the knowledge that a lot of intense image/vector processing can be accomplished in parallel to great advantage."
Here's a situation where nuance is important. UGS has been shipping multi-threaded software for at least 7 or 8 years, and probably longer. Parasolid and Nastran NX are both SMP (symmetric multi-processing) capable. UGS isn't saying that they can't do it, or that they don't do it.
I suspect that what UGS was trying to convey is that, in the realm of CAD (ignoring the geometric modeling kernel), there are not that many things that really benefit from multi-threading.
Take a look at the examples given by Ralph's readers:
- It's not my experience that CAD programs actually do much sorting, but, in any event, I believe the process is memory bandwidth limited, not core limited.
- "Stuffing the OpenGL pipeline" doesn't seem to offer many opportunities for multithreading, though tessellation of surfaces could certainly be parallelized (it's most commonly done by GLU -- the OpenGL Utility Library -- however, there has been some work on implementing tessellation on the GPU.) The thing is, this is a downstream process from CAD. It's not part of CAD itself.
- User interactions typically involving clicking on something. The most significant user interaction, object selection, might benefit from multi-threading (with enough work) -- however, I've found a greater than 100:1 difference in selection performance when testing a number of CAD products (with the fastest being less than 1/2 second to window select 1 million objects.) It would seem to be a waste to use multi-threading to fix a problem caused by poor program design. Other than this, user interactions typically happen so fast that they wouldn't gain any meaningful performance from multithreading. How fast do you need dialogs to pop up?
- Image processing can benefit from multi-threading, as images can be partitioned. Yet, in the realm of CAD, how much image processing is there?
- Vector processing -- at least for typical CAD software -- is not a bottleneck. Quaternions and other forms of math used for affine transformations in CAD programs are pretty fast. Granted, if you start looking at surface and solid modeling, it can be a different beast -- but then, you're looking at the geometric modeling kernel, not at the CAD program itself.
Looking at mainstream MCAD programs such as UGS Solid Edge, I don't see any gross performance problems. Yes, Solid Edge will bog down with really large models (though it bogs down less than some of its competitors.) The cure for this may include some multithreading (such as that which is already in Parasolid), and some graphics optimization -- but the biggest benefit is likely to come from retuning the program to take advantage of the very large memory capacity available with some 64-bit computers.


Reader Comments (6)
this multithreading discussion is about "small details", that improve the CAD designer less than 10%. Any program benefits a little, as screen driver and OS (Windows) use 2nd CPU.
64bit computing is bringing bigger address space, enabling to load "big" models. This brings more (CPU) problems, as processor needs to re-calculate even more data.
No much help also with "complex" models where long calculations take place.
There is a simple test, just open Task Manager and check how resources are used. If CPU is used 100% (50+% on Pentium 4) and memory used is less than 2GB, there is not much to do. 64bit computer gives 3-5% impovement, mainly due to faster memory.
Serious multithreading is "parallel processing" on multiprocessor computer. There are some FEM (Finite element analysis), CFD (Computational Fluid Dynamics), Rendering applications that efficiently use parallel processing.
Virtually all CAD applications (from AutoCAD to 3D modellers) use "single thread" kernels. Till somebody finds a way to make CAD kernel "parallel", there will be no serious improvement
in speed.
OK, we are already working in "manual parallel processing", several CAD operators working on different parts of the same project. This is enough to some extent, but some applications like "100.000 part assemblies" or "large GIS maps" that need to be processed simultaneously will have to wait for a couple of years.
As allways, hardware is here (multiprocessor computers), waiting for new (parallel) software!
Jure Spiler
UGS's efforts dont seem to be in CAD anymore especially with some of their biggest customers switching off UG, like Nokia and Ford
Evan Responds:
That's funny, since Parasolid (UGS's kernel) is multithreaded, and supports multi-threading. So far as customers switching off UG -- I don't know that it's anything more than "win a few, lose a few." But if you've got some real solid information, I'd be happy to hear it.
As to the win a few lose a few, I think companies are seeing the limitations of an old Kernal like parasolid. Nokia turned down a free upgrade to UGNX and spent millions to go with another more modern kernal. I just dont see too many significant UG wins in the Cad market space.
Much to read and learn here, I'm sure I will enjoy !
site.
:) reflects the couple's low-key approach to their royal connections.
Bye.