mirror of
https://github.com/opencv/opencv.git
synced 2026-07-31 08:13:04 +04:00
dnn(ocl4dnn): don't use getUMat()
especially in CPU only processing
This commit is contained in:
@@ -71,6 +71,9 @@ public:
|
||||
}
|
||||
|
||||
Mat scale, shift;
|
||||
#ifdef HAVE_OPENCL
|
||||
UMat umat_scale, umat_shift;
|
||||
#endif
|
||||
bool fuse_batch_norm;
|
||||
|
||||
Ptr<ReLULayer> activ_relu;
|
||||
@@ -105,6 +108,10 @@ public:
|
||||
for( i = 0; i < splitDim; i++ )
|
||||
newRows *= inputs[0].size[i];
|
||||
zeroDev = inputs[0].total() == newRows;
|
||||
#ifdef HAVE_OPENCL
|
||||
umat_scale.release();
|
||||
umat_shift.release();
|
||||
#endif
|
||||
}
|
||||
|
||||
virtual bool supportBackend(int backendId) CV_OVERRIDE
|
||||
@@ -118,8 +125,13 @@ public:
|
||||
#ifdef HAVE_OPENCL
|
||||
bool fast_forward_ocl(std::vector<UMat> &inputs, std::vector<UMat> &outputs)
|
||||
{
|
||||
UMat bnorm_weight = scale.empty() ? UMat() : scale.getUMat(ACCESS_READ);
|
||||
UMat bnorm_bias = shift.empty() ? UMat() : shift.getUMat(ACCESS_READ);
|
||||
if (umat_scale.empty() && !scale.empty())
|
||||
scale.copyTo(umat_scale);
|
||||
if (umat_shift.empty() && !shift.empty())
|
||||
shift.copyTo(umat_shift);
|
||||
UMat& bnorm_weight = umat_scale;
|
||||
UMat& bnorm_bias = umat_shift;
|
||||
|
||||
bool use_half = (inputs[0].depth() == CV_16S);
|
||||
String opts = format(" -DT=%s -DT4=%s -Dconvert_T=%s", use_half ? "half" : "float",
|
||||
use_half ? "half4" : "float4", use_half ? "convert_half4" : "convert_float4");
|
||||
@@ -177,6 +189,13 @@ public:
|
||||
|
||||
bool forward_ocl(InputArrayOfArrays inputs_, OutputArrayOfArrays outputs_, OutputArrayOfArrays internals_)
|
||||
{
|
||||
if (umat_scale.empty() && !scale.empty())
|
||||
scale.copyTo(umat_scale);
|
||||
if (umat_shift.empty() && !shift.empty())
|
||||
shift.copyTo(umat_shift);
|
||||
UMat& bnorm_weight = umat_scale;
|
||||
UMat& bnorm_bias = umat_shift;
|
||||
|
||||
std::vector<UMat> inputs;
|
||||
std::vector<UMat> outputs;
|
||||
|
||||
@@ -192,8 +211,6 @@ public:
|
||||
if (inputs[0].depth() == CV_16S)
|
||||
return false;
|
||||
|
||||
UMat bnorm_weight = scale.empty() ? UMat() : scale.getUMat(ACCESS_READ);
|
||||
UMat bnorm_bias = shift.empty() ? UMat() : shift.getUMat(ACCESS_READ);
|
||||
String opts = format(" -DT=float -DT4=float4 -Dconvert_T=convert_float4");
|
||||
|
||||
for (size_t inpIdx = 0; inpIdx < inputs.size(); inpIdx++)
|
||||
|
||||
Reference in New Issue
Block a user