gpgpu相关内容

clGetDeviceInfo和clGetPlatformInfo在OpenCL中失败,错误代码为-30(CL_INVALID_VALUE)

我开始为使用OpenCL编写一个小“引擎".现在,我遇到了一个非常奇怪的问题. 当我调用clGetDeviceInfo()来查询特定设备的信息时,参数param_name的某些选项返回错误代码-30(= CL_INVALID_VALUE).一个非常著名的选项是CL_DEVICE_EXTENSIONS选项,无论我使用的是什么sdk或平台,该选项都应返回一串扩展名.我检查了每条边,并仔细检查了参 ..
发布时间:2020-05-20 19:02:06 C/C++开发

在OpenCL 1.2中使用cl_arm_import_memory扩展进行零拷贝缓冲区-Arm Mali Midgard GPU

我希望分配一个向量,并使用它的数据指针在GPU上分配一个零拷贝缓冲区.有此cl_arm_import_memory扩展名可用于执行此操作.但是我不确定是否所有马里Midgard OpenCL驱动程序都支持它. 我正在通过此链接,我是以下几行让我很困惑:- 如果公开了扩展字符串cl_arm_import_memory_host,则从普通用户空间分配(例如通过malloc创建的分配)中导入 ..
发布时间:2020-05-20 19:01:12 其他开发

PyOpenCL第一次运行时返回错误,然后仅返回“无效程序"错误;例子也行不通

我正在尝试使用pyOpenCL绑定运行OpenCL内核,以便在GPU上运行.我试图将内核加载到程序中.我运行了一次程序,但出现错误.我不更改代码再次运行,并收到了另一个“无效程序"错误. 在使用pyOpenCL的我自己的程序以及示例程序中,这种情况一直在发生.我可以在CPU和GPU上通过C++绑定使用OpenCL,没有问题.所以我认为这是pyOpenCL绑定特有的问题. 我的操作系统是 ..
发布时间:2020-05-20 19:00:56 Python

尝试在NVIDIA SDK模板中将OpenCL与CUDA混合使用

我一直在艰难地建立一个实验,在该实验中,我在设备上使用CUDA分配内存,将指针指向设备上的内存,在OpenCL中使用它,然后返回结果.我想看看是否有可能.我很难让CUDA项目工作,所以我只是在他们的SDK中使用了Nvidia的模板项目.在生成文件中,我在common.mk的libs部分中添加了-lOpenCL.当我这样做时一切都很好,但是当我在template.cu中添加#include ..
发布时间:2020-05-20 19:00:18 其他开发

为什么首选工作组的大小是内核属性的多个部分?

据我了解,首选的工作组大小大致取决于计算设备的SIMD宽度(对于NVidia,这是Warp大小,在AMD上是Wavefront). 从逻辑上讲,这会使人们假设首选工作组的大小与设备有关,而不与内核有关.但是,必须使用CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE相对于特定内核来查询此属性.选择一个不是基础硬件设备SIMD宽度的倍数的值将不会完全加载硬 ..
发布时间:2020-05-20 18:59:55 其他开发

总浮点数的最佳OpenCL 2内核是什么?

C ++ 17引入了许多新算法来支持并行执行,尤其是 std: :reduce 是 std :: accumulate 的并行版本允许non-commutative操作的non-deterministic行为,例如浮点加法.我想使用OpenCL 2实现reduce算法. 英特尔在此处 a>使用OpenCL 2 work group内核函数来实现 std :: exclusive_scan O ..
发布时间:2020-05-20 18:59:37 C/C++开发

OpenCL产生不正确的计算

我一直在尝试使用openCL进行一些计算,但是结果不正确. 我输入了三个如下所示的float3: [300000,0,0] [300000,300000,0] [300000,300000,300000] 进入此内核: __kernel void gravitate(__global const float3 *position,__global const float3 * ..
发布时间:2020-05-20 18:59:14 Python

在NVIDIA硬件上运行OpenCL程序

我已经构建了一个简单的基于OpenCL的程序(使用C ++),并在Windows 8系统上使用AMD FirePro V4900卡进行了测试.我正在使用AMD APP SDK. 当我将二进制文件复制到另一台计算机(带有NVIDIA Quadro 4000卡的Windows 8)时, “过程入口点clReleaseDevice不能位于动态链接库(我的程序的exe)中".第二台计算机已安装了最新 ..
发布时间:2020-05-20 18:58:56 其他开发

OpenCL:有关SIMT执行模型的基本问题

"SIMT"体系结构的某些概念和设计对我来说仍然不清楚. 从我所看到和阅读的内容来看,使代码路径和if()完全分开是一个很糟糕的主意,因为许多线程可能会以锁步的方式执行.现在那到底是什么意思?怎么样呢? kernel void foo(..., int flag) { if (flag) DO_STUFF else DO_SOMETHIN ..
发布时间:2020-05-20 18:58:49 其他开发

CL_DEVICE_LOCAL_MEM_SIZE是整个设备还是每个工作组?

我不太清楚CL_DEVICE_LOCAL_MEM_SIZE的实际含义,它是通过clGetDeviceInfo函数获取的.这个值是表示某个设备上所有可用本地内存的总和,还是工作组中本地内存共享的上限? 解决方案 TL; DR:每个单个处理单元,因此也是分配给工作单元的最大数量. 此值是设备中每个计算单元上可用的本地内存量.由于工作组被分配给单个计算单元,因此这也是任何工作组可以拥有的最 ..
发布时间:2020-05-20 18:58:16 其他开发

OpenCL SDK概述和硬件互操作性

我对OpenCL开发的总体情况有些困惑,所以我只列出我当前的理解和问题.如果我错了,请纠正我. 我知道有Intel,AMD提供的SDK(“平台")(我想Nvidia SDK也支持OpenCL?) 其他供应商提供SDK吗? 一个供应商的SDK是否支持另一个供应商的设备?例如带有AMD SDK的Nvidia设备?我可以使用AMD SDK在Intel CPU上运行程序. 是否可以 ..
发布时间:2020-05-20 18:57:36 其他开发

enqueueWriteImage在GPU上失败

我正在开发一些可用于图像缓冲区的内核.问题是,当我通过直接复制图像数据创建Image2D时,一切正常. 如果我尝试将对写缓冲区的写入队列,则不适用于我的GPU. 这是一个基本的内核: __kernel void myKernel(__read_only image2d_t in, __write_only image2d_t out) { const int x = ge ..
发布时间:2020-05-20 18:57:34 其他开发

使用NVIDIA的nvcc编译器编译并生成.cl文件?

是否可以使用NVIDIA的nvcc编译器来编译.cl文件?我正在尝试设置Visual Studio 2010以在CUDA平台下编码Opencl.但是,当我选择CUDA C/C ++编译器进行编译和生成.cl文件时,它给了我类似nvcc不存在的错误.有什么问题吗? 解决方案 您应该能够使用nvcc来编译OpenCL代码.通常,我建议对C兼容代码使用文件名扩展名.c,对C ++兼容代码使用文件 ..
发布时间:2020-05-20 18:57:07 其他开发

boost :: compute流压缩

如何使用boost :: compute进行流压缩? 例如如果只想对数组中的某些元素执行繁重的操作.首先,使用与您要对其执行操作的元素相对应的掩码数组生成掩码数组: mask = [0 0 0 1 1 0 1 0 1] 然后对掩码数组执行互斥扫描(前缀和)以获取: scan = [0 0 0 0 1 2 2 3 3] 然后使用以下方法压缩该数组: if (mask[ ..
发布时间:2020-05-20 18:56:55 其他开发

gpgpu上的opencl中的SIMD-8,SIMD-16或SIMD-32

针对该主题(SIMD模式),我阅读了关于SO的几个问题,但仍需要对事情的工作方式进行一些澄清/确认. 如果我们有GPGPU,为什么要使用SIMD? SIMD内部函数-它们可在GPU上使用吗? CPU SIMD与GPU SIMD? 如果我在SIMD-8模式下编译代码,以下几点正确吗? 1)这意味着不同工作项的8条指令正在并行执行. 2)这是否意味着所有工作项都仅在执行同一条 ..
发布时间:2020-05-20 18:56:41 其他开发