2011-10-25 18 views
2

私はOpenCLで私の最初のステップを作っていますが、私は結果が正しく保存されていないと思います。私はまず、簡単なプログラムを作って、それは正しい結果などを与えているので、メインは正しく機能しているので、配列はそれらが想定していた方法で満たされます。カーネルOpenCLは結果を保存しませんか?

プログラムの簡単な説明: グリッドがあります40x40のフィールドに4x4ポイント(OP配列)。このフィールドの上に飛行機があり、そのルートは100のセグメント(Segment配列)に分割されています。 Coordはtypedef構造体で、現在はdouble xとdouble yの値しかありません。私はもっ​​と簡単な解決法があることを知っていますが、私はこれを後で使用しなければならないので、私はこのようにします。カーネルは、点(OP)から線分までの距離を計算することになっています。結果は配列Distancesに保存する必要があります。

カーネルの説明:グローバルIDを取得し、どのOPとどのセグメントを計算するかを計算します。その情報を使って、それらのxとyを取得し、xとyの距離を計算します。この情報を用いて、距離と飛行高度から平方根を計算します。

問題は距離テーブルのみがゼロのを示していること、である:Afstanden

OpenCLのもの* http://pastebin.com/U9hTWvv2 __global constのCOORD * Afstandenを言うのパラメータがあり、これは二重の__globalなければならない:P

カーネルメインで:http://pastebin.com/H3mPwuUH(イムはそれを行うことは権利であるイムは100%確実ではないので)

私はあなたの全体のプログラムを与えることができますが、それは主にオランダ人です:P

は、私はすべてを説明しようとしましたできるだけ良いものがあれば、何かが明確でなければ、私はそれをクリアしようとします;)

私は最初のカーネルで多くの小さな欠陥を作ったので、ここに彼の後継者があります:http://pastebin.com/rs6T1nKsまた、OpenCLの部分は少しです更新された:http://pastebin.com/4NbUQ40Lも1つまたは2つの障害があったためです。

は、それは私の意見では、動作するようになりました...しかし、それは、問題はまだ

+0

私は、カーネルがCoordからxとyの値を得ることができないと思うのですが...確かに分かりません。まだ私の問題で光を当てることができる人を探しています:) – JustAJ

答えて

0

まあ立っているされていない、「Afstanden」変数が「* constのCOORD」として宣言されているようです。 「のみ* COORDを - あなたはclCreateBuffer使用するときにことを確認してください 『すなわち - const性を削除CL_MEM_WRITE_ONLY』または 『CL_MEM_READ_WRITEを問題は距離テーブルのみがゼロのを示していること、である:P『 』引数として

。』

+0

私はすでにそれが奇妙であると思ったので確かにconstを削除しました。私が投稿したカーネルにも多数の不具合がありますので、私は今使っています。私はまた、私のメインでOpenCLのものを軽く修正したものです。あなたの2番目のパラグラフに答えるには、カーネルの終わりにそれ以外の値があるはずです。しかし、そうではありません。これらの最初のゼロを表示しているだけです。 – JustAJ