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]);
}

何が起きてる?

完全なカーネルがここに貼り付けられます。OSは64ビットOS X 10.9.2です。他の方法で下の 3 つのループをいじってみましたが、うまくいきませんでした。この問題は、何かにアクセスしdistancesたり、値を調整したりすることに関係しているようですdist_histogramが、最初に投稿した例がビルドに失敗する理由がわかりません。

4

1 に答える 1

2

ビルド ログの性質と、同じコードが他のデバイスでも問題なくビルドされるという事実を考えると、これはほぼ確実に Apple の OpenCL 実装のバグです。Intel 統合グラフィックス ファミリの OpenCL 実装はまだかなり未熟であり、多くの人が (私を含めて) さまざまな問題を発見しています。

問題を再現する最小限のコード例を作成し、Apple Bug Reporterを使用して報告することをお勧めします。

于 2014-04-18T11:38:32.747 に答える