• 【记录一个问题】android opencl c++: 不要Context, CommandQueue类的赋值函数


    一开始代码中这样写了:
    cl::Context ctx = cl::Context(CL_DEVICE_TYPE_GPU, NULL);
    cl::CommandQueue queue= cl::CommandQueue(ctx, devices[device_index],
    CL_QUEUE_PROFILING_ENABLE, &err);

    运行时发现运行正常,但是始终无法得到正确的结果。

    找了另一个正常的例子逐个替换对象,最终发现这两个对象上面的赋值函数导致了问题。
    因此,除非看了源码确认可以这么用,否则还是应该避免对象的值拷贝或者使用赋值函数。
    很可能新对象虽然得到了所有内容,但是老对象析构后又导致新对象指向的内容出错。

    修改为以下代码后正常:
    cl::Context* ctx = new cl::Context(CL_DEVICE_TYPE_GPU, NULL);
    cl::CommandQueue* queue = new cl::CommandQueue(ctx, devices[device_index],
    CL_QUEUE_PROFILING_ENABLE, &err);

  • 相关阅读:
    Web后门工具WeBaCoo
    苹果内存取证工具volafox
    PlayMaker GUI的Normalized
    Arduino可穿戴教程之第一个程序——选择端口(三)
    缩略图信息提取工具vinetto
    jquery的defer
    toDo
    瀑布流案例
    js基本知识6
    js基本知识5
  • 原文地址:https://www.cnblogs.com/ahfuzhang/p/11605057.html
Copyright © 2020-2023  润新知