0

我有一个可以在我的笔记本电脑 CPU (i5-3427U) 上完美运行的内核。我现在正试图让它在内置 GPU (HD 4000) 上运行。

完整的错误在这里,但我不能做太多。现在(在我看来)奇怪的部分是以下内容无法构建:

unsigned int dist_histogram[n_bins];
for (i = 0; i < n_bins; i++) {
    dist_histogram[i] = 0;
}

for (i = 0; i < n_bins; i++) {
    atomic_add(&g_r[i], dist_histogram[i]);
}

但这会构建并运行:

unsigned int dist_histogram[n_bins];
for (i = 0; i < n_bins; i++) {
    dist_histogram[i] = 0;
    atomic_add(&g_r[i], dist_histogram[i]);
}

这里发生了什么?

完整的内核粘贴在这里。操作系统是 64 位 OS X 10.9.2。我尝试以其他方式处理底部的 3 个循环,但未成功。该问题似乎与访问其中的任何内容distances或调整其中的值有关,dist_histogram但我不明白为什么我发布的第一个示例无法构建。

4

1 回答 1

2

鉴于构建日志的性质以及相同的代码在其他设备上构建得很好的事实,这几乎可以肯定是 Apple 的 OpenCL 实现的一个错误。他们针对英特尔集成显卡系列的 OpenCL 实现还相当不成熟,很多人都发现了它的各种问题(包括我自己)。

我建议生成一个最小的代码示例来重现问题并使用Apple Bug Reporter报告它。

于 2014-04-18T11:38:32.747 回答