opencl问题:cpu多个线程同时对一个kernel的调用问题

xingtian19880101 2017-02-14 11:37:16
创建一个kernel,创建多个线程pthread_create(),每个线程创建一个clCreateCommandQueue(),这样模块就是多线程运行,每个线程有独立的command_queue,这样的模块对于opencl是否允许,当前测试确实是出问题了,单线程时输出数据正常,多线程时,数据出现不同程度的错误,整个流程都未加锁处理,求教各位大神!
...全文
3072 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
很郁闷找不到问题所在
  • 打赏
  • 举报
回复
我是CPU端开12个线程,每个线程都有自己的CommandQueue。在单例中创建好每个线程都会使用的一些buffer。。。百思不得其解,纠结是哪里的问题,而Intel核显的调试工具又不好搞!!!之前另一台电脑是AMD的显卡,普通版算法单线程多线程都测试通过;加速版算法单线程多线程下也测试通过。 但现在移到Intel核显上加速版的单线程竟然出了这个问题!
  • 打赏
  • 举报
回复
我也遇到了这个问题,一个算法程序单线程下和多线程下本来都是用C++写法(暂且称为普通版算法),几乎都是17.3秒;然后我将这个程序改成了OpenCL加速写法(暂且称为加速版算法),单线程的OpenCL加速多番测试通过平均耗时都是4.2秒左右;但多线程的OpenCL加速测试却是异常!?!!我看到报错是内存泄漏方面的问题,但是因为是Intel核显,不好调试,暂时定位不到具体位置。可是普通版算法我将单线程的改成多线程没问题;加速版算法我将单线程改成多线程怎么就有问题了呢?我用的线程池,都是同样将单线程改成多线程的啊?!!!
fanax 2017-03-31
  • 打赏
  • 举报
回复
用一个queue应该不会有问题
xingtian19880101 2017-02-14
  • 打赏
  • 举报
回复
单个线程同时进行4路编码,用同一个command_queue, 此情况下4个编码数据正常; n线程同时进行4*n编码,每个线程创建独立的command_queue,(注:是同一个kernel,)此情况下4*n个编码数据都异常, 整个流程没有加锁,目前不确定是什么原因,目前主要想了解,我的使用方法是不是对的?

2,408

社区成员

发帖
与我相关
我的任务
社区描述
高性能计算
社区管理员
  • 高性能计算社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧