Jump to content

Hi,

 

A colleague of mine is currently running a science-related software that does some kind of "machine learning", "transfer learning with deep neural networks" and "training"... I have no idea what all this means yet...

Shame on me.

 

However, the developers say you can use it on your CPU and it will be slow, or on your Nvidia GPU (recommended 8GB of vRAM or more) and it will be much faster. And indeed it is.

 

Our systems runs on an 9900K with 32GB of 2800MHz DDR4 coupled to a GTX Titan X with 12GB of vRAM.

 

Now, when we launch the software and make it use the GPU for calculation, Task Manager tells us that only 7% of the GPU is used while ALL 12GB of the vRAM is used.

 

AFAIU our GPU has 3072 cores.

Does it uses all the cores all the time?

Can it use only some of the cores like CPUs do?

How can I know how many GPU cores are used at a given moment and at what level? In a way similar to the task manager that could show me what CPU cores run at 100% and what other cores are not used or run at lower levels...

 

Thank you very much in advance for your feedback.

 

Best,

-a-

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/
Share on other sites

Link to post
Share on other sites

In the gpu tab in taskmanager, you can click on the small arrows to change what is monitored. Probably atm the 3D compute load is being monitored, showing no to little load

MOTHERBOARD: ASRock H97 Pro4 CPU: Intel Core i5-4460 @3.30 Ghz Intel Xeon E3-1271v3 @4.00 Ghz RAM: 32Gb (4x8Gb) Kingstone HyperX Fury DDR3@1600 Mhz (9-9-9-27)

GPU: MSI 390 8Gb Gaming Edition PSU: XFX TS 650w Bronze Enermax Revolution D.F. 650w 80+ Gold MOUSE: Logitech G502 Proteus Spectrum KEYBOARD: Monokey Standard Suave Blue

STORAGE: SSD Samsung EVO 850 250Gb // HDD WD Green 1Tb // HDD WD Blue 4Tb // HDD WD Blue 160Gb CASE: Fractal Design Define R5 Windowed OS: Windows 11 Pro x64 Bit

MONITORS: Samsung CFG7 C24FG7xFQ @144hz // Samsung SyncMaster TA350 LT23A350 @60hz Samsung Odyssey G7 COOLER: Noctua NH-D15

 

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13953478
Share on other sites

Link to post
Share on other sites

While CPUs have many different types of processing units inside each core (for different workloads), GPU cores are essentially just ALUs (arithmetic logical units), good at crunching math and that's it.

 

14 minutes ago, asheenlevrai said:

Does it uses all the cores all the time?

You can check core usage for GPU for that, I dont know what OS you're on but you can bet on OC tools to monitor such thing

 

14 minutes ago, asheenlevrai said:

Can it use only some of the cores like CPUs do?

It can but GPU related tasks are heavily multithreaded. Otherwise why use a GPU at all, an individual GPU core is slower than a CPU core in tasks a GPU is good at.

 

14 minutes ago, asheenlevrai said:

How can I know how many GPU cores are used at a given moment and at what level? In a way similar to the task manager that could show me what CPU cores run at 100% and what other cores are not used or run at lower levels...

atm such thing doesnt exist to us. Maybe Nvidia/AMD use such thing internally but it's not publically available.

CPU: i7-2600K 4751MHz 1.44V (software) --> 1.47V at the back of the socket Motherboard: Asrock Z77 Extreme4 (BCLK: 103.3MHz) CPU Cooler: Noctua NH-D15 RAM: Adata XPG 2x8GB DDR3 (XMP: 2133MHz 10-11-11-30 CR2, custom: 2203MHz 10-11-10-26 CR1 tRFC:230 tREFI:14000) GPU: Asus GTX 1070 Dual (Super Jetstream vbios, +70(2025-2088MHz)/+400(8.8Gbps)) SSD: Samsung 840 Pro 256GB (main boot drive), Transcend SSD370 128GB PSU: Seasonic X-660 80+ Gold Case: Antec P110 Silent, 5 intakes 1 exhaust Monitor: AOC G2460PF 1080p 144Hz (150Hz max w/ DP, 121Hz max w/ HDMI) TN panel Keyboard: Logitech G610 Orion (Cherry MX Blue) with SteelSeries Apex M260 keycaps Mouse: BenQ Zowie FK1

 

Model: HP Omen 17 17-an110ca CPU: i7-8750H (0.125V core & cache, 50mV SA undervolt) GPU: GTX 1060 6GB Mobile (+80/+450, 1650MHz~1750MHz 0.78V~0.85V) RAM: 8+8GB DDR4-2400 18-17-17-39 2T Storage: HP EX920 1TB PCIe x4 M.2 SSD + Crucial MX500 1TB 2.5" SATA SSD, 128GB Toshiba PCIe x2 M.2 SSD (KBG30ZMV128G) gone cooking externally, 1TB Seagate 7200RPM 2.5" HDD (ST1000LM049-2GH172) left outside Monitor: 1080p 126Hz IPS G-sync

 

Desktop benching:

Cinebench R15 Single thread:168 Multi-thread: 833 

SuperPi (v1.5 from Techpowerup, PI value output) 16K: 0.100s 1M: 8.255s 32M: 7m 45.93s

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13953502
Share on other sites

Link to post
Share on other sites

15 minutes ago, Parideboy said:

In the gpu tab in taskmanager, you can click on the small arrows to change what is monitored. Probably atm the 3D compute load is being monitored, showing no to little load

We tried that.

3d show occasional spikes (rare) while copy shows a constant low level. Nothing in video encode/decode

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13953520
Share on other sites

Link to post
Share on other sites

18 minutes ago, asheenlevrai said:

We tried that.

3d show occasional spikes (rare) while copy shows a constant low level. Nothing in video encode/decode

click on "copy" or "3d" and such, you'll find way more options. Change one of them to "Cuda" and you should see the usage properly

CPU: i7-2600K 4751MHz 1.44V (software) --> 1.47V at the back of the socket Motherboard: Asrock Z77 Extreme4 (BCLK: 103.3MHz) CPU Cooler: Noctua NH-D15 RAM: Adata XPG 2x8GB DDR3 (XMP: 2133MHz 10-11-11-30 CR2, custom: 2203MHz 10-11-10-26 CR1 tRFC:230 tREFI:14000) GPU: Asus GTX 1070 Dual (Super Jetstream vbios, +70(2025-2088MHz)/+400(8.8Gbps)) SSD: Samsung 840 Pro 256GB (main boot drive), Transcend SSD370 128GB PSU: Seasonic X-660 80+ Gold Case: Antec P110 Silent, 5 intakes 1 exhaust Monitor: AOC G2460PF 1080p 144Hz (150Hz max w/ DP, 121Hz max w/ HDMI) TN panel Keyboard: Logitech G610 Orion (Cherry MX Blue) with SteelSeries Apex M260 keycaps Mouse: BenQ Zowie FK1

 

Model: HP Omen 17 17-an110ca CPU: i7-8750H (0.125V core & cache, 50mV SA undervolt) GPU: GTX 1060 6GB Mobile (+80/+450, 1650MHz~1750MHz 0.78V~0.85V) RAM: 8+8GB DDR4-2400 18-17-17-39 2T Storage: HP EX920 1TB PCIe x4 M.2 SSD + Crucial MX500 1TB 2.5" SATA SSD, 128GB Toshiba PCIe x2 M.2 SSD (KBG30ZMV128G) gone cooking externally, 1TB Seagate 7200RPM 2.5" HDD (ST1000LM049-2GH172) left outside Monitor: 1080p 126Hz IPS G-sync

 

Desktop benching:

Cinebench R15 Single thread:168 Multi-thread: 833 

SuperPi (v1.5 from Techpowerup, PI value output) 16K: 0.100s 1M: 8.255s 32M: 7m 45.93s

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13953593
Share on other sites

Link to post
Share on other sites

3 minutes ago, Jurrunio said:

click on "copy" or "3d" and such, you'll find way more options. Change one of them to "Cuda" and you should see the usage properly

Thanks a lot!

I didn't know I could do that.

I looked at all available options to monitor ant they are all close to 0 except "Compute_0" that is at 97% ("compute_1" is at 0%).

 

I'll look into what is Compute_0 and how it is different from Compute_1

 

Thanks again :)

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13953612
Share on other sites

Link to post
Share on other sites

1 hour ago, asheenlevrai said:

Thanks a lot!

I didn't know I could do that.

I looked at all available options to monitor ant they are all close to 0 except "Compute_0" that is at 97% ("compute_1" is at 0%).

 

I'll look into what is Compute_0 and how it is different from Compute_1

 

Thanks again :)

hmm so I guess it's not using CUDA but some other compute standard (like OpenCL and more) instead

CPU: i7-2600K 4751MHz 1.44V (software) --> 1.47V at the back of the socket Motherboard: Asrock Z77 Extreme4 (BCLK: 103.3MHz) CPU Cooler: Noctua NH-D15 RAM: Adata XPG 2x8GB DDR3 (XMP: 2133MHz 10-11-11-30 CR2, custom: 2203MHz 10-11-10-26 CR1 tRFC:230 tREFI:14000) GPU: Asus GTX 1070 Dual (Super Jetstream vbios, +70(2025-2088MHz)/+400(8.8Gbps)) SSD: Samsung 840 Pro 256GB (main boot drive), Transcend SSD370 128GB PSU: Seasonic X-660 80+ Gold Case: Antec P110 Silent, 5 intakes 1 exhaust Monitor: AOC G2460PF 1080p 144Hz (150Hz max w/ DP, 121Hz max w/ HDMI) TN panel Keyboard: Logitech G610 Orion (Cherry MX Blue) with SteelSeries Apex M260 keycaps Mouse: BenQ Zowie FK1

 

Model: HP Omen 17 17-an110ca CPU: i7-8750H (0.125V core & cache, 50mV SA undervolt) GPU: GTX 1060 6GB Mobile (+80/+450, 1650MHz~1750MHz 0.78V~0.85V) RAM: 8+8GB DDR4-2400 18-17-17-39 2T Storage: HP EX920 1TB PCIe x4 M.2 SSD + Crucial MX500 1TB 2.5" SATA SSD, 128GB Toshiba PCIe x2 M.2 SSD (KBG30ZMV128G) gone cooking externally, 1TB Seagate 7200RPM 2.5" HDD (ST1000LM049-2GH172) left outside Monitor: 1080p 126Hz IPS G-sync

 

Desktop benching:

Cinebench R15 Single thread:168 Multi-thread: 833 

SuperPi (v1.5 from Techpowerup, PI value output) 16K: 0.100s 1M: 8.255s 32M: 7m 45.93s

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13953975
Share on other sites

Link to post
Share on other sites

10 hours ago, asheenlevrai said:

AFAIU our GPU has 3072 cores.

Does it uses all the cores all the time?

Depends, but it likely does so.

Quote

Can it use only some of the cores like CPUs do?

Yes. In GPUs, there are tons of different units with smaller units inside those (like for nvidia, GPU > GPC > TPC > SM > Individual execution units, like a cuda or tensor core), which can be used to run different "tasks".

Quote

How can I know how many GPU cores are used at a given moment and at what level? In a way similar to the task manager that could show me what CPU cores run at 100% and what other cores are not used or run at lower levels...

You really can't. There's no publicly available tool for that.

 

9 hours ago, asheenlevrai said:

We tried that.

3d show occasional spikes (rare) while copy shows a constant low level. Nothing in video encode/decode

Try using nvidia-smi, it'll provide a better usage percentage.

 

As for the title question:

Quote

how do GPU cores work?

GPU cores consist of many small units capable of only doing simple tasks, as Jurrunio said, the catch is that it can do MANY small tasks at once, something that's called SIMD (single instruction, multiple data). Those units are akin to the ones used for AVX/SSE in modern CPUs.

 

The main difference between your regular CPU is that, while a CPU can easily do many different tasks, and easily do branching and whatnot, SIMD cores can only do a single task at a time, and are really dumb, so they can't do any branching or something like that. Where they excel at is when you give them a single that can be done in parallel over huge amounts of data at once, like for example, having 1000 8bytes numbers and multiplying all of them at ONCE by a constant or even another series of numbers. A CPU would need to step number by number to do something like that.

 

Here's a link that I really like about an optimization using SIMD. Since it may be quite complicated for most people, I leave those 2 gifs here that show the difference between regular serial execution in a CPU vs parallel execution with a SIMD unit:

 

spacer.png

spacer.png

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13955143
Share on other sites

Link to post
Share on other sites

14 hours ago, Jurrunio said:

hmm so I guess it's not using CUDA but some other compute standard (like OpenCL and more) instead

mmhh...

 

Why do you say it's not using CUDA? Excuse my ignorance here.

According to requirements the software uses CUDA and is not compatible with AMD GPUs

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13955854
Share on other sites

Link to post
Share on other sites

6 hours ago, igormp said:

Depends, but it likely does so.

Yes. In GPUs, there are tons of different units with smaller units inside those (like for nvidia, GPU > GPC > TPC > SM > Individual execution units, like a cuda or tensor core), which can be used to run different "tasks".

You really can't. There's no publicly available tool for that.

 

Try using nvidia-smi, it'll provide a better usage percentage.

 

As for the title question:

GPU cores consist of many small units capable of only doing simple tasks, as Jurrunio said, the catch is that it can do MANY small tasks at once, something that's called SIMD (single instruction, multiple data). Those units are akin to the ones used for AVX/SSE in modern CPUs.

 

The main difference between your regular CPU is that, while a CPU can easily do many different tasks, and easily do branching and whatnot, SIMD cores can only do a single task at a time, and are really dumb, so they can't do any branching or something like that. Where they excel at is when you give them a single that can be done in parallel over huge amounts of data at once, like for example, having 1000 8bytes numbers and multiplying all of them at ONCE by a constant or even another series of numbers. A CPU would need to step number by number to do something like that.

 

Here's a link that I really like about an optimization using SIMD. Since it may be quite complicated for most people, I leave those 2 gifs here that show the difference between regular serial execution in a CPU vs parallel execution with a SIMD unit:

 

spacer.png

spacer.png

Thank you so much for the detailed answer :)))

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13955856
Share on other sites

Link to post
Share on other sites

3 hours ago, asheenlevrai said:

bump :)

Do you know which software it is? If it's tensorflow, pytorch or the likes, it's using CUDA for sure since those frameworks don't support any other GPU API. It may be that the task manager is just misreporting.

 

Again, I'd recommend you to use nvidia-smi to get a better GPU usage info.

FX6300 @ 4.2GHz | Gigabyte GA-78LMT-USB3 R2 | Hyper 212x | 3x 8GB + 1x 4GB @ 1600MHz | Gigabyte 2060 Super | Corsair CX650M | LG 43UK6520PSA
ASUS X550LN | i5 4210u | 12GB
Lenovo N23 Yoga

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13965410
Share on other sites

Link to post
Share on other sites

On 8/28/2020 at 2:27 PM, igormp said:

Do you know which software it is? If it's tensorflow, pytorch or the likes, it's using CUDA for sure since those frameworks don't support any other GPU API. It may be that the task manager is just misreporting.

 

I believe it is tensorflow. I'll look into it

 

On 8/28/2020 at 2:27 PM, igormp said:

 

Again, I'd recommend you to use nvidia-smi to get a better GPU usage info.

Thanks. Will do :)

Link to comment
https://linustechtips.com/topic/1238136-how-do-gpu-cores-work/#findComment-13973513
Share on other sites

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

×