20 to 30 Times Faster Graphics Response with SOLIDWORKS 2019’s New Graphics Engine - ENGINEERING.com
There is a revolution happening in the SOLIDWORKS code.
As regular users, we expect enhancements with every new release of SOLIDWORKS, and the software never disappoints. Each new release comes with a 200-to 250-page What's New manual, containing over 200 new enhancements. You may be thinking, "This is nothing out of the ordinary" or "This is just an evolution, not a revolution." After all, the software must evolve, right?
Well…yes. The problem is that this evolution is based on new code written on top of old code to the point where SOLIDWORKS now has millions of lines of code. The foundation of the software's code was written in 1995-1997. As you can imagine, there are all kinds of difficulties with maintaining this code and continually improving the user experience. I am not a programmer, but I imagine avoiding regressions needs a lot of attention during the development process.
SOLIDWORKS recognized this problem and started an ambitious program of re-writing the foundation code. You probably have noticed the first steps of this revolution implemented starting with the 2015 version of the software, including:
- New file structure in 2015. As a direct result, all SOLIDWORKS files are 40 to 60 percent smaller compared to the ones from previous versions.
- New user interface architecture in 2016, which was further refined in 2017 and 2018. I am not talking about the new color scheme that unsettled quite a few of the veterans in 2016. That has been solved by giving users options.
Question:
What is revolutionary in SOLIDWORKS 2019 from the code point of view?
Answer:
One of the most important pillars of a 3D CAD software: The Graphics Engine.
Background
Before sharing the test results of the new Graphics Performance Pipeline in the latest release of the CAD platform, allow me to provide some background information.
I frequently hear this comment, especially from engineers in companies that recently acquired the software: "Our IT Department installed gaming cards on our SOLIDWORKS Workstations!"
It is easy to blame the IT professional, but it is an easy mistake to make. He or she bought a very powerful gaming card and expects the engineer to be happy. After all, most programs work very well with fast gaming video cards. SOLIDWORKS, not so much.
The explanation of why it is critical to equip our workstations with SOLIDWORKS-certified video cards is simple: maximize stability, increase efficiency and unlock features like RealView Graphics. However, the explanation for why a certified video card works better in SOLIDWORKS than a gaming one is quite complex. We could write a whole article just on that topic.
Allow me to simplify it. This is what we heard from the company and graphic cards suppliers in the past. Read the paragraph below and see if you spot the weak point in their message:
Video cards designed for "gaming" or multi-media applications, such as nVIDIA GeForce or AMD Radeon cards, do NOT offer maximum performance or stability for SOLIDWORKS. Game/multi-media cards are optimized for a low number of polygons displayed on the screen but at a high frame rate. CAD applications have the opposite requirement, where polygon count is high (the detail in your design model) but the image does not change rapidly so high frame rates are not as critical. Using a certified graphics card and driver combo will yield the most stable platform for running SOLIDWORKS.
Did you spot the problem expressed in the message above?
It looks like as regular users of the CAD platform, we accepted that it was OK to expect a low frame rate. It was normal for the viewport to barely refresh when manipulating the viewport—rotate, pan, zoom in/out—with a large assembly or complex model. It was expected that the users would reduce the level of detail during these operations (see Figure 1), to reduce details to boxy blocks during dynamic manipulation of the viewport (see Figure 2).
Figure 1 - What users had to do to reduce the graphics level of detail during dynamic viewport manipulation
Figure 2 - Dynamic reduction of the graphics level of detail during viewport rotation
Versions of the software from 2018 and before mostly used OpenGL 2.0 as the graphics engine. Some items, like Open Independent Transparency, used Open GL 4.3.
Up until 2018, users may have been wondering what the point of investing in a higher-end graphics card was since the raw power of such cards were not fully used by the core operations of the software. The exceptions were rendering with SOLIDWORKS Visualize or AMD Radeon ProRender, displaying complex Simulation graphs.
We asked Siddharth Palaniappan, SOLIDWORKS senior manager Graphics R&D Development, to provide technical information about what the code he and his team wrote in the new 2019 release. This is what he said:
"Previous versions of SOLIDWORKS supported OpenGL from software rendering from OpenGL 1.1 all the way to OpenGL 4.3; the last one used for Order independent Transparency (OIT). At SOLIDWORKS, we are well-known to support a wide range of graphics cards because SOLIDWORKS has been around forever and has had a very long history. SOLIDWORKS has always been updating to different versions of OpenGL based on what features were needed.
We see that graphics card support for older versions of OpenGL are also being dropped by their manufacturers as well. The graphics industry is one of the industries that improves at a much faster rate compared to other industries. Every year, nVIDIA and AMD release new generations of graphics cards with drastic improvements. Usually, the demand comes from gamers around the globe, so there's constantly new techniques for performance boost and image quality from researchers from various industries including medical, oil and gas, CAD and gaming. Thus, it's essential that we, as developers, change our perspectives on graphics programming and bring out cutting edge solutions in the industry for SOLIDWORKS consumers. This is what led to this project for boosting graphics performance."
We also asked the two major vendors of professional CAD video cards to share some insights in how close they worked with SOLIDWORKS on this project.
Don Breda, NVIDIA senior alliance manager, stated:
NVIDIA partnered with SOLIDWORKS to provide guidance and technical support for the architecting of a modern OpenGL pipeline to maximize large assembly rendering performance and provide scaling across GPUs.
Michael Katz, AMD developer alliance manager, stated:
AMD's Radeon Technologies Group and SOLIDWORKS have a long history of graphics and GPU compute collaboration that has resulted in SOLIDWORKS features such as Order Independent Transparency, which enables intuitive transparency effects in the viewport. The latest enhancements in the SOLIDWORKS 2019 graphics engine yield even greater end-user productivity by significantly boosting viewport interactivity and performance of large assembly models when using professional workstation GPUs.
Enable the Performance Pipeline
In the 2019 version of the software, unlocking the performance in your professional video card is done by going to Tools/ Options/ System Options/ Performance and checking the box called Enable performance pipeline. Restart called Enable performance pipeline. Restart the program after that.
Notice in Figure 3 that this option is still considered Beta functionality. This article used SOLIDWORKS 2019 PR1 for all tests and screenshots.
Figure 3 - Let your video card fly.
For the Enable performance pipeline setting to be beneficial, have a video card that is less than six years old.
- For nVIDIA, the Kepler, Maxwell and Pascal lines support this functionality. Examples include: nVIDIA Quadro K4000, M4000 and P4000.
- For AMD, all video cards build on Graphics Core Next (GCN) microarchitecture to support the new functionality. That means any card newer than six years old, in the Firepro W and Wx series, would be faster. Of course, the newest cards from the Radeon Pro line will fully support the new graphics engine in SOLIDWORKS.
Currently, the Performance Pipeline has been implemented only in the 3D environment (parts and assemblies).
Testing Workstation
Meet Dave, our trusted SOLIDWORKS Workstation.
Figure 4 - Testing machine
In addition to being able to put on a spectacular light show, Dave is full of quality components like an Intel(R) Core (TM) i7-7800X CPU @ 4.4 GHz, 6 Cores, 12 Logical Processors, 64 GB RAM and SSD drive.
For this test, we selected two mid-range video cards, one from AMD and one from nVIDIA.
Dave was already equipped with an nVIDIA Quadro P4000 (Figure 5).
To test the performance of the new SOLIDWORKS graphics engine using an AMD Radeon Pro card, we asked Michael Katz from AMD to loan us a mid-range card. He shipped us an AMD Radeon Pro WX 7100 (Figure 6).
Figure 5 - nVIDIA Quadro P4000
Figure 6 - AMD Radeon Pro WX 7100
It is worth noting that even though both cards are placed in the middle of their line-up for performance, the Quadro P4000 is 45 percent more expensive than the Radeon Pro WX 7100, as listed on the www.newegg.com website at the time of writing this article.
Testing Protocol
We used three tests to measure the performance of the new graphics engine compared to the old one. We compared the performance of SOLIDWORKS 2018 SP5.0 with SOLIDWORKS 2019 PR1 with the Graphics Performance Pipeline enabled, as per Figure 3. The dynamic details for graphics manipulation was set to maximum (Figure 7).
Figure 7 - It might seem counterintuitive, but the OFF setting means full graphics detail during dynamic viewport manipulations.
Test 1 – SOLIDWORKS Performance Test
We do not know if the company updated this test for PR1, but it is an easy test to run, so this is how we did it.
- For each video card, we installed the latest SOLIDWORKS certified video card driver, as per SOLIDWORKS 2019 Rx link.
- Reboot the machine.
- Turn off TeamViewer, One Drive and any other process that could consume CPU or GPU resources.
- Run the SOLIDWORKS Performance Test.
- The test has three areas: CPU, I/O and Graphics. Each step of the test (described below) is meant to exercise a specific area of the computer using SOLIDWORKS.
- Out of the box, standard settings are used to ensure consistent settings are used to run the tests. Note: This may mean that the Graphics Performance Pipeline might be turned off by the test itself.
- The general tasks for the all datasets are as follows. The areas tested are listed in [ ] after the test step:
- Open the file [I/O]
- Force a rebuild [CPU]
- Rotate and zoom [Graphics]
- Open drawing [I/O w/Multi-Threading]
- Rotate and zoom [Graphics]
- Add sheet [CPU] & [Graphics]
- Add view [CPU] & [Graphics]
- Render (parts only) [CPU w/Multi-Threading
Note: All scores are in seconds and a lower score is better. The scores are sorted by CPU results. Click on a column to re-sort the results.
- Repeat steps 2 to 4, three times for the 2018 and 2019 versions of the software and calculate the average.
Test 1 Results – SOLIDWORKS Performance Test
The results for 2019 are better than the ones for 2018 for both video cards.
It is important to understand that the performance improvement is not fully revealed by this test because, currently, the Performance Pipeline has been implemented only in the 3D environment (parts and assemblies). Unfortunately, the Performance Benchmark tool has no settings for reporting separately the graphics performance for the 2D environment (drawings) from the 3D one. Because of this, the numbers are "watered down" by the lower performance in the 2D drawings.
Figure 8 - AMD Radeon Pro WX 7100 results in seconds. Smaller is better.
Figure 9 - nVIDIA Quadro P4000 results in seconds. Smaller is better.
Overall, the numbers are impressive.
Compared to SOLIDWORKS 2018, SOLIDWORKS 2019 the AMD card is reported as being:
- 59 percent faster in the Graphics test
- 4.8 percent faster in the PhotoView 360 Rendering test
- 55 percent faster in the RealView test
Compared to SOLIDWORKS 2018, SOLIDWORKS 2019 the nVIDIA card is reported as being:
- 48.8 percent faster in the Graphics test
- 7.4 percent faster in the PhotoView 360 Rendering test
- 38.5 percent faster in the RealView test
For those who have not run the SOLIDWORKS Performance Benchmark, a sample of how the results are displayed is shown in Figure 10.
Figure 10 - Performance Benchmark Test results – Sample
It was interesting to discover that the AMD Radeon Pro WS 7100 card got better results than the more expensive nVIDIA Quadro P4000.
Figure 11 - AMD Radeon Pro WX 7100 versus nVIDIA Quadro P4000 - SOLIDWORKS 2019 PR1 - Performance Benchmark in seconds. Smaller is better.
Test 2 – Large Assembly Graphics Performance
In this test, we opened a large assembly and measured two values:
- The number of frames per second measured during a fast rotation of the viewport.
- The Graphics Generation time, as reported by the Performance Evaluation Tool.
We cannot share a screenshot of the assembly, but these are the stats as reported by the Performance Evaluation tool:
Parts: | ||
Part components: | 8,667 | |
Unique part files: | 1,074 | |
Unique part configurations: | 1,073 | |
Number of bodies: | 12,768 | |
Subassemblies: | ||
Subassembly components: | 642 | |
Unique subassembly configurations: | 265 | |
Unique subassembly files: | 264 | |
Components: | ||
Resolved documents: | 1,328 | |
Number of top level components: | 21 | |
Resolved components: | 9,288 | |
Lightweight components: | 0 | |
Graphics components: | 0 | |
Suppressed components: | 21 | |
Hidden components: | 10 | |
Virtual components: | 0 | |
Envelope components: | 0 | |
Assembly | ||
Maximum depth: | 9 | |
Number of total evaluated mates: | 52 | |
Top level mates: | 54 | |
Flexible subassembly mates: | 0 |
It is also worth noting the total number of Graphics Triangles, Faces, Solid and Surface Bodies, as reported by the Assembly Visualization Tool.
Figure 12 - Assembly Visualization Report
Saving the report to an Excel spreadsheet and adding the numbers for each column, this assembly has:
- 14,658,142 Graphics Triangles
- 268,347 Faces
- 12,779 Solid Bodies
- 94 Surface Bodies
Test 2 Protocol
- Turn on the reporting of the graphics refresh rate on the screen (Figure 13).
- Reboot.
Figure 13 - FPS Reporting on screen directly in SOLIDWORKS
- Turn off TeamViewer, One Drive and any other process that could consume CPU or GPU resources.
- Open the assembly in resolved mode.
- Hide the FeatureManager Design Tree and the toolbars (use F9 and F10 shortcut keys).
- Orient the model in ISO view.
- Zoom to Fit.
- Rotate the viewport, using the Middle Mouse Button.
- Record the maximum FPS number.
- Repeat steps 2 to 9 three times for each video card in each version of the software.
The on-screen reporting can be turned on by setting this registry key to "1":
Computer\HKEY_CURRENT_USER\Software\SolidWorks\SOLIDWORKS 201x\Performance\OpenGL Print Statistics
Test 2 – Viewport Rotation Results
The results of this test show an impressive advantage for SOLIDWORKS 2019 users.
Figure 14 - Results reported in frames per second (FPS). Bigger is better.
Figure 15 - Results reported in FPS (Frames per second). Bigger is better
Compared to SOLIDWORKS 2018, in SOLIDWORKS 2019 the AMD card is reported as being:
- 52.38 percent faster in OpenGL (RealView off), Shadows off
- 41.56 percent faster with RealView graphics on, Shadows off
- 45.51 percent faster with RealView graphics on, Shadows on
Compared to SOLIDWORKS 2018, in SOLIDWORKS 2019 the nVIDIA card is reported as being:
- 34.49 percent faster in OpenGL (RealView off), Shadows off
- 71.77 percent faster with RealView graphics on, Shadows off
- 74.09 percent faster with RealView graphics on, Shadows on
Comparing the two video cards in SOLIDWORKS 2019 provides mixed results (see Figure 16).
Figure 16 - Results reported in frames per second (FPS). Bigger is better
Based on this test, it seems that both cards are getting much better when working with large assemblies, with a plus for the Quadro 4000 if the RealView graphics is turned on.
I am curious to know how many of you are using RealView graphics when working with a large assembly? I had mostly used OpenGL with no shadows or cosmetic enhancers in the past, but with RealView performance like this, I consider it now a viable option for improving the display of my model.
Test 2 – Graphics Generation Phase
Using the Performance Evaluation tool, we recorded the Graphic Generation times and averaged them for both SOLIDWORKS 2018 and 2019 for both cards.
Figure 17 - Graphics Generation results
Considering that the graphics triangles are computed by the CPU, we were not expecting a big difference between 2018 and 2019. Imagine our surprise when finding out that SOLDIWORKS 2019 was reported as being 26.6 percent faster than SOLIDWORKS 2018.
This is an important finding considering that graphics triangles are re-computing multiple times throughout a single SOLIDWORKS session. Sometimes, the graphics generation is triggered just by switching between two document windows or by adding a new component.
Test 3 – Complex Part Performance
In this test, we opened a complex imported part with thousands of surface bodies and measured the same two values as in the previous test:
- The number of frames per second measured during a fast rotation of the viewport.
- The Graphics Generation time, as reported by the Performance Evaluation Tool.
We cannot share a screenshot of the part, but these are the stats as reported by the Assembly Visualization tool:
Figure 18 - 8,644 surface bodies
Test 3 – Viewport Rotation Results
The results of this test show a huge advantage for SOLIDWORKS 2019 users. We will no longer report the improvement in percentages but in how many times faster the software performs.There is an order of magnitude difference between the performance of SOLIDWORKS 2018 and 2019.
Figure 19 - Results reported in frames per second (FPS). Bigger is better
Figure 20 - Results reported in frames per second (FPS). Bigger is better
Compared to SOLIDWORKS 2018, in SOLIDWORKS 2019, the AMD card is reported as being:
- 17 times faster in OpenGL (RealView off), Shadows off
- 14 times faster with RealView graphics on, Shadows off
- 13.5 times faster with RealView graphics on, Shadows on
Compared to SOLIDWORKS 2018, in SOLIDWORKS 2019 the nVIDIA card is reported as being:
- 26 times faster in OpenGL (RealView off), Shadows off
- 25.5 times faster with RealView graphics on, Shadows off
- 23 times faster with RealView graphics on, Shadows on
Both cards can refresh the screen faster than the human perception.
Comparing the two video cards in SOLIDWORKS 2019 shows the more expensive card being able to generate more than twice as many frames per second. However, both cards can refresh the screen faster than the human perception.
Figure 21 - Results reported in frames per second (FPS). Bigger is better
Test 3 – Graphics Generation Phase
We inserted the part in an assembly and, using the Performance Evaluation tool, we recorded the Graphic Generation times and averaged them for both the 2018 and 2019 versions of the software for both cards.
Figure 22 - Graphics Generation results
Again, considering that the graphics triangles are computed by the CPU, we were not expecting a big difference between the 2018 and 2019 versions of the CAD software. We were happy to notice that SOLDIWORKS 2019 was reported as being almost 30 percent faster than SOLIDWORKS 2018.
This is an important finding considering that graphics triangles are re-computing multiple times for parts throughout a single SOLIDWORKS session. Every rebuild triggers a computation of the graphics.
Conclusion
Upgrading to SOLIDWORKS 2019 seems to be a must for all users who need a performance boost when working with large assemblies or complex parts. Not only is manipulating the viewport or moving a component on the screen insanely faster (up to 26 times), but even the graphics generation is 25 to 30 percent faster.
While screen manipulation improvements can be easily explained by the new graphics engine, we are still waiting for more information from the software's developers about what other improvements they performed under the hood to boost the graphics generation performance.
]
Comments
Post a Comment