Monday, December 30, 2024
Software

Single Threaded vs Multithreaded: Applications & Tasks Performance

In this post we’ll list the most common multi-threaded and single-threaded tasks from all types of computer programs.

We will answer the question: “is X a multi-threaded or a single-threaded task?”

Ex: Is exporting , rendering , editing photos and gaming multi-threaded or single-threaded?

Single-threaded tasks will mostly use ONE THREAD (one logical core) whereas multi-threaded tasks will use several if not ALL THREADS.

Check out this post if you’d like to see the multi-thread and single-thread performance of Intel CPUs.
 

Note: by thread we mean a logical core. Thread has a different meaning in programming but here it means a logical core ( one physical core = two threads. For the basics check beginner’s guide to computer specs).

 

Please beware that although a task MAY BE multi-threaded, it may STILL be wise to focus on SINGLE-THREAD performance. If you want to know which to focus on, JUMP to the VERDICT section using the Table of contents below

Methods: Task Manager & Third party CPU benchmarks

It’s not difficult to find out applications that use multiple threads. All you have to do is the following:

  • Make sure to close ALL other applications save for the one you are testing
    • Make sure the CPU activity is very low.
  • Open your program/game or run a specific task (rendering, rotating a model in 3D, gaming, etc)
  • Wait a while (loading the software spikes CPU activity).
  • Perform a specific task or effect (rendering, compiling, gaming, etc).
  • Then press CTRL+ALT+DEL  as shown below:

List of Multi-Threaded Tasks

You can call a task multi-threaded when you see LOTS of activity in several boxes.

3D CAD Software

Rendering

Rendering regardless of 3D Software is always going to be a multi-threaded task. This is not a parametric process (in other words, there’s no need to wait for one step to be completed before jumping into the next step) since pixels can be rendered independently from each other.

Since the software can start “rendering” an image from various points simultaneously. Thus the more cores you have the more points it will be render and the faster the rendering.

For a software like AutoCAD rendering doesn’t take that long (1-3 min) since the shaders and textures used are not graphically demanding and/or detail.

However, for software like Revit & Solidworks, rendering may take 15+ min depending on the textures/shaders used and the amount of details/#parts on the model.

Animation

Even when the software is in iddle mode, that is, the project is open with a 3D object in place. There’s a high-usage for both CPU & GPU as shown below:

Editing & Effects

Most of the editing & texturing process requires not only calculations but also LOTS of RENDERING frames and details. This is why unlike CAD software, Animation software will tend to be MULTI-THREADED even when editing and modeling.

3D Viewport

Viewport in animation software requires lots of rendering and depending on the view mode you choose, it can take every single thread utilization from every single core.

Rendering

Rendering is even more exhausting in Animation software as well. The CPU is not using every single thread at 100% but rendering , depending on the size and textures, can take hours.

Video Editing

Playback & Previews

Due to the amount of details behind high resolution playback, the processes is inherently multi-threaded.

Although there may not be a need to write the software to multi-thread playback with low resolution clips. Very high resolution (4k,8k) have a lot more data to processes in a short amount of time, thus it is IDEAL to make the process multithreaded.

Exporting & Encoding

Exporting, Encoding, Transcoding are all multithreaded. These tasks are taking data and turning into a different set of data: be it with new effects, new format, etc.

Either way, since changing information into a different format is not dependent on previous results, the proces can start anywhere or be done in parallel kind of like flipping a stack of papers: it can be done all in parallel.

Thus is it very multi-threaded, the more threads, the faster the job will be.

Photo Editing

LightRoom & Other software

As you’ll see later. Most photo editing & imaging software like Photoshop, InDesign & Illustrator is heavily dependent on single-thread clock speed for FAST performance.

However, other software MAY not be single-threaded when it comes to editing. For example, “Photo viewer” which is the by-default application used in Windows when you click on a photo has lots of functions that are HEAVILY multi-threaded.

I’m using the generative Erase tool to get rid of wrinkles. The tool uses a high percentage of all the other threads.

The same thing happens with Lightroom. Most of the functions applied to one single photo are moderately multi-threaded as shown below:

Batch Editing

Batch Editing refers to mass editing photos. In other words, applying the same set of effects on a set of photos simultaneously.
This process is by nature multi-threaded and Lightroom is the most commonly used photo editing application for this task. Below all thread resources are exhausted as I use the enhance feature on all 28 photos. 

Thus if you constantly edit photos in masse and would like to save time, you want to focus PURELY on number of cores as opposed to clock speed performance.

Exporting

You would expect exporting to be multithreaded and indeed it is as you can see in the graph above. However, most of the workload which is sequantial is carried out by one thread. Painting/rendering colors and shapes are multi-threaded hence the activity in the remaining threads.  The activity is low on the additional threads so you might as well focus on a very high clock speed CPU.

Music Production

PlayBack

It makes sense for playback to be multithreaded. Each track is assigned to one thread (as shown in the figure).

There are a total of 7 tracks and , depending on how complex the sound is, they take a small percentage of the resources of one thread as shown in the lower part of the figure.

Other tasks

For music production multifile importing and exporting are all multi-threaded. Luckily, the clock speed performance and multi-core performance required for fast performance with the software is very very low. Thus most CPUs should do the job pretty quickly.

Programming 

Parallel Processing

Parallel Processing refers to processing chunks of information “in parallel” for a final result which in programming means compiling different sections of the code separately for a final result. This is the reason for the activity being more or less distributed among all threads (logical cores) in the figure. The simulation core engine I used has functions that can be done in parallel.

This can be these pieces of code/data are independent of each other.  

The following areas can be done  “in parallel” : 

  • Machine Learning
  • Artificial Intelligence
  • Deep Learning
  • Image Processing (anything related to images)

App Emulation

I’m emulating a small tablet applications on the figure. Notice how very very multi-threaded app emulation is.  Just having the emulator open without even launching any application takes up MOST of the CPU resources in MOST logical cores.

Now…

Imagine having the emulator open while at the same time compiling (which is as we described before is single-threaded) and working on your code. This will BOTTLENECK most high-tier modern CPUs. Though most of the cores will have at least 50% of resources available, since compiling and writing code is MOSTLY single-threaded, it will NOT be able to use the other threads and the result is a HUGE bottleneck from the lack of ST performance.

Virtualization

You don’t need  a multi-core CPU to run several virtual machines at once but you DO need multiple cores/threads to optimally run each virtual machine simultaneously. 

A rule of thumb for having a decent performance on a virtual machine is 2 VMs/Thread. 

If you have a 12 thread CPU as shown in the figure, then you should be able to run 22 VMs (-2 threads for the host) optimally.

On the other hand, if you’re running just ONE virtual machine. You only need ONE thread.

 

Game Emulation

Each thread handles a different instances of the game. For example, one thread may handle audio, the other rendering imageas, the other interactions and lastly the main thread may handle user input. 

Although this is a multithreaded task, it isn’t CPU demanding. Most CPUs regardless of their clock speed or number of cores will easily handle emulation UNLESS you start emulating recent games from recent consoles for which single-thread performance becomes crucial.

List of Single Threaded Tasks

3D CAD Design

Viewport / Orbit Tool

3D viewport (also known as orbit tool) is rendering an image in real time in 3D . Calculations are not sequential so multiple threads can be used to render the next frame or adjacent frames. HOWEVER, most of the workload is carried out by one thread.

The activity on the main thread #3 (logical core) is low (though much higher than all other threads) because the model is only showing polygons. The moment different textures, shaders and other display modes are used, the single-thread dependence will be more obvious.

Drawing

Functions & Tools for Drawing/Designing/Modeling will most of the time (with some exceptions) be single-threaded. Note that the CPU activity in the figure is centered around the third box.

Rendering the figure as you edit may be the reason for the activity in the remaining threads. 

Either way, if you want to maximize performance when drawing  you want to focus on the higher clock speed CPU. Fast drawing/manipulation of larger models will require even more clock speed.

Video Editing

Effects & Editing

Applying Effects, making transitions & cuts are mostly limited to ONE or TWO threads. The process itself is multi-threaded if we count the activity in all the boxes. However, most of the workload is handed over to one or two threads. Thus we can say the process is more or less single-threaded.

In the clip above, I added distortion & change the hue.

Photo Editing

Applying Effects & Editing

If we are talking about photo editing tools like the brush tool, selector tool, blur tool, lasso tool and most of the tools seen on the left side of the figure above, it is mostly carried out by ONE single thread.

On the right you can see ONE thread being mostly used as I apply the brush tool to eliminate the red spots on the figure.

Music Production

Effects

If you add effects to one track at a time, the process will be single-threaded. In the figure above I added the reverb effect on all 7 tracks and most of the workload is carried out by TWO threads (red squares).

There’s activity in the remaining threads as well to apply the effects on all the other tracks

I assume the first two threads are working on the LONGER track while the remaining threads work on the smaller/shorter tracks.

Importing

If you import one track at a time, the process will be single-threaded as shown in the figure. Most of the workload is carried out by ONE single-thread while the remaining threads, which have a much smaller activity, probably work on background processes related to importing a file.

Programming

Coding & Compiling

For the most part this is going to be a single-threaded task. Most of the codes people run for simple scripts and applications runs on a single thread. The moment the final product gets more complex and you need to make use of several files simultaneously and where compiling each chunk of code takes quiet a lot of time then the code is most likely to be multi-threaded. 

Gaming

This is a complex topic. In summary, all games are multi-threaded.

Some games due to the high amount of graphics processing use all other threads to coordinate the rendering process with the GPU. Games with lower graphical details do not need to use other threads as much.

Online Multiplayer Games

ONE thread (logical core) that handles both draw calls (rendering images) and syncing the actions from the user and its effect on the server/game.

Since by default, the process is parametric and must be synchronous with the server , it is much much harder to make use of the remaining threads (logical cores).

The remaining threads  work on the image rendering process.

Now…

How much a game makes use of all other threads for the rendering process depends on the game. 

.

In this specific example,  most of the workload it’s done by the MAIN thread, the remaining threads don’t even use half their resources.

Most games behave in a similar manner but they might use a lot more resources in every thread (up to 70% or so).

Thus regardless of the game your focus should be the single-thread speed as it is likely to be the most limiting factor for both rendering images and the syncing process with the server. 

Veredict: Focus on ST or MT Performance?

Use this section to decide whether to go for multi-thread performance or single-thread performance. If you decide to buy a CPU or a laptop with a particular CPU, you can use the benchmarks I’ve outlined in the following posts:

  • Intel Laptop vs Desktop CPU comparison
  • AMD Laptop vs Desktop CPU Comparison
  • AMD vs Intel CPU Single-Thread Comparison

Usually, if you want multi-thread performance, you’d want to go with AMD (given the same costs). If you want the highest single clock speed performance, you’d want intel.

3D CAD Software

Small models = multicore performance, Large models = single core performance, Rendering = multicore performance

Most CAD software including Solidworks & CREO are also mostly single-threaded when modeling/editing. This is because the functions used when modeling are parametric:  they must be done step by step and cannot be processed in parallel (because the functions must wait for a result before jumping onto the next step).

A) Now….if you work with models that have a relatively low # of parts/polygons (<1000) , then MOST modern CPUs (even those found on budget laptops or the most budget CPUs for desktops) will have ALL the clock speed you need for a fast workflow. Thus it makes sense to focus on multi-core performance for faster renderings and multitasking. 

B) If you work with models in the 10 000s of parts, then single-thread performance is CRITICAL for fast performance. In this scenario, you want to focus as MUCH as possible on buying the CPU with the highest clock speed you can afford. Also in this scenario, it is very unlikely you’ll render on the same machine due to time and hardware constraints.

C) If you render , run simulations or do FEA Analysis  FREQUENTLY, then you want to focus  on multithread performance and less (depending on how big your models are) on single-thread performance.

3D Animation & 3D Game Development

Focus on Single Thread performance after you have 8 cores

If you check the benchmarks above, you’ll notice nearly ALL the tasks in the animation proces: modeling, texturing, animating, viewport make FULL use of every thread in a CPU. Resources are nearly exhausted in every instance and this is because although the functions are parametric and by nature single-threaded, the textures & shaders that are CONSTANTLY rendered as you model and use viewport are multi-threaded.

Here’s the deal:

Based on my benchmarks, although all CPUs are exhausted whether you have 6-8 cores (12-16 threads) it seems that performance when modeling is all the same. Thus…

If you want to improve your workflow, you want to focus on single-thread performance and THEN consider number of threads mostly to improve viewport & rendering performance.

It is likely, you will use a render farm if your models are in the category of studio level projects. Thus it makes even more sense to focus on single-thread performance ESPECIALLY if you max out on a dedicated graphics FIRST (since this is where most of the viewport performance will be processed).

Video Editing

Single-thread Performance
The editing process consists importing, fixing audio, applying effects & transitions/cuts, previews, then final exporting.
You spend MOST of the time doing the editing. This is MOSTLY a single-threaded task. Thus you want to focus on Single-thread performance regardless of how complex/long your videos are. Rendering will be fast as long as you have 8 cores.

Music Production

Single-thread Performance

Music Production isn’t hardware demanding at all. Most functions are multi-threaded but they don’t take up much CPU resources (you can see above the graphs almost never go to 100%). Most tasks only use up 15-20% of the total power of each thread.

If anything, you may want to focus on single-thread performance. Since exporting/importing will be lightining fast more clock speed will slightly speed up the editing process.

Photo-Editing

Single-thread performance unless you work with LightRoom and Image organization software

Most of the photo editing process consists of well editing: applying effects, drawing, changing hue. colors, saturation, lightining, cropping, etc. These are all single-threaded applications in MOST photo editing software especially the Adobe Creative Suite.

However, Lightroom and several other photo editing software that FOCUS on applying changes on a collection of photos simultaneously are heavily multi-threaded. It’s not just the process of applying effects to a collection of photos but also a single photo (in the case of photo editing software outside the creative cloud).

Programming

Multi-thread performance is king

Most SIMPLE scripts are single-threaded due to the simplicity of most codes because they don’t require much CPU power to compile.

However, all projects ESPECIALLY software development can be made very multi-threaded. For example, if you separate several sections of your code into separate files. Each file can be compiled by one thread and this is what happens in most software projects especially those that are HARDWARE demanding.

Not only that…

In the age of data science and image processing, where most processes are EXTREMELY multi threaded to the point of having to use extra cores out of GPUs , multi-thread performance becomes KING.

Gaming

Single thread performance is KING

In theory, regardless of the game you play, gaming is multi-threaded since rendering sound, images, animations CAN be leveraged to other threads.
However, you will ALWAYS benefit from the CPU with the highest clock speed, especially now since most CPUs have at least 4-6 cores (8-12 threads) and the fact that games on average use ~6 cores (12 threads).
This is true EVEN if the game you play is very multithreaded such as OW2 , CyberPunk 2077, FPS games like CS:GO, etc. Why? Because you are more likely to be bottlenecked by the lack of clock speed (which is in charge of feeding the GPU data for image processing) than the number of threads.
If you want to know which games are MORE multi-threaded specifically and would like to see benchmarks of every game, please check out this post.

File/Format Conversion

This is either single-threaded or multi-threaded. Depending on the complexity of the file. For example, if you are just trying to change an mp3 to a .wav file, this isn’t hardware demanding at all and most (if not all) software will only need to use one thread. 
On the other hand, if you are converting formats for a video file. The higher the quality & size of the file, the longer it will take. Some software may use one thread but it is way more efficient to use all threads (or as many as possible). This is what most software for video format conversion do (Handbrake and MakeMKV) , they break up the file into different parts, change the format of each part then glue it all together.
If you are converting audio, single-threaded is all that matters (it will be fast even with slow CPUs). If you are converting high quality video files then you want to focus on multi-thread performance

Web Browsing

It can be very multi-threaded depending on the website.

For example, gaming websites and websites you have to interact with software or websites that have interactive multimedia functions might be multi-threaded.

However, thread-usage isn’t dramatic. Thus web browsing wil be fast with most CPUs….  besides from ARM & mobile chips which will be VERY slow even for single-threaded web browsing apps.

A much bigger bottleneck is internet connection since there’s lots of data packets being exchanged before a website/page needs is rendered.

 

Comments? 

If you have any questions suggestions or would like me to feature your own benchmark for a given software or game, let me know in the comments below.

Author Profile

Miguel Salas
Miguel Salas
I am physicist and electrical engineer. My knowledge in computer software and hardware stems for my years spent doing research in optics and photonics devices and running simulations through various programming languages. My goal was to work for the quantum computing research team at IBM but Im now working with Astrophysical Simulations through Python. Most of the science related posts are written by me, the rest have different authors but I edited the final versions to fit the site's format.

Miguel Salas

I am physicist and electrical engineer. My knowledge in computer software and hardware stems for my years spent doing research in optics and photonics devices and running simulations through various programming languages. My goal was to work for the quantum computing research team at IBM but Im now working with Astrophysical Simulations through Python. Most of the science related posts are written by me, the rest have different authors but I edited the final versions to fit the site's format.

Leave a Reply

Your email address will not be published. Required fields are marked *