sawickiap/D3d12info

Is the report of WAVE_MMA correct?

Closed this issue · 1 comments

xoofx commented

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

D3d12info/Src/Main.cpp

Lines 985 to 988 in 9b3d5db

data.K = 10;
data.AccumDataTypes = D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT | D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT16;
data.RequiredWaveLaneCountMin = 1;
data.RequiredWaveLaneCountMax = 2;

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.

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.