Article Thumbnail

Solidworks 2016 Multi Core Performance

Written on December 16, 2015 by Matt Bach
Share:
Table of Contents:
  1. Introduction
  2. Test Setup
  3. File Open and Save
  4. FEA and Flow Simulation
  5. Mesh Creation
  6. Rendering
  7. Conclusion
  8. Recommended Reading
  9. Recommended Systems for Solidworks

Introduction

When designing a computer there are literally thousands of different hardware components to choose from and each one will have an impact on the overall performance of your system. Depending on the software you will be using, however, some components will simply be more important than others. In the case of Solidworks, the single most important component in your system is the CPU. In this article we want to answer the question: how do you know which CPU is best for Solidworks?

Before even attempting to answer this question, it is important to understand the two most basic CPU specifications:

  1. The frequency is essentially how many operations a single CPU core can complete in a second (how fast it is).
  2. The number of cores is how many physical cores there are within a CPU (how many operations it can run simultaneously).

This doesn't take into account the differences between CPU architectures, but in an ideal world a CPU that has the same frequency but twice the number of cores would be exactly twice as fast. Unfortunately, making software utilize multiple cores (and do so effectively) is difficult in most situations and almost impossible in others. Add in the fact that higher core count CPUs tend to have lower operating frequencies and it becomes even more difficult to ensure that you are choosing the best possible CPU for your software.

For most tasks in Solidworks, the answer as to whether you want a high core count or higher operating frequency is very straight-forward. Simply put, most modeling tasks (including rotating and viewing models) and even launching Solidworks itself are single threaded so core count is largely irrelevant. However, there are a number of tasks within Solidworks that are often reported to be multi-threaded and thus should benefit from having a higher core count. What we want to explore in this article is whether having more CPU cores increases performance for these tasks to the point that it may make sense for some users to sacrifice some single-threaded performance in order to increase their total number of CPU cores. Alternatively, our testing will also help answer the question of whether it is worth purchasing a dedicated machine for one or more of these multi-threaded tasks.

In this article, we will be specifically looking at the multi core efficiency of the following actions:

  1. File Open
  2. File Save
  3. FEA Simulation
  4. Flow Simulation
  5. Mesh Creation
  6. Rendering

This is not a complete list of everything that is multi-threaded in Solidworks, but it does hit most of the popular and/or time consuming tasks. If you want to skip over our individual benchmark results and simply view our conclusions, feel free to jump ahead to the conclusion section.

Test Setup

For our test system, we used the following hardware:

Our test platform is built around a pair of Xeon E5 2687W CPUs which will allow us to test with up to 20 physical CPU cores. To see how well Solidworks utilizes multiple CPU cores we will be testing with various numbers of cores made available to Solidworks by adjusting the number of active cores in the BIOS. This way we can accurately benchmark Solidworks with anywhere from a single core to the full twenty cores possible with this setup. To make sure our results are as consistent as possible we used a combination of Solidworks macros and a custom script using AutoIt to start Solidworks, load the relevant test file, then time how long it takes to perform whatever task we are interested in.

To perform the actual testing, we used a mix of Solidworks training files and files available from GrabCad.com. These files are:

Test Files
File Open & Save Assembly - Vertical Twin Steam Engine with Reverse Gear (by Ridwan Septyawan)
Drawing - punch_holder (Solidworks Performance Test dataset)
FEA Simulation FEA Benchmark V3
Flow Simulation - Airflow Billboard - Lesson14 Case Study (Solidworks 2015 Flow Sim. training files)
Flow Simulation - Thermal PDES_E Box overall - Lesson06 Case Study (Solidworks 2015 Flow Sim. training files)
Mesh Creation *Used the three above simulation files*
Rendering Vertical Twin Steam Engine with Reverse Gear (by Ridwan Septyawan)

FEA Simulation

Flow Simulation - Airflow

Flow Simulation - Thermal

Rendering

To analyze the data, we will be presenting our results in terms of how long it took each action to complete with X number of cores compared to how long it took to complete with just a single core. From these results, we will then use Amdahl's Law to estimate the parallel efficiency for that action. 100% is perfect efficiency where a high core count CPU is ideal, but as the efficiency drops lower and lower having a high frequency CPU becomes more and more important. To help clarify our results, we will mark any positive parallel efficiency in green, any reduction in efficiency (or 0% efficiency) in orange, and any negative efficiency (where a higher core count actually reduces performance) in red.

One thing we want to make very clear is that our testing is only 100% accurate for the files and settings we used. If you want more accurate results for what you actually do in Solidworks we recommend following our Estimating CPU Performance using Amdahls Law guide. It can be a time consuming process (even with automation the testing for this article took a significant amount of machine time) but it is really the only way to know for sure what the parallel efficiency is for exactly what you do.

File Open and Save

To start things off, we are going to look at something every Solidworks user does multiple times a day: opening and saving files. We tested how long it took to open and save both assembly and drawing files using between a single CPU core and 20 CPU cores:

 

Solidworks File Open multi core benchmark

 
 

Solidworks File Save multi core benchmark

 

Normally we would go into detail for each individual test, but the results are so straightforward that there is no need. What we found is that there was absolutely no difference in the time it takes to open or save either an assembly or drawing file with more CPU cores. What is odd is that if you watch the CPU load per core in Task Manager, you actually will see all of the cores being loaded a small amount. This means that Solidworks is trying to use all the available cores but - at least for these files - even a single CPU core has all the power necessary to open and save these files. This means that there is likely something else within the system that is bottlenecking performance long before the number of available CPU cores can come into play.

Keep in mind that we are using a very fast (>500MB/s) SSD in our test system so even if the drive is the bottleneck (which our storage testing has shown should only possibly be the case for the assembly save benchmark) you would need a much, much faster drive to start to see the benefit from having more than 2-4 CPU cores.

FEA and Flow Simulation

Simulation work can be incredibly important depending on the type of modeling you are doing and often needs to be performed multiple times as changes are made. Simulation (alongside rendering) is often touted as the main reason to have a higher core count CPU in Solidworks but there has been very little testing to see if it is able to actually take advantage of more cores.

Solidworks FEA Simulation multi core benchmark

Starting with FEA simulation, our results are not very encouraging. For the first CPU, we saw a very poor 70% efficiency which means that in most cases having a high frequency 4-6 core CPU is going to be much better than a higher core count, lower frequency CPU. In fact, we actually saw a steady drop in performance as we utilized the second CPU. In other words, for FEA simulation you can get some benefit from having more cores, but you should strongly avoid dual Xeon systems.

Solidworks Flow Simulation multi core benchmark
The results for airflow simulation (which requires the "Flow Simulation" package) is a bit better than FEA simulation, but not by much. The first CPU only has a 74% multi-core efficiency and while there is not the steady decrease in performance with a second CPU, there is definitely a small drop in performance followed by absolutely no increase in performance. Once again, this means that dual Xeon systems are not ideal for this type of simulation.


Our final simulation benchmark is a thermal simulation which also requires the Flow Simulation package. Simply put, the results almost perfectly mirror the airflow simulation.

All-in-all, we are fairly disappointed in the multi core efficiency when running simulations in Solidworks. Even in the best case we saw an efficiency of only 75% and in all three of our benchmarks we saw at least some drop in performance with multiple CPUs.

Mesh Creation

For most simulations, you are first going to need to create a mesh for the 3D model. This usually doesn't take very long compared to the time it takes to complete a simulation, but this is supposed to be multi-threaded so we wanted to make sure we tested it.

Starting with the mesh creation for our FEA simulation model, we saw absolutely no increase in performance with multiple CPU cores.


Creating a mesh for our airflow simulation model was very interesting. We saw a small 55% multi-core efficiency for the first 4 cores, then no increase for the remainder of the first CPU. When we started using the second CPU, we saw a small but steady -28% efficiency.


For our third simulation model, we saw a much better (but still not very good) 60% multi core efficiency for the first 8 cores. However, the efficiency changed to -25% after that.

While we did see some benefit from having more CPU cores when creating a mesh, none of out tests showed any benefit to having more than 8 cores and even then the efficiency was only a measly 60%. Overall, this means that any decent quad core CPU is likely to give you as good or better performance than a higher core count CPU when creating a mesh in Solidworks.

Rendering

In our experience, rendering is the type of task that is ideal for higher core count systems. Whether is rendering a video, a 2D image, or a 3D image, the way rendering works simply lends itself to multi-threading. In Solidworks, rendering is actually divided up into two steps: a irradiance pre-pass and the final render. The irradiance pre-pass typically only takes between 15-30% of the total render time, but for large renders that can still be a significant amount of time. Because of this we wanted to time both steps individually in case they had a significant difference in multi core efificiency.

Starting with the irradiance pre-pass we see some very impressive results. For the first CPU we saw a 99.7% multi-core efficiency which is extremely good. The efficiency did drop to 92% for the second CPU, but even that is fairly decent.

Solidworks Rendering multi core benchmark
While the pre-pass results were very good, the final render is even better. We actually saw perfect scaling for the first CPU (which does not happen very often) and while we still saw a drop with the second CPU the multi core efficiency stayed at a very impressive 96%

If you combine these two tests, you get a overall multi core efficiency of ~100% for the first CPU and 95.5% for the second CPU when rendering in Solidworks. What this means is that rendering in Solidworks is extremely good at using multiple CPU cores. There is a drop in efficiency with multiple physical CPUs, but you would still see a very impressive increase in performance with a dual Xeon workstation over a single Xeon (or Core i5/i7) workstation .

Conclusion

One thing we want to make sure is very clear is that the majority of tasks (including creating/editing/rotating/viewing models) in Solidworks are single-threaded so there is no performance gain by having a higher core count CPU. The purpose of this article is not to examine those common tasks at all, but to look at the tasks that are often claimed to be multi-threaded. Overall, we can come to four conclusions:

1) Opening and saving files (both assembly and drawings) is multi-threaded, but is limited to the point that there is no actual benefit to having more than a single CPU core. Simply put, something else (whether it is hardware or software) is the bottleneck in our test system, not the CPU. Considering that the CPU we tested with only has an operating frequency of 3.1GHz and we are using a fast SSD storage drive, we can fairly confidently state that unless you have a very low-end CPU your processor is not going to be the limiting factor when it comes to opening and saving files. 

2) Running simulations only sees a very moderate benefit to having more CPU cores, but there is a drop in performance with multiple physical CPUs. For a single CPU, we saw about a 70% multi core efficiency for FEA simulations and about a 75% multi core efficiency for flow simulations which is bad enough that a high frequency quad core CPU will match the performance of even the most expensive Xeon E5 CPU. In addition, for all three simulations we saw a significant drop in performance with multiple physical CPUs so a dual Xeon system will actually be slower than a system with a single CPU.

3) Mesh creation sees a small benefit to having more CPU cores, but is extremely limited. At worse we saw no benefit to having more than a single CPU core and at best we saw a 60% multi core efficiency for the first 8 cores. In two of the three tests we saw a point where more cores actually reduced performance, while the third simply showed no benefit to having more cores.

4) Rendering is extremely good at utilizing multiple CPU cores. Rendering is really the one place in Solidworks where a higher core count CPU (or multiple physical CPUs) would actually show a significant improvement in performance. For a single CPU, the efficiency is pretty much perfect with a ~100% multi core efficiency. The efficiency did drop when using multiple physical CPUs (down to about 95.5%), but that is somewhat to be expected given the overhead associated with multiple CPUs. 

What all this means is that the choice of CPU for Solidworks is actually fairly easy:

Even for the multi-threaded portions of Solidworks (including simulations), we would recommend getting the latest generation, highest frequency quad core CPU you can. At the time of this article, this would be the Intel Core i7 6700K 4.0Ghz Quad Core.

You may be able to shave a percent or two off the time it takes to perform a simulation with the most expensive Intel Xeon E5 CPU, but you would be giving up performance for almost every Solidworks task in order to do so.

If you do very heavy rendering, there are a number of options that may increase your productivity. The first is to use the network rendering feature in Solidworks in conjunction with multiple cost-effective machines to utilize distributed computing to speed up your render times. This is a very interesting option with lots of possibilities that we will go over further in a up-coming article, but the main limitation to this is that the irradiance pre-pass step (which may be 20-30% of the total render time) must be done on the local machine. This means that in some instances having a powerful, dedicated machine optimized solely for rendering may be the best route for decreasing the time you spend waiting on renders to finish.

In the case of a dedicated rendering machine there are a lot of good CPU choices but based on the efficiency we measured a dual Xeon system should give you the best performance for your money. To give you an idea of how much better performance you can expect compared to an Intel Core i7 6700K, the chart below should be an accurate estimation of how long it would take to render the image used in this article with the dual Xeon CPUs we would recommend:

Solidworks 2016 estimated render times

Keep in mind that any dual Xeon system is going to have worse performance for almost any task in Solidworks besides rendering, so we would not recommend using any of these CPUs in a system that is going to be used for standard Solidworks tasks.

Recommended Reading

If you are configuring a system for Solidworks, we have a number of other articles regarding the hardware requirements for Solidworks that you may be interested in:

Recommended Hardware for Solidworks
Summary of what you need to know when choosing hardware for a SOLIDWORKS workstation.

Solidworks 2016 Multi Core Performance
Does having more CPU cores give you more performance?

CPU Overclocking in Solidworks 2016
How much performance increase can overclocking give you and what are the risks involved?

CPU Performance: Skylake-S vs Haswell-E/EP
Does the CPU architecture make a difference?

Solidworks 2016 NVIDIA Quadro Performance
What video card do you need?

Network Rendering in Solidworks 2016
Using client nodes to speed up Photoview 360 renders.

 

 

Recommended Systems for Solidworks

 

Core i7 Workstation

Maximum Performance, 
Excellent Reliability

Purchase

Based on the Puget Systems Echo Pro, this compact system provides the best possible performance in SOLIDWORKS when working with any size and complexity of 3D models.

Xeon E3 Workstation

Maximum Reliability,
Excellent Performance

Purchase

Based on the Puget Systems Obsidian, this system utilizes an Intel Xeon E3 CPU along with ECC (error correcting) RAM to provide maximum reliability while still giving excellent performance.

 

Tags: Solidworks, CPU, Processor
Alan Sweetenham

Did you use the curvature based mesher in FEA? pretty sure that is multi threaded but the standard mesher isn't Overall an excellent especially with the second CPU findings, perhaps still useful for users who want to run multiple tasks/ studies i suppose.
Also would be interesting to see the difference for SOLIDWORKS plastics.

Posted on 2016-06-26 11:31:07