Intel核显+host多线程+OpenCL问题

原创 2018年04月17日 16:15:36
之前Intel核显配置那篇时说过一个例子:

以前用AMD 560显卡时:CPU版本耗时约19s,OpenCL版本耗时约4.5s (单线程多线程均如此);我将这个例子直接移到(并没有改动)现在用的Intel skylake核显上:CPU版本耗时约17.3s(单线程多线程均是如此),单线程的OpenCL版本耗时约5s,但多线程的OpenCL版本竟然要38s~40s(但每个线程的结果有时会有数据异常,也就是结果不完全正确),有时更是会崩溃报错“double free or corruption 段错误吐核”!!!

大神告诉我几个可能的错误和建议:

(A) Kernel:你没有使用锁构成一个临界区保护kernel参数设定和启动,这个是不应当的。必须上临界区的。否则你可能导致各种莫名的错误。这是较小可能。   因为:是有些设备可以快速的接纳命令, 这样不完全的小区域, 在极短的时间内, 等于原子操作, 这样巧合的情况下可以无视锁,可以不用锁保护kernel,但有的设备也许接受命令较慢(并不一定是执行慢),这时候就需要锁了!这点是OpenCL手册强调的唯一一处host多线程不安全的地方了!让所有的host多个线程共享一个mutex(放在单例里),然后在kernel传参和启动时加上锁保护!!记住记住。这样就不再报莫名其妙的段错误或者数据异常了!但耗时却依旧要21秒左右 ?!!!!??我想要达到的效果是像以前AMD下一样单线程多线程OpenCL都是5秒。可是现在虽然不报错,但差得远?!

(B)Intel的核显,该显卡具有和其他普通显卡(A卡,N卡)不同的特性是, 它的一个EU,比A卡的一个CU能上的线程数量少的多的多。换句话说,小得多的kernel启动规模就能满载设备,不需要上12个host线程发布命令的。 建议改成2-3个线程足矣(这是为了能让你的一些操作步骤互相掩盖, 例如数据准备之类的)。请注意这不代表你的核显非常弱,反而说明了它更像CPU一点。

(C)如果代码不卡磁盘访问或者访存,请将CPU作为Device加入Context,Intel的平台这样用往往会有奇效(不一定)。 我的Intel核显有2个平台,其中平台Intel(R) OpenCL下 有2个devices:一个是GPU:Intel(R) HD Graphics  ;另一个是CPU:Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz  我如果将这些设备都利用起来,应该可以提高性能??多设备的例子我还没写过。

(D)最后。建议核显上不这样做(12个不同的buffers太多了),可以只上2-3个(刚才说过),或者还是12个, 但是将一个大buffer切分成多处(例如通过指定偏移量),这样你依然具有多个queues之间的数据操作和kernel计算的互相掩盖特性),同时还不至于在Intel的平台上造成失败之类的困难(相比A卡,N卡动辄GB级别的分配量,默认的Intel显卡只有MB级别的,稍微不注意就会失败。而切分公用,可以规避这一点)。



Intel核显--OpenCL环境--Linux

Machine :Intel Xeon i7 6700(core) + Intel HD Graphics 530(skyLake) +Linux (CentOS 7.2或7.3,我的7.3)+ecl...
  • wd1603926823
  • wd1603926823
  • 2018-01-23 14:44:46
  • 361

VPU?APU?GPU?折腾从AMD-GPU回到Intel核显+OpenCL+Linux环境搭建

大神说: 也就是说APU比较适合计算部分少,但传输耗时多的情况;而GPU相反。...
  • wd1603926823
  • wd1603926823
  • 2017-12-04 16:04:02
  • 319

openCl环境搭建及示例 及 Intel OpenCL debug

引用:http://bbs.csdn.net/topics/390899158(概念问题) http://blog.csdn.net/hermittt/article/details/50668850...
  • roslei
  • roslei
  • 2017-12-14 12:21:58
  • 429

适用于Win7系统下Intel 7代核心显卡驱动程序

7th Gen Intel(R) Core(TM) processor family (codename Kaby Lake) Microsoft Windows* 7-64
  • missangel
  • missangel
  • 2017-09-15 09:52:20
  • 9195

Opencl paltform id

通用的opencl platform id 获取方法通常是cl_int clGetPlatformIDs(cl_uint num_entries, cl_platform_id *platfo...
  • u013625961
  • u013625961
  • 2017-03-08 09:19:19
  • 572

英特尔核心显卡驱动 支持WinXP

  • 2015年02月04日 13:33
  • 22.91MB
  • 下载

Ubuntu 14.04 64bit上安装Intel官方集显更新驱动程序

说实在的,玩Linux现在唯一不爽的就是几个地方,网银支付,显卡
  • tao_627
  • tao_627
  • 2014-05-18 20:13:15
  • 10011

关于Intel核心显卡与NVIDIA独立显卡不能正常切换

最近新买个本本,装好系统后用某些驱动软件补了下驱动,然后进行优化,折腾了半天,后来lol,发现fps才30左右,某雷达悬浮窗一直显示核显,怎么设置独显都不能正常工作。 查度娘和远景都只说是N卡和核显是...
  • winyou2015
  • winyou2015
  • 2015-06-25 09:46:38
  • 9225

关于在集成显卡下使用OpenGL碰到的坑

集成显卡(Intel)驱动问题导致片元缺失 刚开始在公司入职的时候,办公电脑的只有集成显卡,并且集成显卡的驱动版本低,导致我渲染的第一个红色的三角形部分片元显示为黑色,像噪点一样,刚开始检查了很久还以...
  • qq_29523119
  • qq_29523119
  • 2017-08-10 04:31:54
  • 1084

Fedora 14(linux)下 Intel 核心显卡驱动安装说明

http://wenku.baidu.com/view/8ddbf9c6d5bbfd0a79567327.html     Fedora 14(linux)下 Intel 核心显卡驱动安装说明 ...
  • MM22GG
  • MM22GG
  • 2012-10-15 17:48:22
  • 1519
收藏助手
不良信息举报
您举报文章:Intel核显+host多线程+OpenCL问题
举报原因:
原因补充:

(最多只允许输入30个字)