会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
孟祥度的博客
这是人生的转折点,通向一个新世界
博客园
首页
新随笔
联系
订阅
管理
2026年1月16日
OpenCL实现的归并排序(二)
摘要: 本文给出一个归并排序算法的例子。本例子支持任意数量元素的数组。代码是从DeepSeek上得到的,只是把C语言的OpenCL库换成了C++版的。这个版本是上个版本的优化版,因为上个版本的一个GPU线程处理一对有序子数组的合并,所以在反复合并几次后线程数会越来越少导致加速效果不好。从代码上可以看出上一版
阅读全文
posted @ 2026-01-16 14:06 兜尼完
阅读(2)
评论(0)
推荐(0)
2026年1月15日
OpenCL实现的归并排序(一)
摘要: 本文给出一个归并排序算法的例子。本例子支持任意数量元素的数组。代码是从DeepSeek上得到的,只是把C语言的OpenCL库换成了C++版的。归并排序是通过两个有序子数组之间不断地合并实现的。从1个元素的两个子数组开始合并,然后是2个元素的两个子数组合并,然后是4个元素的两个子数组合并……直到最后把
阅读全文
posted @ 2026-01-15 13:55 兜尼完
阅读(2)
评论(0)
推荐(0)
2025年11月3日
OpenCL规约求和方法
摘要: 本文给出一个规约算法求数组的和的例子。本例子求128128个整数的和。运算过程是每个工作组先把数据加载到局部内存中,工作组的大小是64,如果你的电脑支持更多也可以设置的更大一些,然后再求和,把结果放到到全局内存中。由于OpenCL没有全局内存的内存屏障,所以只能用CPU端同步全局内存。即每计算一次就
阅读全文
posted @ 2025-11-03 09:50 兜尼完
阅读(13)
评论(0)
推荐(0)
2025年3月11日
基于Qt的信号量的使用
摘要: 下面是用两个线程,一个是生产者不断地产生数据,另一个则不断消耗数据。这个例子可以很好的演示生产者/消费者模型。如果不是软件专业的不明白,可以搜一搜PV操作,做一做练习题很快就明白了。由于C++在C++20之后才提供信号量类型,所以这里没用标准库函数,测试环境是Qt5.9和VS2019。 Misc.h
阅读全文
posted @ 2025-03-11 11:30 兜尼完
阅读(94)
评论(0)
推荐(0)
2025年2月21日
图像二值化的指令集加速例子(二)
摘要: 以下代码基于VS2019和OpenCV430,CPU型号是Intel Core i5-7400。功能是对图像进行二值化。经过我的苦思冥想找到了比第一篇文章更好的方法,既简单又好用。在我这个电脑的测试下几乎总比OpenCV快,不同电脑的测试结果可能不同知悉。如果想继续提升效率,可以用OpenCV的pa
阅读全文
posted @ 2025-02-21 10:02 兜尼完
阅读(60)
评论(0)
推荐(0)
2024年6月24日
OpenCL中的子缓冲区例子
摘要: 子缓冲区可以把一组数据拆分成多个部分,然后每个部分送到不同的设备上运行。这里将给出一个例子,代码的运行环境是VS2015、OpenCL3,显卡是AMD A4处理器的核芯显卡和另一个AMD的入门级独立显卡。CPP文件如下: string kernelStr = u8R"( kernel void ad
阅读全文
posted @ 2024-06-24 08:57 兜尼完
阅读(84)
评论(0)
推荐(0)
2024年6月23日
OpenCL中的SVM使用案例
摘要: SVM(共享虚拟内存)是为了解决向显卡传输数据中包含指针的问题。此时仅用cl::Buffer拷贝数据是不够的,因为数据中的指针会因为拷贝变成野指针。这就需要SVM的帮助,它可以保证数据中的指针到达GPU后仍然可以使用。这里给出一个计算单向链表中数字的和的例子。代码运行环境是VS2017,OpenCL
阅读全文
posted @ 2024-06-23 13:55 兜尼完
阅读(215)
评论(0)
推荐(0)
2024年6月19日
OpenCL中局部内存和全局内存间的异步复制
摘要: 本文主要是async_work_group_copy(...)和wait_group_events(...)的使用范例。展示了从全局内存到局部内存加载数据和从局部内存到全局内存写入数据。这系列内置函数可以用来取代直接赋值式的代码。不过我没有仔细对比过使用异步复制和直接赋值那个效率更高。此系列函数中还
阅读全文
posted @ 2024-06-19 15:38 兜尼完
阅读(169)
评论(0)
推荐(0)
2024年6月6日
OpenCL中的管道cl::Pipe的使用
摘要: 本例只是其中一个简单的使用,在OpenCL中操作管道的函数有很多,这里只用了其中2个读写函数。此例功能是计算12800个整数的积的和。例子不是很好但我实在想不到实用的例子了,因为我做图像处理方面的应用用不到管道来传递数据。代码如下,这里不和CPU处理时间进行比较,这种简单的运算一般是CPU更快。程序
阅读全文
posted @ 2024-06-06 20:59 兜尼完
阅读(64)
评论(0)
推荐(0)
2024年4月21日
使QOpenGLWidget的背景透明
摘要: 方法其实Qt帮助文档已经说了,如下图。大意是如果你想让QOpenGLWidget下方的子Widget可见只需要设置Qt::WA_AlwaysStackOnTop属性就行了;如果QOpenGLWidget下方没有子Widget,只是想创建一个半透明的窗口,那么对顶层窗口(主窗口)使用传统的Qt::WA
阅读全文
posted @ 2024-04-21 15:38 兜尼完
阅读(1009)
评论(0)
推荐(0)
下一页