GPUs have become phenomenally powerful processors, great for moving huge 3D models around the viewport. But raw graphics horsepower is not enough to deliver a smooth, fully interactive 3D experience; the software also has to be tuned to take full advantage of the graphics hardware.
Owning a Ferrari is great, but not if you only get to drive it in the 30mph zone.
SolidWorks, like most 3D CAD applications, is notoriously CPU-limited. By this, we mean the CPU becomes the bottleneck before the GPU can get anywhere near full speed.
Sometimes, the GPU never even gets out of first gear. Indeed, with certain SolidWorks models, it’s not uncommon to use around 5% of the GPU’s resources, even when your giant assembly is limping around on screen at a few frames per second (FPS).
In such CPU-limited workflows, it doesn’t matter how much GPU hardware you throw at your CAD models; 3D performance will not increase, or will only increase a tiny bit.
The only way to really boost frame rates in such cases is to increase the frequency (GHz) of the CPU. And with frequencies reaching a plateau in recent years, this is simply not a viable solution most of the time.
3D performance hasn’t been so much of an issue for those who work with small to medium assemblies, as most GPUs are able to deliver a good viewport experience.
But when models reach a certain size and complexity, the viewport can become choppy, which is frustrating as you struggle to move your model into position.
What should be a simple, instinctive flick of the mouse, actually becomes a battle against over-compensation, much like a novice captain steering an ocean liner. The GPU simply can’t respond quickly enough to the movement of the mouse, so the model jumps about on screen.
To circumvent this issue and improve viewport performance, SolidWorks users have historically needed to compromise on visual quality.
When models reach a certain size, Large Assembly Mode automatically kicks in, disabling RealView and setting Level of Detail (LoD) to fast.
It means that, as soon as you start to move the assembly in the viewport, certain parts are displayed as simple blocks, only returning to their fully rendered state seconds after the model stops moving.
This has been the established workaround for years. And while it can increase frame rates to an acceptable level, it does significantly impact the user experience, particularly when trying to impress in a slick presentation.
A couple of years ago, Dassault Systèmes (DS) SolidWorks decided to address this and develop a brand new graphics engine for SolidWorks.
Based on OpenGL 4.5, it uses a much more modern implementation of the popular graphics API than SolidWorks currently does. It is tuned to take full advantage of modern GPUs and allows models to be manipulated smoothly in the viewport without having to compromise on visual quality by reducing the LoD.
“With the older rendering engine, we were largely CPU-bound,” says Justin Kidder, director of graphics at DS SolidWorks. “With the new render engine we’ve really moved to a place where we are GPU-bound, which is exactly where we want to be.”
By reducing the reliance on the CPU, DS SolidWorks has been able to increase frame rates dramatically and it is aiming high. As Kidder explains, 60 FPS feels “silky smooth” but anything less than 30 FPS starts to feel a little jumpy. “So our goal was to get performance up to 30-60 FPS for all assemblies,” he says.
At DEVELOP3D we’re a little less demanding, and find anything above 20-24 FPS to be adequate for 3D modelling. Even lower frames can be acceptable, but going below 10 FPS is undesirable.
It’s certainly worth asking what’s good enough for your needs.
Importantly, when you go above 60 FPS, it’s almost impossible to notice any difference on a 2D display. You’ll also need a specialist 120Hz or 240Hz monitor, which are mainly designed for hardcore gamers.
The new graphics engine
The new OpenGL 4.5 graphics engine is currently a beta feature of SolidWorks 2019, so is not enabled by default when SolidWorks first launches.
“We wanted to give our users the opportunity to try out the new render engine, get a feel for its performance, give us feedback on pros and cons of what we’ve been doing, while we continue to wrap up developing the functionality,” says Kidder.
The new engine is enabled through SolidWorks options – simply go to Tools > Options > Performance and tick the checkbox at the bottom of the page.
SolidWorks will then need to be restarted. As it’s a beta feature, users are advised not to use it on live projects.
In order to use the new graphics engine, your workstation’s GPU must support OpenGL 4.5, which pretty much the case with all professional GPUs released since 2012.
This includes Nvidia Quadro GPUs based on the Kepler, Maxwell, Pascal or Turing architectures and all AMD FirePro W Series and AMD Radeon Pro WX Series GPUs.
Those with older GPUs will have to rely on the current graphics engine, which will continue to be developed even after the new engine comes out of beta.
When it eventualy becomes an integral part of SolidWorks – which could be with a SolidWorks 2019 service pack or in SolidWorks 2020 – the software will automatically identify your graphics hardware and enable the most suitable engine.
Historically, SolidWorks has not needed that much GPU memory. Most models sit comfortably within 2GB. Even the biggest assemblies only use a touch more when viewed at 4K resolution. But in order to deliver new levels of performance and open up the CPU bottleneck, GPU memory needed to play a much more important role.
The new graphics engine is built around OpenGL’s ‘retained rendering’ mode, where more data is stored on the GPU than in the previous engine’s ‘immediate’ mode.
For many years, SolidWorks has used an OpenGL feature called VBOs (Vertex Buffer Objects), where model geometry is stored on the GPU to increase performance.
The new engine now takes this one step further, as Kidder explains: “We also have the ability to store things like colours and textures and component transforms and lighting information.”
The net result of buffering more information on the GPU is less time waiting for the CPU to feed in data, resulting in much better performance. This is one of the major reasons why the current graphics engine is CPU-limited, as a significant amount of data still needs to be fed from the CPU on demand.
To take full advantage of retained rendering, DS SolidWorks has developed new GPU-centric versions of key algorithms.
These include Ambient Occlusion, for more realistic shadows; Anti-Aliasing, for smoother edges; Order Independent Transparency (OIT), for faster and more accurate transparent objects; and Occlusion Culling, which doesn’t render objects that are obscured by others.
By using more GPU memory, users may find that older GPUs with 2GB or less may struggle with larger models. SolidWorks 2019 will still run, but performance could be impacted as the graphics driver will need to continually move data between the workstation’s system memory and GPU memory.
Our tests show that 4GB should be adequate for even the largest models, but this doesn’t take into account other applications being used at the same time, particularly a GPU renderer like SolidWorks Visualize or AMD’s Radeon ProRender for SolidWorks. If you do intend to use the GPU for ray trace rendering, 8GB should be considered an absolute minimum.
The primary goal of the new graphics engine is to improve performance, but moving to OpenGL 4.5 also gives DS SolidWorks an opportunity to dramatically improve the visual quality in the viewport.
Viewing a model in the new graphics engine with RealView, Shadows and Ambient Occlusion enabled looks pretty much the same as it has done for years. But you only need to look at a modern design viz focused application like Autodesk VRED Professional (OpenGL 4.3) to see what’s possible.
Rendering a model in the viewport, instantly, with much more realistic lighting and materials, can really bring a product to life and reduce the need for ray trace rendering.
Kidder acknowledges the potential, but is not able to share any details of where things might be heading.
“We’re currently in the process of working with our customers to identify different areas for improvement and understand where they’d like to see improvement,” he says.
To compare the performance of the new graphics engine against the old graphics engine, we tested with a variety of real-world SolidWorks models and a wide range of professional GPUs, old and new.
These included two current generation Nvidia Quadro ‘Pascal’ GPUs – the midrange Quadro P2000 (5GB) and high-end P4000 (8GB) – and four current generation AMD Radeon Pro GPUs – the entry-level Radeon Pro WX 4100 (4GB), mid-range WX 5100 (8GB), mid-range WX 7100 (8GB) and high-end WX 8200 (8GB).
To see the performance one might expect to get out of older hardware, we also included the Nvidia Quadro ‘Maxwell’ M2000 (4GB), the predecessor to the Quadro P2000, and the AMD FirePro W2100 (2GB), a sub entry-level CAD-focused GPU released in 2014, which was the only GPU we tested that had less than 4GB of memory.
Our test machine was a typical mid-range workstation with the following specifications:
• Intel Xeon W-2125 (4.0GHz, 4.5GHz Turbo) (4 Cores) CPU
• 32GB 2666MHz DDR4 ECC memory
• 512GB M.2 NVMe SSD
• Windows 10 Pro for Workstation
For AMD GPUs, we used the 18.Q4 driver.
For Nvidia GPUs, we used the 416.16 driver. Wait for vertical refresh was set to ‘always off’.
For all tests, we turned off Level of Detail (LoD) in SolidWorks (Tools > Options > Performance), so the model would be viewed in full detail at all times.
Finally, it is important to note that all of our testing was done on beta software, so one always expects a few issues and the results should not be taken as gospel. With AMD Radeon Pro GPUs, for example, when models were loaded with RealView already enabled, they did not display correctly. If RealView was enabled after loading, everything was fine.
We used a variety of SolidWorks models, ranging from the simple to the downright ridiculous in terms of size and complexity.
The details of each model, including the number of components (as reported by the SolidWorks Performance Evaluation tool), the number of triangles (as reported when exporting to STL) and how much GPU memory each consumes (as reported by graphics card utility GPU-Z), can be seen in the charts below.
To measure frames per second – the rate at which the GPU can render the model as it is moves around in the viewport – we used Spin500, a simple SolidWorks macro that was developed by DS SolidWorks some time ago to measure 3D performance.
Spin500 is not a perfect test, as it renders a frame statically 500 times, instead of dynamically rotating the model, as one would do when pushing down the middle mouse button. However, it should still give a good indication of relative performance of the two graphics engines and of the various GPUs.
We tested each model using two different display modes – shaded with edges (by far the most popular way to view 3D CAD models) and with RealView, Shadows and Ambient Occlusion (AO) enabled, which adds realistic lighting and materials. We also tested at FHD (1,920 x 1,080) and 4K (3,840 x 2,160) to give an idea of how resolution impacts performance, which in some cases can be considerable.
While many CAD users still rely on FHD displays, 4K displays are becoming more popular and have become standard issue in some mobile workstations. Prices have also dropped dramatically in the past year.
Starting with the relatively simple Seadoo model, there appeared to be very little benefit from the new graphics engine. Surprisingly, at 4K resolution with RealView enabled, frame rates were actually slower. However, all GPUs delivered adequate performance.
With the more demanding Black Owl PC model, which can be downloaded as part of the SPECapc for SolidWorks 2017 benchmark, we started to see some big benefits of the new graphics engine.
This real-world engineering dataset doesn’t just up the ante in terms of number of components and triangles, but the aluminium chassis features hundreds of punched holes which puts an even bigger demand on the GPU.
With the old graphics engine, 3D performance was pretty flat across all GPUs, since the Black Owl PC model is relatively CPU-limited.
However, the new graphics engine delivered much faster frame rates and demonstrated good scaling across the range of GPUs.
To put this in perspective, GPU-Z showed that resource utilisation on the Quadro M2000 went from 12% with the old graphics engine to 99% with the new engine, when testing at FHD resolution with RealView switched on.
When fully loaded at 4K resolution, and with RealView, shadows and Ambient Occlusion (AO) enabled, only the Quadro P4000 and Radeon Pro WX 8200 were able to deliver what Kidder considers to be a “silky smooth” 60 FPS, but in reality, most of the graphics cards gave a very fluid viewport experience. The exception was the FirePro W2100, where frame rates actually went down when using the new engine at 4K.
In this case, it appears the W2100 simply doesn’t have the raw power to go it alone when released from the shackles of the CPU.
Our production machinery model was very CPU-limited when using the old graphics engine, showing virtually no difference between all of the GPUs. The new graphics engine appears to reduce this bottleneck significantly, making better use of the higher-end GPUs.
GPU-Z showed that resource utilisation with a Quadro P4000 went from 5% with the old graphics engine to 39% with the new engine, when testing at 4K resolution with RealView enabled.
All of the Radeon Pro and Quadro GPUs delivered good performance in shaded with edges mode but the Radeon Pro WX 4100 and WX 5100 dropped below the minimum ideal 20FPS at 4K resolution with Real View enabled. The FirePro W2100 was notably off the pace, but the 15FPS it delivered at FHD resolution in shaded with edges is adequate.
With 8,000+ components and 59 million triangles, the MaunaKea Spectroscopic Explorer telescope is the largest SolidWorks assembly we have ever seen. Because of its sheer size, the model still appears to be CPU-limited when using the new graphics engine and there is very little scaling between GPUs when displayed in shaded with edges mode.
It’s only when RealView is enabled and more demands are put on the GPU that the higher-end cards start to make a difference.
In saying that, there is virtually nothing between any of the three Quadro GPUs. Putting GPU scaling to one side, there is a noticeable performance benefit from the new graphics engine. From an unworkable 1 to 3 FPS, which makes it virtually impossible to position the model quickly and accurately, we were able to get between 15 and 19 FPS and retain the full image quality.
This isn’t perfect, but it does mean you can get an adequate viewport experience without having to fall back on LoD trade-offs, where parts of the model are dramatically simplified during dynamic view operations, such as zoom, pan and rotate.
The FirePro W2100 is woefully underpowered for a model of this size, not least because the massive assembly would happily fill 3.5GB of GPU memory given the chance and the W2100 only has 2GB. The graphics driver is left to do its best, swapping between system memory and GPU memory.
If you’ve suffered from 3D performance issues in SolidWorks in the past, or too much of your model goes blocky when moving it on screen, you may have thought this would be remedied with a more powerful GPU. And why wouldn’t you? It’s a graphics issue, after all.
The fact is, for many years, SolidWorks has been bottlenecked by the CPU, particularly when viewing very complex models. And those who have invested in faster GPUs to boost frame rates may have been sorely disappointed.
This changes with the new OpenGL 4.5 graphics engine. DS SolidWorks appears to have done an excellent job of reducing the CPU bottleneck and delivering considerably better 3D performance.
This is evident not only in the significant increase in frames rates and improved scaling across families of GPUs, but also when monitoring GPU utilisation.
With the old engine, GPU utilisation was very low and, with many of our test models, hovered around 10%, a complete waste of resources. With the new engine, utilisation rises significantly, and the GPU is finally able to get out of first gear.
With some of our test models, there is a clear advantage to the higher-end GPUs like the Quadro P4000 and Radeon Pro WX 8200, particularly when viewing models with RealView, Shadows and Ambient Occlusion at 4K resolution.
However, by and large, our tests show that most mid-range GPUs, even some of the older ones, will do a great job for most workflows. In our experience, anything over 20 FPS is acceptable.
Big numbers on charts may look impressive, but it all boils down to your experience in the viewport and the level of performance that works for you and the datasets you create.
We strongly encourage you to try out the new engine with your current workstation to see what difference it makes. And if you want to measure frame rates, we suggest you use a free benchmarking utility called FRAPS.
Even the FirePro W2100 does an acceptable job with most models in ‘shaded with edges’ mode at FHD resolution, although we’d generally recommend a GPU with 4GB or more.
In the past, we’ve heard of design and engineering firms switching CAD applications simply because others offered better 3D performance for large assemblies.
With the new engine, DS SolidWorks certainly looks to be throwing down the gauntlet to the other CAD vendors.
This article is part of a DEVELOP3D workstation special report. To read articles and reviews in this report click on the links below: