草庐IT

c++ - OpenCL 速度和浮点精度

我刚刚开始使用OpenCL。但是,我发现OpenCl有一些奇怪的行为,我无法理解。我构建和测试的来源是http://www.codeproject.com/Articles/110685/Part-1-OpenCL-Portable-Parallelism.我有一个ATIRadeonHD4770和一个AMDFx62003.8ghz6核cpu。速度首先速度与最大工作组项目数不是线性关系。我运行Appprofiler来分析内核执行期间花费的时间。结果有点震惊,我的GPU每组只能处理256个工作项,用了2.23008毫秒来计算5079040个数字的平方。请注意,这没有考虑内核加载时间....

c# - OpenCL 和 GPU 编程路线图

我想开始声明我对OpenCL/GPU编程一无所知,但我是一名高级C#(通用.Net)程序员,不惧怕C++,我想学习OpenCL/GPU编程...我的问题是...我从哪里开始?!?我应该下载什么?!?有没有办法在VisualStudio(在C#上)上对OpenCL/GPU进行编程!?!就像...HelloWorld的东西...谢谢 最佳答案 我找到的最好的网站是这个网站,它清楚地介绍了GPU编程与CPU编程的不同之处:http://www.macresearch.org/opencl尽管这些视频展示了NVIDIA风格的卡片,但重要的概

c++ - 在 Mac OS X 上安装 OpenCV 3 作为框架

我想使用OpenCV在OSXElCapitan上制作一个应用程序。我决定使用最新版本,即2015年6月4日发布的3.0.0版。我使用brew安装了2.4.x版,但由于第3版现在有一个构建框架的osx构建脚本,我想使用它方法。从OpenCV.org下载版本3后,我在opencv-3.0.0目录中打开一个终端窗口并执行build_framework.py脚本,如下所示:平台/osx/build_framework.pyosx(osx参数告诉脚本创建一个名为osx的目录以在那里输出框架)一切顺利构建,因此我将osx目录中构建的框架添加到我的项目中。令我惊讶的是,我的项目无法正常构建。首先是以

c++ - 适用于 Windows 和 Linux 的 OpenCL 程序中的 GCN ISA 程序集

我需要为AMDGPU优化OpenCL程序。我想尝试在GCNISA汇编中重写一些核心OpenCL内核,但我必须同时支持Windows和Linux。我找到了ROCm平台,它看起来可以为Linux完成工作,但不支持Windows。是否有我可以用来完成此任务的工具链? 最佳答案 是的,RGA(RadeonGPUAnalyzer)正是您要找的。Version1.4该产品的一部分在AMD基于LLVM的Lightning编译器(用于ROCm平台的OpenCL编译器)之上增加了对OpenCL的支持。Version2.0添加了图形用户界面。RGA充当

c++ - OpenCL 中复杂数学问题的开源库,如 Matrix Mul、LU、FFT 等

GPU在通用中的使用现在很普遍。最基本的是,矩阵乘法是OpenCL教程中的第一个。而不是针对特定的gpu编写代码和内核代码。是否可以从MKL之类的库中调用它们。Arrayfire在那里但不是免费的。我正在尝试将我的模拟软件移植到具有MatrixMul、LU分解、FFT等的GPU。我正在为这些寻找健壮的代码,而不是从头开始编写它们。我已经有了一个可用的matmulopencl程序,但只是缺乏将它与我的代码集成的知识。下一步我正在尝试使用LU,是否有任何LU代码可以帮助我。 最佳答案 查看ViennaCLhttp://viennacl.

c++ - OpenCL/OpenGL 纹理互操作/windows 的问题

为了提高渲染质量,我在OpenCL1.1中编写了一个多功能的可分离降频器。基本图像(仅覆盖最终图像的一小部分)被渲染到一个非常大的帧缓冲区中。然后它的颜色附加纹理被下采样并通过OpenCL放置到另一个纹理中。最后渲染一个屏幕对齐的四边形以显示结果。到目前为止的想法。我们有什么:2个缩减器内核实例(它存储带有交换坐标的结果(即作为(y,x))inputTexture(rtt-framebuffer的颜色附件)tempTexture,大小:inputHeightxoutputWidth,使用CL_MEM_READ_WRITE创建输出纹理正在运行kernel_instance_1(,inpu

c++ - 构建支持 OpenCL 的 OpenCV

在CMake中,我使用OpenCLEnableON构建了OpenCV(它自动检测到OPENCL_INCLUDE_DIR路径但是OPENCL_LIBRARY是空的,即使在点击配置之后也是如此。对于OPENCL_LIBRARY我也没有看到浏览按钮..在生成opencv二进制文件之后我运行下面的代码#include#include#include#include#include#includeintmain(){if(!cv::ocl::haveOpenCL())cout当我使用UMat来衡量性能时,使用(UMat)或不使用(Mat)OpenCL的性能没有任何区别。我从这个link下载了AM

c++ - opencl c++ API 包装器中的 clFinish 等价物是什么?

我是opencl的新手,但我对GPU编程并不陌生。我需要确保我的cpu和gpu设备相互同步。看来我应该使用clFinish(cl::commandqueuequeue),但我使用的是openclc++而不是openclc。那么,cl::finish()是否等同于clFinish()还是有类似cl::commandqueue::finish()的东西(哪个VisualStudio无法识别)?您能否举例说明您的答案?我是opencl的新手。 最佳答案 cl::command_queue::finish就是您要找的那个。cl_intfin

c++ - clEnqueueNDRangeKernel 触发 CL_INVALID_MEM_OBJECT (-38)

我正在为OpenCL使用C++绑定(bind),当我的一个内核入队时,我得到一个cl::Error,它说-38(CL_INVALID_MEM_OBJECT)forclEnqueueNDRangeKernel.此错误未列为clEnqueueNDRangeKernel的可能错误之一.通知功能给我以下输出:CL_INVALID_MEM_OBJECTerrorexecutingCL_COMMAND_NDRANGE_KERNELonGeForceGTX560(Device0).我还没有找到展示这种行为的最小示例。在调用这个函数时,什么会导致这种错误?使用谷歌我只找到了这个answer然而。它声明

c# - OpenCL 内核问题

您好,我创建了两个内核来执行一个简单的匹配deshredder程序,以便与OpenCL一起运行并定时。这两个内核执行它们应该执行的操作,但由于我无法破译的原因,一个内核比另一个运行得慢得多:/唯一真正的区别是我如何存储正在发送的数据以及如何进行匹配。__kernelvoidHorizontal_Match_Orig(__globalint*allShreds,__globalint*matchOut,constunsignedintshredCount,constunsignedintpixelCount){intmatch=0;intGlobalID=get_global_id(0)