OpenCV Blender causes CL_BUILD_PROGRAM_FAILURE

OpenCV Blender causes CL_BUILD_PROGRAM_FAILURE

本文关键字:BUILD FAILURE PROGRAM CL Blender causes OpenCV      更新时间:2023-10-16

就在今天之前,我使用的MultiBandBlender按预期运行。

在不更改代码的情况下,现在 Blender 类的每个成员函数都会返回 OpenCL CL_BUILD_PROGRAM_FAILURE消息。

示例代码:

detail::MultiBandBlender _blender;
_blender.prepare(Rect(0, 0, _img1.size().width, _img1.size().height));
_blender.feed(_img1, _mask_1, Point(0, 0));
_blender.feed(_img2, _mask_2, Point(0, 0));
_blender.blend(_blended_img, blended_mask);

端子输出:

OpenCL program build log: core/copyset
Status -11: CL_BUILD_PROGRAM_FAILURE
-D dstT=uchar4 -D rowsPerWI=1 -D dstST=uchar4 -D dstT1=uchar -D cn=4
OpenCL program build log: core/copymakeborder
Status -11: CL_BUILD_PROGRAM_FAILURE
-D T=uchar3 -D BORDER_REFLECT -D T1=uchar -D cn=3 -D ST=uchar4 -D rowsPerWI=1
OpenCL program build log: imgproc/pyr_down
Status -11: CL_BUILD_PROGRAM_FAILURE
-D T=uchar3 -D FT=float3 -D convertToT=convert_uchar3_sat_rte -D convertToFT=convert_float3 -D DOUBLE_SUPPORT -D T1=uchar -D cn=3 -D kercn=1 -D fdepth=5 -D BORDER_REFLECT_101 -D LOCAL_SIZE=256
OpenCL program build log: imgproc/pyr_up
Status -11: CL_BUILD_PROGRAM_FAILURE
-D T=uchar3 -D FT=float3 -D convertToT=convert_uchar3_sat_rte -D convertToFT=convert_float3 -D DOUBLE_SUPPORT -D T1=uchar -D cn=3 -D LOCAL_SIZE=16
OpenCL program build log: core/arithm
Status -11: CL_BUILD_PROGRAM_FAILURE
-D BINARY_OP -D OP_SUB -D srcT1=uchar -D srcT1_C1=uchar -D srcT2=uchar -D srcT2_C1=uchar -D dstT=short -D DEPTH_dst=3 -D dstT_C1=short -D workT=int -D workST=int -D scaleT=int -D wdepth=4 -D convertToWT1=convert_int -D convertToWT2=convert_int -D convertToDT=convert_short_sat -D DOUBLE_SUPPORT -D cn=1 -D rowsPerWI=1 -D convertFromU=noconvert
OpenCL program build log: core/convert
Status -11: CL_BUILD_PROGRAM_FAILURE
-D srcT=uchar -D WT=float -D dstT=short -D convertToWT=convert_float -D convertToDT=convert_short_sat_rte -D DOUBLE_SUPPORT -D NO_SCALE
OpenCL program build log: core/convert
Status -11: CL_BUILD_PROGRAM_FAILURE
-D srcT=uchar -D WT=float -D dstT=float -D convertToWT=convert_float -D convertToDT=noconvert -D DOUBLE_SUPPORT
OpenCL program build log: core/copymakeborder
Status -11: CL_BUILD_PROGRAM_FAILURE
-D T=int -D BORDER_CONSTANT -D T1=int -D cn=1 -D ST=int -D rowsPerWI=1
OpenCL program build log: imgproc/pyr_down
Status -11: CL_BUILD_PROGRAM_FAILURE
-D T=float -D FT=float -D convertToT=noconvert -D convertToFT=noconvert -D DOUBLE_SUPPORT -D T1=float -D cn=1 -D kercn=1 -D fdepth=5 -D BORDER_REFLECT_101 -D LOCAL_SIZE=256
OpenCL program build log: stitching/multibandblend
Status -11: CL_BUILD_PROGRAM_FAILURE
-D DEFINE_feed -D src_T=short3 -D src_T1=short -D src_CN=3 -D src_TSIZE=6 -D src_T1SIZE=2 -D src_DEPTH=3 -D weight_T=float -D weight_T1=float -D weight_CN=1 -D weight_TSIZE=4 -D weight_T1SIZE=4 -D weight_DEPTH=5 -D dst_T=short3 -D dst_T1=short -D dst_CN=3 -D dst_TSIZE=6 -D dst_T1SIZE=2 -D dst_DEPTH=3 -D dstWeight_T=float -D dstWeight_T1=float -D dstWeight_CN=1 -D dstWeight_TSIZE=4 -D dstWeight_T1SIZE=4 -D dstWeight_DEPTH=5
OpenCL program build log: stitching/multibandblend
Status -11: CL_BUILD_PROGRAM_FAILURE
-D DEFINE_normalizeUsingWeightMap -D mat_T=short3 -D mat_T1=short -D mat_CN=3 -D mat_TSIZE=6 -D mat_T1SIZE=2 -D mat_DEPTH=3 -D weight_T=float -D weight_T1=float -D weight_CN=1 -D weight_TSIZE=4 -D weight_T1SIZE=4 -D weight_DEPTH=5
OpenCL program build log: imgproc/pyr_up
Status -11: CL_BUILD_PROGRAM_FAILURE
-D T=short3 -D FT=float3 -D convertToT=convert_short3_sat_rte -D convertToFT=convert_float3 -D DOUBLE_SUPPORT -D T1=short -D cn=3 -D LOCAL_SIZE=16
OpenCL program build log: core/arithm
Status -11: CL_BUILD_PROGRAM_FAILURE
-D BINARY_OP -D OP_ADD -D srcT1=short2 -D srcT1_C1=short -D srcT2=short2 -D srcT2_C1=short -D dstT=short2 -D DEPTH_dst=3 -D dstT_C1=short -D workT=int2 -D workST=int2 -D scaleT=int -D wdepth=4 -D convertToWT1=convert_int2 -D convertToWT2=convert_int2 -D convertToDT=convert_short2_sat -D DOUBLE_SUPPORT -D cn=2 -D rowsPerWI=1 -D convertFromU=noconvert
OpenCL program build log: core/arithm
Status -11: CL_BUILD_PROGRAM_FAILURE
-D UNARY_OP -D srcT1=float -D dstT=uchar -D DEPTH_dst=0 -D workT=srcT1 -D cn=1 -D convertToDT=convert_uchar_sat_rte -D OP_CMP -D CMP_OPERATOR=> -D srcT1_C1=float -D srcT2_C1=float -D dstT_C1=uchar -D workST=float -D rowsPerWI=1 -D DOUBLE_SUPPORT
OpenCL program build log: core/arithm
Status -11: CL_BUILD_PROGRAM_FAILURE
-D UNARY_OP -D srcT1=uchar -D dstT=uchar -D DEPTH_dst=0 -D workT=srcT1 -D cn=1 -D convertToDT=noconvert -D OP_CMP -D CMP_OPERATOR=== -D srcT1_C1=uchar -D srcT2_C1=uchar -D dstT_C1=uchar -D workST=uchar -D rowsPerWI=1 -D DOUBLE_SUPPORT

最奇怪的是搅拌机仍然工作。只是它现在运行得更慢(25 毫秒到 50 毫秒(,并且显示CL_BUILD_PROGRAM_FAILURE消息。

我在这个远程 Linux 服务器上工作,所以也许有人改变了一些东西。我重建了OpenCV(版本3.4.9和4.2.0(,尝试使用GPU,OpenCL消息仍然存在。

这是怎么回事?

错误似乎来自缺少libnvidia-compiler.so.2.您可以尝试通过重新安装 CUDA 来修复它以恢复nvidia 440. 编译器将回到/usr/lib/nvidia-440/libnvidia-compiler.so