OpenCL clBuildProgram 缓存源代码,如果 #include 源代码发生更改,则不会重新编译

2024-02-14

我用opencl实现了一个项目。我有一个包含内核函数的文件,内核使用的函数包含在单独的头文件中,但是当我更改包含的文件时,有时会应用更改,有时则不会,这让我很困惑应用程序是否有错误。

我检查了 stackoverflow 中的其他帖子,发现 nvidia 在通过方面存在严重问题-I{include directory},所以我更改了它并明确给出了头文件地址,但是opencl编译器仍然无法找到内核文件名中包含的头文件中的错误。

另外,我使用的是 nvidia gtx 980,并且我的计算机上安装了 CUDA 7.0。

有人有同样的经历吗?我该如何修复它?

所以,假设我有一个这样的内核:

#include "../../src/cl/test_kernel_include.cl"

void __kernel test_kernel(
  __global int* result,
  int n
  )
{
  int thread_idx = get_global_id(0);
  result[thread_idx] = test_func();
}

其中test_kernel_include.cl如下:

int test_func()
{
  return 1;
}

然后我运行代码,得到一个所有成员都等于的数组1正如我们所期望的。现在,我改变了test_kernel_include.cl to:

int test_func()
{
  return 2;
}

但结果仍然是一个所有成员都等于的数组1应该改为2但他们不是。


在平台初始化之前执行此操作:

setenv("CUDA_CACHE_DISABLE", "1", 1);

它将禁用构建的缓存机制。 它也适用于 OpenCL 平台,尽管它说的是 CUDA。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCL clBuildProgram 缓存源代码,如果 #include 源代码发生更改,则不会重新编译 的相关文章

  • OpenCL 内核未矢量化

    我正在尝试构建一个内核来进行并行字符串搜索 为此 我倾向于使用有限状态机 fsm 的转换表位于内核参数状态中 代码 kernel void Find constant char text const int offset const int
  • 性能:boost.compute vs. opencl C++ 包装器

    以下代码分别使用 boost compute 和 opencl C 包装器将两个向量相加 结果显示 boost compute 几乎比 opencl c 包装器慢 20 倍 我想知道我是否错过了使用 boost compute 或者它确实很
  • 内存复制速度对比 CPU<->GPU

    我现在正在学习 boost compute openCL 包装库 我的复制过程非常慢 如果我们将 CPU 到 CPU 的复制速度调整为 1 那么 GPU 到 CPU GPU 到 GPU CPU 到 GPU 复制的速度有多快 我不需要精确的数
  • 限制 AMD OpenCL 的 GPU 数量

    是否有解决方案限制 AMD OpenCL 平台使用的 GPU 数量 对于 NVIDIA 平台 只需设置环境变量即可CUDA VISIBLE DEVICES限制 OpenCL 可用的 GPU 集 编辑 我知道 我可以使用更少的设备创建一个上下
  • cl::vector 与 std::vector:不同的迭代器行为

    EDIT 添加了 PlasmaHH 建议的带有内存位置的调试输出 我不明白 OpenCL 的 C 绑定中 cl vector 的不同行为 考虑以下代码 Header Top hpp class Top public void setBool
  • 并行化 std::nth_element 和 std::partition

    我正在移植使用的 C 代码std nth element and std partition到 OpenCL nth element http www cplusplus com reference algorithm nth elemen
  • OpenCL 内核是异步执行的吗?

    对于 CUDA 我知道它们是在向默认流 空流 发出启动命令后异步执行的 那么在 OpenCL 中又如何呢 示例代码如下 cl context context cl device id device id cl int err cl kern
  • GPU 显存带宽理论与实际

    作为在 GPU 上运行的算法分析的一部分 我觉得我正在达到内存带宽的要求 我有几个复杂的内核执行一些复杂的操作 稀疏矩阵乘法 归约等 和一些非常简单的操作 当我计算每个内核读取 写入的总数据时 似乎所有 重要的 都达到了约 79GB s 的
  • CUDA PTX 代码 %envreg<32> 特殊寄存器

    我尝试使用 CUDA 驱动程序 API 运行由 cl 内核生成的 PTX 汇编代码 我采取的步骤是这些 标准 opencl 程序 1 加载 cl内核 2 JIT编译 3 获取编译好的ptx代码并保存 到目前为止 一切都很好 我注意到 ptx
  • opencl支持布尔变量吗?

    openCL 支持布尔变量吗 我目前正在使用 JOCL java 编写我的 openCL 调用代码 但我没有看到任何有关布尔值的信息 tl dr 是的 但是你应该在内核函数签名中避免它 是的 但a的大小bool is not定义的 因此 它
  • 如何消除 opencl 代码中的 CL_INVALID_PLATFORM 错误?

    使用 OpenCL 进行简单的矩阵乘法 Multiply two matrices A B C include
  • 如何在 Windows 上的 nvidia GPU 的 Visual Studio 2010 中配置 OpenCL?

    我在华硕笔记本电脑上的 Wwindows 7 操作系统上使用 NVIDIA GeForce GTX 480 GPU 我已经为 CUDA 4 2 配置了 Visual Studio 2010 如何在 Visual Studio 2010 上为
  • 使用 OpenCL 或其他 GPGPU 框架在现代 x86 硬件上的 CPU 和 GPU 之间共享数据

    AMD Kaveri 的 hUMA 异构统一内存访问 和 Intel 第四代 CPU 证明了 CPU 和 GPU 硬件的不断统一 应该允许 CPU 和 GPU 之间进行无副本的数据共享 我想知道 最新的 OpenCL 或其他 GPGPU 框
  • 在 Mac OS X 10.7.4 上使用 OpenCL 禁用 Nvidia 看门狗

    我有一个 OpenCL 程序 对于小问题运行良好 但是当运行较大的问题超过 Nvidia 硬件上运行内核的 8 10 秒时间限制时 虽然我没有将显示器连接到我正在计算的 GPU Nvidia GTX580 上 但一旦内核运行大约 8 10
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • 是否可以在 OpenCL 中并行运行求和计算?

    我是 OpenCL 的新手 不过 我了解 C C 基础知识和 OOP 我的问题如下 是否可以以某种方式并行运行求和计算任务 理论上可能吗 下面我将描述我尝试做的事情 任务例如是 double values new double 1000 l
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 尽管有障碍,Open CL 仍不同步

    我刚刚开始通过 Python 的 PyOpenCL 接口使用 OpenCL 我尝试创建一个非常简单的 循环 程序 其中每个内核中每个循环的结果取决于上一个循环周期的另一个内核的输出 但我遇到了同步问题 kernel void part1 g
  • AMD OpenCL 在 Linux 上工作所需的最小必要文件子集是什么?

    我已经使用 buildroot 构建了 Linux 内核 我已将开源 amdgpu 驱动程序和所需的固件合并到其中 驱动程序很好 检测 GPU 模式设置运行良好 调整 小文本 的分辨率 启动后会显示命令行 现在我需要运行 OpenCL 程序
  • OSX 上的 ATI OpenCL SDK

    我拥有 ATI GK 的新 MPB 我很好奇 我是否可以下载 OSX 的 sdk 特别是示例集合和分析器 或者我必须本地运行 Windows Linux 因为我只找到了 Windows 和 Linux 的版本 提前致谢 只要您有 Mac O

随机推荐