我的内核在我的笔记本电脑CPU(i5-3427U)上完美运行。我现在试图让它在内置GPU(HD 4000)上运行。
完整错误是here,但我无法做多少。现在(在我看来)好奇的部分是以下无法建立:
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]);
}
这里发生了什么?
粘贴完整内核here。操作系统是64位OS X 10.9.2。我还试图用其他方式搞乱底部的3个循环。该问题似乎与访问distances
中的任何内容或调整dist_histogram
中的值有关,但我不明白为什么我发布的第一个示例无法构建。
答案 0 :(得分:2)
鉴于构建日志的性质以及相同代码在其他设备上构建得很好的事实,这几乎肯定是Apple的OpenCL实现的一个错误。他们针对英特尔集成显卡系列的OpenCL实现仍然相当不成熟,很多人都发现了它的各种问题(包括我自己)。
我建议制作一个最小的代码示例,用于再现问题并使用Apple Bug Reporter进行报告。