InputArray matC, double beta, OutputArray _matD, int flags )
{
#ifdef HAVE_CLAMDBLAS
- CV_OCL_RUN(ocl::haveAmdBlas() && matA.dims() <= 2 && matB.dims() <= 2 && matC.dims() <= 2 && _matD.isUMat(),
- ocl_gemm(matA, matB, alpha, matC, beta, _matD, flags))
+ CV_OCL_RUN(ocl::haveAmdBlas() && matA.dims() <= 2 && matB.dims() <= 2 && matC.dims() <= 2 && _matD.isUMat() &&
+ matA.cols() > 20 && matA.rows() > 20 && matB.cols() > 20, // since it works incorrect for small sizes
+ ocl_gemm(matA, matB, alpha, matC, beta, _matD, flags))
#endif
const int block_lin_size = 128;
void generateTestData()
{
- Size ARoiSize = randomSize(1, MAX_VALUE);
+ // set minimum size to 20, since testing less sizes doesn't make sense
+ Size ARoiSize = randomSize(20, MAX_VALUE);
Border ABorder = randomBorder(0, use_roi ? MAX_VALUE : 0);
randomSubMat(A, A_roi, ARoiSize, ABorder, type, -11, 11);
if (atrans)
ARoiSize = Size(ARoiSize.height, ARoiSize.width);
- Size BRoiSize = randomSize(1, MAX_VALUE);
+ Size BRoiSize = randomSize(20, MAX_VALUE);
if (btrans)
BRoiSize.width = ARoiSize.width;
else