GPUOpen-LibrariesAndSDKs / cpu-core-counts

A sample demonstrating how to correctly detect physical core and logical processor counts on AMD processors.
MIT License
55 stars 13 forks source link

Question regarding Bulldozer check #5

Closed AniLeo closed 3 years ago

AniLeo commented 3 years ago

https://github.com/GPUOpen-LibrariesAndSDKs/cpu-core-counts/blob/7c2329aa7109c4d26f83d44f9a422524a63dac82/windows/ThreadCount-Win7.cpp#L76

Why is this check here? Physical and logical threads are always equal regardless of Bulldozer CPU. So you have FX-4000 series which is 4C/4T, FX-6000 series which is 6C/6T and FX-8000 series which is 8T/8T. The Bulldozer based Opteron CPUs also report the same amount of physical cores as logical ones.

The module based architecture where 2 cores are grouped on 1 module sharing one FPU (2 integer cores for 1 floating point unit) does not affect the reported physical or logical cores.

The output of this function would be exactly the same if you just remove this check, why was it even added in the first place?

https://gpuopen.com/wp-content/uploads/2018/05/gdc_2018_sponsored_optimizing_for_ryzen.pdf

Page 25 here even says "Bulldozer is not a SMT design"

git42leech commented 3 years ago

Fair enough, that manual is older than the commit.

EB 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08

AniLeo commented 3 years ago

How is the manual older? The function is from 2017, the manual indicates being from March 2018.

Also why that hex string?

AniLeo commented 3 years ago

That makes sense, is it related to the core parking issue on early versions of Windows 7?

Do you happen to know which was the update that fixed it?

AniLeo commented 3 years ago

Thanks, closing as solved then