Jump to content

Huge difference.

Hyper threading is having a single core do two operations at once (usually an integer and floating point operationg simultaneously) which allows it to basically "pretend" to be 2 cores (kind of).

Multi-threading is having a program utilize multiple cores to get things done far more efficiently. 

It's like comparing Shadowplay (Hyper threading) to Crossfire/SLI (Multi-threading). Kinda.

Shadowplay helps in only 1 situation (video recording) and for that it helps a lot, but it is fairly useless for anything else a GPU might do (mining, 3D rendering, etc). 

Crossfire/SLI makes almost anything your GPUs do much more powerful, unless that thing does not have a profile to use all of the horsepower (i.e. a game that doesn't have a profile such as GTA4 didn't at one point). 

But since many programs are not multi-threaded, they can't use multiple cores, but they can make use of Hyperthreading, even if they don't really benefit from it as long as they are Nvidia GPUs (since they are the only ones that have Shadowplay). Similar to how you only get Hyperthreading if you buy a certain CPU that supports it.

Hyperthreading tends to only really help in programs that actively use both Integer and Floating Point operations, such as video rendering and stuff like that while video games tend to use Integer operations a lot more than FP operations, so they benefit very little.

That's the difference effectively. You can't really directly compare Shadowplay and Crossfire/SLI to Hyperthreading and Multi-threading, but they are very similar comparisons, so I think it's a good analogy.

@WoodenMarker Does this all look right to you? I ask because of your knowledge on CPUs and how they interact with programs. Just making sure I didn't get something wrong from what I remember.

† Christian Member †

For my pertinent links to guides, reviews, and anything similar, go here, and look under the spoiler labeled such. A brief history of Unix and it's relation to OS X by Builder.

 

 

Link to post
Share on other sites

Multi-threading is making a program use multiple threads to complete a task.

Hyperthreading is intels name for making 2 threads per core in a processor,theoretically giving you twice the performance.

Linus Sebastian said:

The stand is indeed made of metal but I wouldn't drive my car over a bridge made of it.

 

https://youtu.be/X5YXWqhL9ik?t=552

Link to post
Share on other sites

Multithreading is just about having for each task a thread, nothing more. Don't confuse hardware threads with software threads though. A process that contains one thread would be singlethreaded and can only use one core, a process that contains two or more threads would be multithreaded could use two or more cores.

Hyperthreading is just to push much more out of your cpu within a single cycle, not letting thread 1 wait for thread 2 to finish etc. See it more as a bridge between thread#1 and thread#2 to execute them at the same time. The performance gain varies really, between a little bit to twice as much.
 

 

linus made a video about it.

Hyperthreading is not doing 2 things at once. Its taking advantage of waiting time for working on another thread.

No he is right.

If you have two instructions, one being an integer and one being floating point, that would be executed in 2 cycles so the 2nd instruction has to wait for the alu to finish the integer calc. If you have hyperthreading (requires atleast 2 threads) the integer and the floating point can be executed within a single cycle that would give you a 100% performance gain. That's why I'm calling this a bridge.

You can't even take advantage of Hyperthreading if you don't have two threads atleast.

 

Multithreading is term for putting workload in more threads

Bad explanation.

Link to post
Share on other sites

Like others have said, the two are very different things altogether.

 

Multithreading is a very interesting method of programming and one that we must fully adopt as cpu cores are not getting anymore powerful. Actually they are decreasing in raw power in the name of efficiency. So to make up for this programmers must developing multithreaded applications. The thing is, this is a hell of a lot easier said than done. Programmers have been trying to develop multithreaded programs for years now with only limited success. It can be done but it is extremely difficult to do. Multiple pathways through a program can mean weird things happen. In some cases it is almost necessary to develop the application single threaded first just so you know exactly how it should work and then try to develop the application to use multiple threads.

 

Have we any programmers here that work with multithreading? I am not a programmer but I want to do my thesis on it (not the programming, more the method). I am still in the beginning stages so tbh I know f*ck all about it really.

Rig: i7 2600K @ 4.2GHz, Larkooler Watercooling System, MSI Z68a-gd80-G3, 8GB G.Skill Sniper 1600MHz CL9, Gigabyte GTX 670 Windforce 3x 2GB OC, Samsung 840 250GB, 1TB WD Caviar Blue, Auzentech X-FI Forte 7.1, XFX PRO650W, Silverstone RV02 Monitors: Asus PB278Q, LG W2243S-PF (Gaming / overclocked to 74Hz) Peripherals: Logitech G9x Laser, QPad MK-50, AudioTechnica ATH AD700

Link to post
Share on other sites

linus made a video about it.

Hyperthreading is not doing 2 things at once. Its taking advantage of waiting time for working on another thread.

Multithreading is term for putting workload in more threads

No. 

<Google's Hyperthreading, in the defintion:

 

 

Hyper-threading is Intel's proprietary simultaneous multithreading implementation used to improve parallelization of computations performed on PC microprocessors.

Parallel. As in, "at the same time". 

See, technically you are right in that it utilizes Idle time to do this, but at the same time, you are wrong because it does indeed do 2 things at once. 

Each CPU core in an Intel CPU has an Integer core and a Floating Point core. One for each type of calculation that needs to be done. Normally, before HT existed, only one core could do something per Cycle. HT is getting rid of that constraint effectively making two specialized threads. Specialized means they can only do what they can do and nothing more, i.e. either Integer or Floating Point. So it's using the Idle time of the FP core to allow it to run more operations per second overall as a CPU core, but it's definitely doing 2 operations at a single cycle.

So unless you have a program utilizing both equivalently (i.e.50/50) or you are multi-tasking a lot, you won't see much benefit from HT. 

And from what I know, Video Games are heavy on Integer calculations and not so much on FP calculations, so you wouldn't get much benefit from HT with that. However, video encoding/recording is heavy on FP calculations (IIRC), so if you are recording gameplay videos, HT can help a bit.

† Christian Member †

For my pertinent links to guides, reviews, and anything similar, go here, and look under the spoiler labeled such. A brief history of Unix and it's relation to OS X by Builder.

 

 

Link to post
Share on other sites

And from what I know, Video Games are heavy on Integer calculations and not so much on FP calculations, so you wouldn't get much benefit from HT with that. However, video encoding/recording is heavy on FP calculations (IIRC), so if you are recording gameplay videos, HT can help a bit.

Theyre doing more FP calcs than integer thats why AMD lacks for gaming :P

Link to post
Share on other sites

Theyre doing more FP calcs than integer thats why AMD lacks for gaming :P

Ah, then reverse my statement. My bad. Working off memory from threads long since past.

† Christian Member †

For my pertinent links to guides, reviews, and anything similar, go here, and look under the spoiler labeled such. A brief history of Unix and it's relation to OS X by Builder.

 

 

Link to post
Share on other sites

linus made a video about it.

Hyperthreading is not doing 2 things at once. Its taking advantage of waiting time for working on another thread.

Multithreading is term for putting workload in more threads

@Vitalius I was going to say something similar to what GRRigger said.

No. 

Hyper-threading is Intel's proprietary simultaneous multithreading implementation used to improve parallelization of computations performed on PC microprocessors.

Parallel. As in, "at the same time". 

See, technically you are right in that it utilizes Idle time to do this, but at the same time, you are wrong because it does indeed do 2 things at once. 

Improving parallelization as in doing parallel tasks with HT improves over doing parallel tasks w/o HT.

As for the whole 'proprietary simultaneous multithreading implementation' thing, it can just mean 'how they make multiple threads'

 

As for how I'd (quite lazily) explain things to the OP:

Hyperthreading is using scheduling to attempt to do the work of 2 cores/threads on 1 core resulting performance that can vary anywhere between 1-2 cores w/o HT.

Multithreading is separating the load of a program into separate threads so that you can have the work be done by multiple cores/threads instead of one. 

If you ever need help with a build, read the following before posting: http://linustechtips.com/main/topic/3061-build-plan-thread-recommendations-please-read-before-posting/
Also, make sure to quote a post or tag a member when replying or else they won't get a notification that you replied to them.

Link to post
Share on other sites

well amd lacks in gaming for more than that reason haha :P

 

ti get it now, so theoretically there could be duble performance boost.

Great marketing that. 

"Theoretically". If only programs were ... well programmed to actively utilize it. Same thing with more cores. I'm really looking forward to future games that have Multi-core use built into them.

The reason why is because then the bottleneck goes back to being on the GPU, which means the GPU manufacturers will start making real performance increases and hopefully this "add one new GPU, everything else goes down a tier" will go away. Probably not, but I can hope.

@Vitalius I was going to say something similar to what GRRigger said.

Improving parallelization as in doing parallel tasks with HT improves over doing parallel tasks w/o HT.

As for the whole 'proprietary simultaneous multithreading implementation' thing, it can just mean 'how they make multiple threads'

 

As for how I'd (quite lazily) explain things to the OP:

Hyperthreading is using scheduling to attempt to do the work of 2 cores/threads on 1 core resulting performance that can vary anywhere between 1-2 cores w/o HT.

Multithreading is separating the load of a program into separate threads so that you can have the work be done by multiple cores/threads instead of one.

Huh. Well ignore me then.

† Christian Member †

For my pertinent links to guides, reviews, and anything similar, go here, and look under the spoiler labeled such. A brief history of Unix and it's relation to OS X by Builder.

 

 

Link to post
Share on other sites

Great marketing that. 

"Theoretically". If only programs were ... well programmed to actively utilize it. Same thing with more cores. I'm really looking forward to future games that have Multi-core use built into them.

Even if they are sexy multithreaded, you still see here and there cpu bottlenecks going. A 3770K@4.8GHz bottlenecks the crap out of 3 680's in Crysis 3 (youtube.com/watch?v=_hcuYiqib9I). Have even seen plenty of cpu bottlenecks in BF4 even with my 3930K so yeah, they'll be always crappy optimized and get with every new patch a bit less crappy.

Link to post
Share on other sites

You should also know that there is two types of multithreading. Task parallelism and data parallelism.

 

  • Task parallelism is where different jobs are programmed as different threads. For example, in a game, the AI and audio could be run on two separate threads.
  • Data parallelism is where one task is split over multiple cores. Take for example if you want to add the numbers 1+2+3+4+5+6+7+8. You could have core 1 (c1) add 1+2=m, (c2) add 3+4=n, (c3) add 5+6=j, (c4) add 7+8=k. Then (c1) add m+n, (c2) add j+k and then have (c1) add the final two values. This means that instead of taking 7 cpu cycles, it would only take 3 as m, n, j & k are all calculated in one cycle etc.

 

These are simple examples and could be slightly wrong but you get the gist.

Rig: i7 2600K @ 4.2GHz, Larkooler Watercooling System, MSI Z68a-gd80-G3, 8GB G.Skill Sniper 1600MHz CL9, Gigabyte GTX 670 Windforce 3x 2GB OC, Samsung 840 250GB, 1TB WD Caviar Blue, Auzentech X-FI Forte 7.1, XFX PRO650W, Silverstone RV02 Monitors: Asus PB278Q, LG W2243S-PF (Gaming / overclocked to 74Hz) Peripherals: Logitech G9x Laser, QPad MK-50, AudioTechnica ATH AD700

Link to post
Share on other sites

Hi all,

 

I want to know the difference between the two and the implications/outcomes from choosing one another.

 

Thanks in advance.

The easiest way to explain such a question would be as follows, one works at a hardware level and the other works at a software level.

 

Hyper-Threading is a hardware implementation allowing two logical processors per core to execute two threads at the same time.

 

Multi-Threading is a software implementation allowing the software to utilize more than one thread. Operating systems schedulers assign threads to cores. If you have a mult-core processor or a processor that supports Hyper-Threading, you can start to understand how this is beneficial.

 

How do they correlate? Simple, as stated above a multi-threaded application will only gain an ever so slight benefit unless the processor has multiple cores, or Hyper-Threading.

Link to post
Share on other sites

Thanks guys.

one follow up.

How does the end user perceive the different processing methods? A gamer, a PS expert, a AutoCAD expert, an stock trader, programmer that builds massive simulation models?

They are not different processing methods--they are not different ways to do a similar task.

Hyperthreading is the scheduling of processes so that a core can be better utilized and work as 2 threads.

Multithreading is the separation of a task into multiple threads.

If you ever need help with a build, read the following before posting: http://linustechtips.com/main/topic/3061-build-plan-thread-recommendations-please-read-before-posting/
Also, make sure to quote a post or tag a member when replying or else they won't get a notification that you replied to them.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×