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:
- The frequency is essentially how many operations a single CPU core can complete in a second (how fast it is).
- 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:
- File Open
- File Save
- FEA Simulation
- Flow Simulation
- Mesh Creation
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.
For our test system, we used the following hardware:
|Motherboard:||Asus Z10PE-D8 WS|
|CPU:||2x Intel Xeon E5-2687W V3 3.1GHz Ten Core|
|RAM:||8x Crucial DDR4-2133 16GB ECC Reg.|
|GPU:||PNY Quadro M4000 8GB|
|Hard Drive:||Samsung 850 Pro 512GB SATA 6Gb/s SSD|
|OS:||Windows 10 Pro 64-bit|
|PSU:||Antec HCP Platinum 1000W|
|Software:||Solidworks 2016 SP 0.1|
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:
|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)|
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:
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.
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.
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.
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.
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.
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.
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.
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 .
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:
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.