社区
高性能计算
帖子详情
opencl问题:cpu多个线程同时对一个kernel的调用问题
xingtian19880101
2017-02-14 11:37:16
创建一个kernel,创建多个线程pthread_create(),每个线程创建一个clCreateCommandQueue(),这样模块就是多线程运行,每个线程有独立的command_queue,这样的模块对于opencl是否允许,当前测试确实是出问题了,单线程时输出数据正常,多线程时,数据出现不同程度的错误,整个流程都未加锁处理,求教各位大神!
...全文
3074
5
打赏
收藏
opencl问题:cpu多个线程同时对一个kernel的调用问题
创建一个kernel,创建多个线程pthread_create(),每个线程创建一个clCreateCommandQueue(),这样模块就是多线程运行,每个线程有独立的command_queue,这样的模块对于opencl是否允许,当前测试确实是出问题了,单线程时输出数据正常,多线程时,数据出现不同程度的错误,整个流程都未加锁处理,求教各位大神!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
元气少女缘结神
2018-04-16
打赏
举报
回复
很郁闷找不到问题所在
元气少女缘结神
2018-04-16
打赏
举报
回复
我是CPU端开12个线程,每个线程都有自己的CommandQueue。在单例中创建好每个线程都会使用的一些buffer。。。百思不得其解,纠结是哪里的问题,而Intel核显的调试工具又不好搞!!!之前另一台电脑是AMD的显卡,普通版算法单线程多线程都测试通过;加速版算法单线程多线程下也测试通过。 但现在移到Intel核显上加速版的单线程竟然出了这个问题!
元气少女缘结神
2018-04-16
打赏
举报
回复
我也遇到了这个问题,一个算法程序单线程下和多线程下本来都是用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个编码数据都异常, 整个流程没有加锁,目前不确定是什么原因,目前主要想了解,我的使用方法是不是对的?
GDB 调试 Linux C / C++
# 论 调试能力在开发程序中的重要性 调试是开发流程中
一个
非常重要的环境,每个程序员都应具备调试代码的能力,尤其对于从事 Linux C/C++ 开发的用户,必须具备熟练使用 GDB 调试器的能力。俗话说你有十分技能,那么其中包含了六分开发能力和四分调试能力。这套 GDB 入门视频教程能够做到深入浅出,让同学们能够快速学会使用 GDB 调试程序。# GDB 简介 GNU symbolic debugger,简称GDB 调试器,是 Linux 平台下最常用的一款程序调试器。GDB 编译器通常以 gdb 命令的形式在终端(Shell)中使用,它有很多选项,这是我们要重点学习的。 发展至今,GDB 调试器已经对 C、C++、Go、Objective-C、
OpenCL
、Ada 等多种编程语言提供了支持。实际场景中,GDB 更常用来调试 C 和 C++ 程序,虽然 Linux 平台下有很多能编写 C、C++ 代码的集成开发工具(IDE),但它们调试代码的能力往往都源自 GDB 调试器。
神经网络变得轻松:
OpenCL
中的多
线程
计算
在之前的文章中,我们讨论过某些类型的神经网络实现。如您所见,神经网络由大量相同类型的神经元组成,并在其中执行相同的操作。然而,网络拥有的神经元越多,它消耗的计算资源也就越多。结果就是,训练神经网络所需的时间呈指数增长,这是因为在隐藏层添加
一个
神经元,需要了解上一层和下一层中所有神经元的连接。有一种减少神经网络训练时间的方法。现代计算机的多
线程
功能可以同时计算
多个
神经元。由于
线程
数量的增加,时间将可预见地大大减少。
OpenCL
多次循环执行内核的
一个
简单样例
由于对
OpenCL
初学者而言可能比较普遍,因此我这里给出
一个
清晰简单的demo来掩饰如何简单又高效地执行循环执行
OpenCL
内核。 以下程序的大概意思与流程是: 内核程序含有两个参数,第
一个
参数既是输入又是输出,第二个参数仅仅用于输入。不过第
一个
参数只对其初始化一次,而第二个参数在每次循环执行新一次的内核程序前会再传递一次数据。这么做有助于同学更好地去理解、把握存储器对象的基本使用方法。 ...
神经网络变得轻松(第五部分):
OpenCL
中的多
线程
计算
概述在之前的文章中,我们讨论过某些类型的神经网络实现。 如您所见,神经网络由大量相同类型的神经元组成,并在其中执行相同的操作。 然而,网络拥有的神经元越多,它消耗的计算资源也就越多。 结果就是,训练神经网络所需的时间呈指数增长,这是因为在隐藏层添加
一个
神经元,需要了解上一层和下一层中所有神经元的连接。 有一种减少神经网络训练时间的方法。 现代计算机的多
线程
功能可以同时计算
多个
神经元。 由于
线程
数量的增加,时间将可预见地大大减少。 1. MQL5 中如何组织多
线程
计算MetaTrader 5 终端具有多
线程
体
OpenCL
第10课:
kernel
,work_item和workgroup
转载自:http://www.cmnsoft.com/wordpress/?p=1429 前几节我们一起学习了几个用OPENCL完成任务的简单例子,从这节起我们将更详细的对OPENCL进行一些“理论”学习。
kernel
:是指
一个
用
opencl
c语言编写的、代表
一个
单一执行实例的代码单元。
opencl
c语言看起来跟C语言函数非常相像,都有
一个
参数列表“局部”变量定义和标准控制流结构。...
高性能计算
2,408
社区成员
1,024
社区内容
发帖
与我相关
我的任务
高性能计算
高性能计算
复制链接
扫一扫
分享
社区描述
高性能计算
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章