sawickiap / D3d12info

A Windows console tool that prints all the information about the GPU extracted using DXGI and Direct3D 12
MIT License
94 stars 7 forks source link

Is the report of WAVE_MMA correct? #10

Closed xoofx closed 1 year ago

xoofx commented 1 year ago

Hey, I was looking at the D3D12 report of WMMA and noticed that the check is overriding the result for the following values:

https://github.com/sawickiap/D3d12info/blob/9b3d5db790958bbe9c705a884171d2aa46985e70/Src/Main.cpp#L985-L988

And I'm wondering why?, as it is hiding what exactly is reported by the check feature just before

For example, it would report this:

D3D12_FEATURE_DATA_WAVE_MMA:
----------------------------
InputDataType = D3D12_WAVE_MMA_INPUT_DATATYPE_BYTE, M = D3D12_WAVE_MMA_DIMENSION_16, N = D3D12_WAVE_MMA_DIMENSION_16:
    Supported = TRUE
    K = 10
    AccumDataTypes = 0x6
        D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT16
        D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT
    RequiredWaveLaneCountMin = 1
    RequiredWaveLaneCountMax = 2
InputDataType = D3D12_WAVE_MMA_INPUT_DATATYPE_FLOAT16, M = D3D12_WAVE_MMA_DIMENSION_16, N = D3D12_WAVE_MMA_DIMENSION_16:
    Supported = TRUE
    K = 10
    AccumDataTypes = 0x6
        D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT16
        D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT
    RequiredWaveLaneCountMin = 1
    RequiredWaveLaneCountMax = 2
InputDataType = D3D12_WAVE_MMA_INPUT_DATATYPE_FLOAT, M = D3D12_WAVE_MMA_DIMENSION_16, N = D3D12_WAVE_MMA_DIMENSION_16:
    Supported = TRUE
    K = 10
    AccumDataTypes = 0x6
        D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT16
        D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT
    RequiredWaveLaneCountMin = 1
    RequiredWaveLaneCountMax = 2

While If I remove the overrides, it reports this:

D3D12_FEATURE_DATA_WAVE_MMA:
----------------------------
InputDataType = D3D12_WAVE_MMA_INPUT_DATATYPE_BYTE, M = D3D12_WAVE_MMA_DIMENSION_16, N = D3D12_WAVE_MMA_DIMENSION_16:
    Supported = TRUE
    K = 16
    AccumDataTypes = 0x1
        D3D12_WAVE_MMA_ACCUM_DATATYPE_INT32
    RequiredWaveLaneCountMin = 32
    RequiredWaveLaneCountMax = 64
InputDataType = D3D12_WAVE_MMA_INPUT_DATATYPE_FLOAT16, M = D3D12_WAVE_MMA_DIMENSION_16, N = D3D12_WAVE_MMA_DIMENSION_16:
    Supported = TRUE
    K = 16
    AccumDataTypes = 0x2
        D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT16
    RequiredWaveLaneCountMin = 32
    RequiredWaveLaneCountMax = 64
InputDataType = D3D12_WAVE_MMA_INPUT_DATATYPE_FLOAT, M = D3D12_WAVE_MMA_DIMENSION_16, N = D3D12_WAVE_MMA_DIMENSION_16:
    Supported = TRUE
    K = 16
    AccumDataTypes = 0x4
        D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT
    RequiredWaveLaneCountMin = 32
    RequiredWaveLaneCountMax = 64

Can submit a small PR to fix it if you want.

sawickiap commented 1 year ago

OMG, I don't know how could I leave this code here 🤦‍♂️ It is a leftover from my early experiments. Thank you for finding this bug. I fixed it and created release 1.5.2.