Skip to content

MIOpen Logger to Driver Decoder for Convolutions

Daniel Lowell edited this page Apr 4, 2018 · 14 revisions

Example miopenConvolutionForward log:

miopenStatus_t miopenConvolutionForward(miopenHandle_t, const void*, miopenTensorDescriptor_t, const void*, miopenTensorDescriptor_t, const void*, miopenConvolutionDescriptor_t, miopenConvFwdAlgorithm_t, const void*, miopenTensorDescriptor_t, void*, void*, size_t){
alpha = 0x7ffd8b2cdd84
xDesc = 100, 3, 32, 32
x = 0x7f8e22e5b410
wDesc = 32, 3, 3, 3
w = 0x7f8e22e5b990
convDesc = 0, 0, 1, 1, 1, 1, 
algo = 1
beta = 0x7ffd8b2cdd88
yDesc = 100, 32, 30, 30
y = 0x7f8e22e8ff60
workSpace = 0x7f8e22e5ac70
workSpaceSize = 97200
}

The lines of interest are:

  • xDesc = 100, 3, 32, 32 == < n, c, H, W >
  • wDesc = 32, 3, 3, 3 == < k, c, y, x >
  • convDesc = 0, 0, 1, 1, 1, 1 == < p, q, u, v, l, j >

Example miopenConvolutionBackwardData log:

miopenStatus_t miopenConvolutionBackwardData(miopenHandle_t, const void*, miopenTensorDescriptor_t, const void*, miopenTensorDescriptor_t, const void*, miopenConvolutionDescriptor_t, miopenConvBwdDataAlgorithm_t, const void*, miopenTensorDescriptor_t, void*, void*, size_t){
alpha = 0x7ffd8b2cdd64
dyDesc = 100, 32, 30, 30
dy = 0x7f8e22e8fca0
wDesc = 32, 3, 3, 3
w = 0x7f8e22e5b990
convDesc = 0, 0, 1, 1, 1, 1, 
algo = 1
beta = 0x7ffd8b2cdd68
dxDesc = 100, 3, 32, 32
dx = 0x7f8e22e5b6d0
workSpace = 0x7f8e22e5a9b0
workSpaceSize = 345600
}

The lines of interest are:

  • dxDesc = 100, 3, 32, 32 == < n, c, H, W >
  • wDesc = 32, 3, 3, 3 == < k, c, y, x >
  • convDesc = 0, 0, 1, 1, 1, 1 == < p, q, u, v, l, j >

Example miopenConvolutionBackwardWeights log:

miopenStatus_t miopenConvolutionBackwardWeights(miopenHandle_t, const void*, miopenTensorDescriptor_t, const void*, miopenTensorDescriptor_t, const void*, miopenConvolutionDescriptor_t, miopenConvBwdWeightsAlgorithm_t, const void*, miopenTensorDescriptor_t, void*, void*, size_t){
alpha = 0x7ffd8b2cdd64
dyDesc = 100, 32, 30, 30
dy = 0x7f8e22e8fca0
xDesc = 100, 3, 32, 32
x = 0x7f8e22e5b410
convDesc = 0, 0, 1, 1, 1, 1, 
algo = 1
beta = 0x7ffd8b2cdd68
dwDesc = 32, 3, 3, 3
dw = 0x7f8e22e8f9e0
workSpace = 0x7f8e22e5a9b0
workSpaceSize = 345600
}

The lines of interest are:

  • xDesc = 100, 3, 32, 32 == < n, c, H, W >
  • dwDesc = 32, 3, 3, 3 == < k, c, y, x >
  • convDesc = 0, 0, 1, 1, 1, 1 == < p, q, u, v, l, j >

Once the values n, c, H, W, k, x, y, p, q, l, j have been extracted from the log as shown above, they can be plugged into the MIOpenDriver conv command line.

To run in 16-bit floating point precision replace conv with convfp16