2017-01-18 9 views
3

最小編集距離アルゴリズムを使用して、2つの文字列がどれほど密接に関連しているかを判断しています。私はそれをCPU上で実行するように実装しました。何百もの文字列を持っているときはうまくいきますが、何千もの文字列を何度も比較しているときには遅くなる原因になります。だから私は一度に複数の比較を実行できるので、GPUに負荷をかけておくと便利かもしれないと思った。メタルを使用してGPUでアルゴリズムを実行できますか?

これは可能ですか?私が遭遇した金属資源は、主にグラフィックスのために役立たないものです。それとも、彼らは?

+0

メタルの上に実装された新しいハフマンデコーダに興味があるかもしれませんが、githubを見てください:https://github.com/mdejong/MetalHuffman – MoDJ

答えて

6

少なくとも一定の問題サイズでは、実行したいことは可能ですが、それは特に簡単なことではありません。あなたがする必要があることは、GPU上で実行できる方法でアルゴリズムを表現することであり、iOSではおそらくMetalを使用することを意味します。具体的には、最小編集距離アルゴリズムを実装する1つまたは複数の計算カーネルをメタルシェーディング言語で記述し、Metal計算コマンドエンコーダーを使用してそれらをディスパッチする必要があります。 Metal around the Webには、コンピューティングプログラミングに関するいくつかのリソースがあります。

私はMedの既存のMetal実装を認識していませんが、少なくともone CUDA implementationがあり、GPU hereでMEDの詳しい説明を読むことができます。

3

@warrenm答えに加えて、カーネル関数またはその2つを書く必要があります。クールな金属チュートリアルのウェブサイトがあります:http://metalbyexample.com、また、Appleのドキュメントには、それについて何かありますhttps://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Compute-Ctx/Compute-Ctx.html

をしてもhttps://www.raywenderlich.com上のチュートリアルがいくつかありますが、彼らは主にグラフィック指向しています。また、iOS用のGPUImageライブラリをチェックすることもできます。これは、すばらしいインターフェースを備えたOpenGLのクールなラッパーです。おそらく、OpenGLを使って実行されるカスタム関数を書くオプションもありますか?

関連する問題