opencl相关内容

GPGPU中的分歧

我知道,在出现分歧的情况下,IF和ELSE都是在GPU上为每个工作项执行的,最后在掩码的帮助下我们选择了其中一个。但我不能理解,如果我们两个都被执行了,那么它怎么会增加执行单元的空闲。 我已经讨论了一些关于堆栈溢出的问题,但它们与堆栈溢出如何影响执行单元的空闲无关。 有人能给我解释清楚这个概念吗?分歧如何增加执行单元中的停滞或空闲? 推荐答案 在执行两个代码路径以选择一个结 ..
发布时间:2022-08-08 11:53:01 其他开发

使用AMD打开CL

我正在尝试在OpenCL上实现矩阵乘法。我有一块ATI Radeon HD Radeon 5000系列显卡。 这是我在网上找到的程序之一,但链接错误即将到来,我无法解决这些错误。 我尝试运行此站点中提到的代码 http://gpgpu-computing4.blogspot.in/2009/10/matrix-multiplication-3-opencl.html 我从此站点开始设置 ..
发布时间:2022-07-03 09:32:10 其他开发

内存复制速度比较CPU<;->;GPU

我现在正在学习Boost::Compute OpenCL包装库。 我遇到复制过程非常慢的问题。 如果我们将CPU到CPU的复制速度调整为1,那么GPU到CPU、GPU到GPU、CPU到GPU的复制速度有多快? 我不需要精确的数字。仅仅是一个大概的想法就会有很大的帮助。例如,CPU-CPU至少比GPU-GPU快10倍。 推荐答案 没有人回答我的问题。 所以我写了一个程序来检查 ..
发布时间:2022-06-27 19:53:18 其他开发

在OpenCL内核中,如何在内存位置定位导致异常CL::Error的源代码行?

在Windows10上的OpenCL1.2程序中,在我将内核排队几秒钟之后,提示显示ucrtbase.dll中的内存位置有一个未处理的异常。因此,我使用";try和catch";来获取有关该异常的更多信息。然后我得到了这个: Microsoft C++异常:内存位置0x00000076482F5A28处的CL::错误。 我的内核中的内存读/写可能有问题。但是内核程序包含 ..
发布时间:2022-03-27 19:21:30 其他开发

如何在OpenCL中读取.csv文件

我已将host code写在OpenCL中。但是我需要首先从read中获取数据,我需要确保我在读取文件时所做的操作是正确的。(我不确定这是否是在OpenCL中读取文件的方式) 1-我将read file function中写入的c++放在main之前。 2-然后,我放入函数来混合数据。同样在main 之前 3-在main函数中,我调用上述两个函数来读取数据,然后将其混合。 4 ..
发布时间:2022-03-27 19:14:38 其他开发

NVIDIA的OpenCL编译器是否支持--生成行-信息?

在(动态)将CUDA代码编译为PTX时,您可以传递--generate-line-info命令行参数,并在PTX中获得一组.loc条目,它们将PTX位置与源文件位置相关联。 在NVIDIA平台上将OpenCL代码编译成PTX(clBuildProgram)时也有这样的功能吗? 推荐答案 尝试-nv-line-info。我找不到它的文档,但是编译器接受它并生成您想要的东西。 值得注 ..
发布时间:2022-03-27 19:08:41 其他开发

除了OpenCL标准标志之外,NVIDIA OpenCL编译器还支持哪些标志?

CUDA 3.0工具包文档listedNVIDIA的OpenCL编译器接受几个标志,作为OpenCL标准要求之外的扩展: 选项 说明 -cl-nv-maxrregcount 最多注册一个内核(或设备函数?)可以使用);作为--maxrregcount传递给ptxas -cl-nv-opt-level 代码优化级别。 -cl-nv-verbose 启用详细模式。 但 ..
发布时间:2022-03-27 19:05:23 其他开发

优化内存访问OpenCL

我目前正在使用挡路矩阵乘法在OpenCL内核中乘以字节矩阵:我将矩阵细分为瓦片(32x32),将这些瓦片加载到本地内存中,然后将其写回全局内存。 目前,内存访问是瓶颈。我正在尝试对其进行优化。 假设我要乘以C=A x B,其中A、B、C是字符* A(NDIM,PDIM)、B(PDIM,MDim)、C(Ndim,MDim)。 我当前将A设置为行主格式,B设置为列主格式,以确保 ..
发布时间:2022-03-27 19:00:05 其他开发

OpenCL矩阵乘法速度

我编写了一个计算两个矩阵乘积的小型OpenCL应用程序。现在我注意到,如果矩阵的大小超过8192x8192,则性能会显著下降(16384 x 16384的计算速度要慢约80倍),甚至串行实现的速度也要快5倍以上。以下是主机代码: /*Make some includes and definitions here*/ #include "stdafx.h" #include ..
发布时间:2022-03-27 18:57:18 C/C++开发

如何获取用于DMA的GPU内存的物理地址?(OpenCL)

我正在编写一个OpenCL程序,我希望使用DMA将数据从帧采集卡传输到GPU。如何获取GPU上OpenCL缓冲区的物理地址以执行此操作? 推荐答案 使用OpenCL,您无法获取缓冲区的物理GPU地址。 但是,您可以将缓冲区的一个区域直接映射到主机内存,从而允许使用标准C/C++代码(如memcpy)将内存复制进来和复制出来。请参阅clEnqueue eMapBuffer。 ..
发布时间:2022-03-27 18:53:49 其他开发

OpenCL内核是否异步执行?

对于CUDA,我知道它们是在向默认流(NULL流)发出启动命令后异步执行的,那么在OpenCL中呢?示例代码如下: cl_context context; cl_device_id device_id; cl_int err; ... cl_kernel kernel1; cl_kernel kernel2; cl_command_queue Q = clCreateCommandQueue ..
发布时间:2022-03-27 18:49:16 C/C++开发

为什么OpenCL工作组是三维的?

我对这种架构很失望,因为没有明显的解释为什么工作组应该是三维的,或者我只是还没有找到解释。由于可以从一维工作组模拟任意数量的维度,这似乎增加了额外的复杂性,使理解将您的工作划分到工作组的最佳方式变得更加困难。 For example, this person discovered that switching axis sped up his execution with a factor ..
发布时间:2022-03-27 18:45:28 其他开发

CUDA PTX代码%envreg<;32>;特殊寄存器

我尝试使用CUDA驱动程序API运行.cl内核生成的PTX汇编代码。我采取的步骤如下(标准OpenCL过程): 1)加载.cl内核 2)JIT编译 3)获取编译后的PTX代码并保存。 到目前为止一切顺利。 我注意到PTX ASSEMBLY内部有一些特殊的寄存器,%envreg3,%envreg6等。问题是当我尝试使用驱动程序API执行代码时,这些寄存器没有设置(根据p ..
发布时间:2022-03-27 18:42:58 其他开发

OpenCL每个工作项的最大私有内存大小

我有一台AMD RX 570 4G, OpenCL告诉我,每个组最多可以使用256个工作组和256个工作项目. 假设我使用所有256个工作组,每个工作组包含256个工作项目 现在,每个工作项的最大私有内存大小是多少? 专用内存是否等于总vRAM(4 GB)除以总工作项(256x256)? 还是等于Cache如果等于Cache,是怎么回事? GPU 私有内存空间是 ..
发布时间:2022-03-27 18:34:11 其他开发

在OpenCL中创建子缓冲区

我正在尝试在OpenCL中运行我的第一批代码。为了创建子缓冲区,我有“OpenCL in Action”一书中的以下代码。代码显示创建子缓冲区失败的错误。我的电脑配备英特尔CPU和NVIDIA GPU。然而,当我在另一台装有AMD CPU和GPU的计算机上运行代码时,它工作得很好。你知道为什么这个代码不能在非AMD平台上运行吗? 以下是错误: 代码是这样的: #include ..
发布时间:2022-03-27 18:32:04 其他开发

如何检查位值是否等于1?

我有一个正在运行的OpenCL内核。如何检查变量中选定位置的位是否等于1? 例如,我发现在C#中可以使用代码like this将uint转换为包含位的字符串: // Here we will store our bit string bit; // Unsigned integer that will be converted uint hex = 0xfffffffe; // ..
发布时间:2022-03-27 18:21:15 C#/.NET