Tensorflow: OpenCLサポート

作成日 2015年11月09日  ·  541コメント  ·  ソース: tensorflow/tensorflow

TensorFlowはCUDAのみをサポートしていることを理解しています。 OpenCLサポートを追加するには何をする必要がありますか?

contributions welcome

最も参考になるコメント

グーグルがプロプライエタリCUDAのためにオープンOpenCLを捨てたのは奇妙だ。
im-just-saying

全てのコメント541件

グーグルがプロプライエタリCUDAのためにオープンOpenCLを捨てたのは奇妙だ。
im-just-saying

少なくとも、 EigenライブラリはOpenCLをサポートする必要があります。

:+1:

:+1:

:+1:

親指を立てるなど。

OpenCLでテンソルフローを拡張することに興味があります。 すでにOpenCLカフェをリリースしているので。 https://github.com/amd/OpenCL-caffe。 うまくいけば、それは軽い方法で統合することができますか? これに一緒に取り組むことに興味がある人はいますか?

@gujunliここでAMDを見ることができてうれしいです。 / cc @ naibaf7 @lunochod

素晴らしいことだ。

:+1:

/ cc @lukeiwanski for Eigen / OpenCL / SYCL

@gujunli確かに貢献することに興味があるでしょう。 開始する予定がある場合はお知らせください。

こんにちは、みんな、

ここCodeplayでは、SYCL(Op​​enCL上の最新のC ++レイヤー)を使用してGPUで実行されているEigenのテンソルを調べています。 これまでに収集したものから、GPUテンソル設計はCUDAと非常に密接に関連しており、別のプログラミングモデル、特にSYCLおよびOpenCL1.2バージョンのインターフェイスを変更する必要があります。

誰かがより深く掘り下げる/助けることに興味があるなら、私たちは間違いなく貢献することに興味があります。

ありがとう、
ルーク

@lukeiwanskiフィードバックありがとうございます。 @benoitsteinerはeigenのテンソル拡張部分で働いていたと思います。

:+1:誰かが計画を立てたり、作業をタスクに分割したりする場合は、OpenCL / SYCLのコーディングを手伝うことができます。OpenCLのラッパーとしてBoost.Computeを使用することをお勧めします(カーネルの実行、テスト、テンプレート作成が簡単になります)。

+1

:+1:

こんにちは、みんな、

投稿を続けるために、SYCL / OpenCL1.2プログラミングモデルにより適合するようにEigenインターフェースを変更する方法をまだ調査中です。
ヘテロジニアスプログラミングモデル(OpenCL / SYCLだけでなく)を対象とした合理的なアプローチを思いついたら、提案を作成します。

ありがとう、
ルーク

plsは私を更新し続けます。 AMD用のopencl-caffeを開発しました。 私も見ています
テンソルフロー。

ありがとう。
ジュンル
2015年12月8日午前10時19分、「LukeIwanski」 [email protected]は次のように書いています。

こんにちは、みんな、

投稿を続けるために、私たちはまだどのように変更できるかを調査しています
SYCL / OpenCL1.2プログラミングモデルによりよく適合するEigenインターフェース。
合理的なアプローチを思いついたら、提案を作成します。

ありがとう、
ルーク


このメールに直接返信するか、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -162967662

/ cc @ptillet @gongzg Intelによるこれに関心はありますか? AMDフォーク、Intel非マージPR、別の半非公式AMD PR、および長期ステージングユーザーPR(および2つの古い放棄されたOpenclの取り組み)があるCaffeのように、ここでOPENCLを断片化しないことを本当に望んでいます。 誰かが歴史に興味を持っているなら、 https://github.com/BVLC/caffe/pull/2610コメントを見てください。

@bhack私たちはこれに興味を持っています。 知らせてくれてありがとうございます。 EigenのOpenCL / SYCL実装の提案があれば、Intel側から何ができるかがわかります。

:+1:

https://github.com/ptillet/isaacでの興味深いイニシアチブも、ここでEigenテンソル拡張に依存している場合です。

私も貢献したいと思います。 @benoitsteiner整理できますか?

これはロードマップに含まれていましたが、コントリビューションとしてタグ付けされているため、方向/ブートストラップが非常に役立ちます。

私はそれを整理するために貢献することができます。 のOpenCLサポートの責任者
テンソルフローは今ですか?

どうもありがとう。
ジュンリ

2016年1月19日火曜日の午前7時50分、 bhacknotifications @ github.comは次のように書いています。

これはロードマップに含まれていましたが、貢献としてタグ付けされているため、
方向/ブートストラップは本当に便利かもしれません。


このメールに直接返信するか、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172894538


JunliGu--谷俊丽
協調科学研究室
イリノイ大学アーバナシャンペーン校


彼が自分で機能を割り当てたので、私はブノワを想定しましたが、あなたはそれをジュンリだと思います! たぶん、利害関係者の電子メールまたはフォーラムスレッドから始めますか?

@benoitsteinerは、表示されていない可能性のある利害関係者について詳しく知っています
このスレッド(またはこの問題)でアップ。 私は彼が作るために調整するのを待ちます
作業の重複を避けてください。

2016年1月19日火曜日午前11時42分ダンマクラフリン[email protected]
書きました:

彼が自分で機能を割り当てたので、私はブノワを想定しましたが、私は思います
あなたはそれをジュンリ持っています! たぶん、のメールまたはフォーラムスレッドから始めてください
利害関係者?


このメールに直接返信するか、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172963537

興味ある。 ロードマップはありますか?

2016年1月19日午前11時46分、MartinWickeの[email protected]は次のように書いています。

@benoitsteinerは、表示されていない可能性のある利害関係者について詳しく知っています
このスレッド(またはこの問題)でアップ。 私は彼が作るために調整するのを待ちます
作業の重複を避けてください。

2016年1月19日火曜日午前11時42分ダンマクラフリン[email protected]
書きました:

彼が自分で機能を割り当てたので、私はブノワを想定しましたが、私は思います
あなたはそれをジュンリ持っています! たぶん、のメールまたはフォーラムスレッドから始めてください
利害関係者?


このメールに直接返信するか、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172963537


このメールに直接返信するか、GitHubで表示してください。

Tensorflowが依存しているCUDA依存関係ライブラリのリストはありますか?

これは、OpenCLの代替案をすぐに利用できるかどうかを確認するのに役立ちます。

@hsaputra
clFFT、clBLAS(またはViennaCL)があります。 乱数ジェネレーターはもう少しトリッキーです(curandなし)。CPUジェネレーターを使用してGPUに転送するか、RNG用に別の既存のカーネルを使用します。

最大の落とし穴は、効率的な畳み込みの実装(cuDNNのようなもの)です。

ここにそのような問題についての経験があります:
https://github.com/BVLC/caffe/pull/2610
https://github.com/BVLC/caffe/pull/2195
https://github.com/amd/OpenCL-caffe

Tensorflowは、Eigenのアップストリームにあるテンソル拡張を使用します。 したがって、Eigenに対するOpencl / Syclのサポートが必要だと思います。 このスレッドを参照してください

@ naibaf7に感謝します。 ええ、今のところ、OpenCL用のcuDNNの実行可能な代替手段はないと思います。

ウェブサイトhttp://opencl.orgは、このようなオープンソースの移植プロジェクトをサポートするために作成されています。 現在、必要なすべてのツールをWebサイトにインストールしており、 https://github.com/OpenCL/にリポジトリ用のスペースがあります。後で、いくつかのタイプのハードウェアをテストするためのビルドサーバーを追加し、多数のハードウェアでフルスピードで実行されるコードを作成する方法。

来週、GEGLの移植イニシアチブを開始しますが、喜んでサポートさせていただきます。

そのスレッドから@bhackし、ここでは@lukeiwanskiが調査しているようです。 それに取り組むのに十分な意欲のある人がいると思います。調整するには、@ benoitsteiner、 @ lukeiwanski 、または@gujunliが必要です。 ブノワは静かだった、多分彼は休暇中だ。

このイニシアチブに貢献したいと思います。

こんにちは、みんな、

EigenのテンソルモジュールをSYCLfor OpenCLに移植する作業を調整します。これは、すでにほとんど機能しているものがありますが、まだレビューの準備ができていないためです。

コードベースへの侵入が少なくなるため、このアプローチを採用しています。 SYCLは、eigenがすでに使用しているシングルソースのC ++テンプレートモデルをサポートしています。

ロードマップの設計が進行中であるため、今はそれほど長くはないはずです。

ありがとう、
ルーク

@lukeiwanskiあなたは上流で働いていますか、それとも接触していますか? エイゲンの上流で受け入れられると思いますか?

+1

素晴らしいニュース@lukeiwanski 、あなたが必要とする助けを私たちに知らせてください。

SYCLの独自の実装を使用していると思いますが、開発者/研究者はそれを利用できますか? どのプラットフォームで?

@lukeiwanski SYCLは、Eigenに関連するテンプレートメタプログラミングの量を考えると、正しい方法のようです。 私は経験豊富なc ++開発者であり、独自のニューラルネットと線形代数ライブラリの開発から得たOpenCLの経験があります。 この取り組みを支援し、SYCLの開発を開始したいと思います。

@bhack @benoitsteiner連絡を取り合っていますが、多大な労力を費やす前に、上流のメンテナと提案について話し合います。

@ DanMcLaughlin 、@ ville-k SYCL、ComputeCpp(https://www.codeplay.com/products/computecpp)の実装を開発しています。 詳細については、私のプロフィールの電子メールアドレスを介してリスト外の私に連絡できますか?

@lukeiwanski計画に関する更新/見積もりはありますか?

+1。
私はラップトップにAMDGPUとIntelGPUを搭載しています。 どちらにもOpenCLドライバーがあり、AMDのサポートははるかに優れているようです。 OpenCLデバイスが2つあるので、パフォーマンスが向上します。 OpenCLデバイスに合わせて拡張できることを願っています。

こんにちは、みんな、

興味を持ってくれてありがとう!
この時点で、テストインフラストラクチャをセットアップして、リグレッションが発生しないことを確認しています。
@benoitsteinerと連絡を取り、彼がこれまでに行ったことと同期していることを確認します。

統合プロセスのロードマップはまだ作成中です。明確にする必要のあるビジネスの詳細がいくつかあるため、数週間以内に完了する必要があります。

私たちの目標は、今年の終わりまでにOpenCLをEigen経由でTensorFlowに導入することです。

ありがとう、

興味がある。 貢献したいと思います。

さて、実際には、Google内部と何らかの同期をとったCodeplayの努力のようです。 ここでのAMDおよびIntelサブスクライバーの役割は何ですか?

/ cc @keryell SYCL / FPGAユニバースからこれに関心がある場合

最近、この議論にこれ以上貢献しなかったことをお詫びします。この2週間、私のプレートはいっぱいになりました。

TensorFlow側でOpenCLの取り組みを調整します。 私たちの現在の考え方は次のとおりです。

  • TensorFlowはc ++ 11に依存しており、「シングルソース」アプローチを採用しているため、SYCLは最適のようです。
  • 社内ではOpenCLの経験があまりないため、Codeplayと緊密に協力してこのギャップを埋めています。 特に、Codeplayは現在、SYCLのサポートをEigenテンソルライブラリに追加する取り組みを主導しています。
  • TensorFlowは、cuDNNライブラリに依存して、NVidiaGPUで畳み込みを計算します。 誰かがOpenCLに相当するものを提供することに興味があるなら、喜んでお手伝いします。

取り組みの構造化を支援するために、私はメーリングリストを作成しました: [email protected]

@bhack確かにFPGAのハイエンドC ++に興味があります:-)
TensorFlowは、triSYCLの優れた検証ユースケースのようにも思えます。
ちなみに、ここでインターンシップを探している人がいれば、私にはいくつかのポジションがあります。 私が彼らのウェブサイトを信頼しているなら、Codeplayも何人かの人々を探しているようです。

@karlrupp@hughperkinsの意見に本当に興味があります。 彼らが新しいグーグルグループの議論に参加したいと思っていることを願っています。

@benoitsteiner更新していただきありがとうございます。 @KhronosGroupに関係するすべてのパートナー(Google、Nvidia、Amd、Intel、Codeplay、ザイリンクスなど)が、標準化された方法でAPIのようなcudnnを宣伝するのは素晴らしいことです。 一種のKhronosopenvxコンピュータービジョン標準化の取り組みですが、ディープラーニング用です。

@bhackどの新しいGoogleグループ?

それ以外は、OpenCLとCUDAはプログラミングアプローチがあまりにも異なります。 CUDAは、1つの会社がすべてを完全に制御できるため、そのように機能します。そのため、バイナリブロブを埋め込むことができ、最終的な実行可能ファイルに何が含まれるかを誰が知っているかがわかります。 これはOpenCLでは実行できません。ただし、SyCLパスをたどり(懸念があります...)、SyCLコンパイラベンダーがすべての可能なターゲットアーキテクチャを完全に制御できる場合を除きます(実際にはありそうもないか不可能です)。 全体として、私の意見では、優れたOpenCL対応ライブラリには、あちこちでいくつかの調整以上のものが必要です。 おそらくあなたが聞きたかったものではありませんが、あなたは私の意見を求めました:-)

@karlrupp googleグループの最後にあるhttps://github.com/tensorflow/tensorflow/issues/22#issuecomment-176406416を参照してください。
代数ライブラリを複数のバックエンド(CPU、GPU、MIC)とインターフェースするViennaCLで素晴らしい経験をしているので、あなたの意見を聞いてみました。 Tensorflowは、Eigeinライブラリと、Googleアップストリームによって提供された新しいテンソル拡張機能に依存しています(ただし、CUDAバックエンドのみ)。 彼らは、この数年間の開発ですでにViennaCLで遭遇した落とし穴のすべてを経験したわけではないと思います。

@bhack私たちは現在、今週シアトルで対面の会議に参加していますが、もちろん、DNNライブラリについて話しているかどうかはわかりません... :-)

@keryellシアトルで大義を推し進めてみてください;)

@karlruppそうです、OpenCLとCUDAはプログラミングアプローチがあまりにも異なります。 たとえば、CUDAやOpenMP 4.5に見られる単一ソースの側面は、ソフトウェアエンジニアリングの観点から非常に強力です。 これが、実際のC ++プログラマー向けのこのSYCL標準がある理由です。 SYCLは、言語拡張がなく、OpenMPの側面(タスク)がいくつかあるステロイドのCUDAと見なすことができます。 典型的なSYCLデバイスコンパイラは、SPIR-Vカーネルを生成することが期待されています。

移植性に関する懸念は、OpenCL 2.1およびVulkanで受け入れることが義務付けられているSPIR-V標準(VulkanおよびOpenCLの世界ではnVidia PTX / AMDIL / ...に相当するポータブル版)ではそれほど問題になりません。 したがって、SPIR-Vを生成するフロントエンドがある場合、実行するハードウェアの詳細について特別な知識は必要ありません。 LLVM IRとSPIR-Vの間にKhronosオープンソース双方向トランスレータがあるため、まったく新しい領域が開かれます。

@ keryellSPIR -Vが一歩前進であることに同意します。 ただし、徹底的なジッティングのすべての問題に対処しているわけではありません。

実行するハードウェアの詳細についての特別な知識は必要ありません

これは、まったく同じことを主張したOpenCL 1.0マーケティングからのコピー&ペーストですか? 最大のパフォーマンスを目指す場合は、_常に_基盤となるハードウェアの詳細にたどり着く必要があります。 これは特に、テンソルの縮約が速い場合に当てはまります。

... @ scott-grayがネオンで示したように

@karlrupp

これは、まったく同じことを主張したOpenCL 1.0マーケティングからのコピー&ペーストですか?

はは。 :-)

最大のパフォーマンスを目指す場合は、常に基盤となるハードウェアの詳細にたどり着く必要があります。 これは特に、テンソルの縮約が速い場合に当てはまります。

もちろん、2次最適化を試す前に、テンプレート化されたC ++コード全体の大部分を高速化して実行しておくと便利です。

最適化のために、最適化されたバイナリカーネルをNervanaSysでステッチするか、SYCLが純粋なC ++であるため、多くの#ifdefとともにasm( "...")を使用してターゲットアーキテクチャをテストできます。 :-)とはいえ、SPIR-V自体は拡張可能であり、ある時点でインラインVHDLまたはVerilogを挿入できなかった理由がわかりません。 :-)

しかし、より具体的には、最近のサブグループ操作の導入は、ポータブルな方法で優れたパフォーマンスを達成するのに役立つはずであり、単純な組み込みのアドホック関数を使用すると役立つ場合があります。

C ++は、clBLASやその他のフレームワークなどで使用されるほとんどのコードジェネレーターを置き換えて、XまたはYハードウェアにより適合したコードを生成できる興味深いメタプログラミング機能を追加します。

また、c ++ 17のN4355は遅かれ早かれゲームに参加する可能性があります

@ karlrupp@ bhackテンソルフローのアプローチは、一般的なニューラルネットワークで必要とされる操作の大部分をハードウェア抽象化(テンソルモジュール)に依存し、いくつかの操作は特殊なライブラリ(cudnnなど)に依存することです。パフォーマンスに関しては非常に重要です。 ハードウェアアブストラクションにより、ほとんどのTensorFlow操作を一度実装して、十分なパフォーマンスを超えるアクセラレータで実行することができます。

@bhackはい私は多次元配列が大好きです。 また、私たちの関心のある領域では、C ++委員会にSG14があり、これらの問題に関心のあるすべての人々を標準に収束させようとしてます。
https://groups.google.com/a/isocpp.org/forum/#!forum/sg14
もちろん、SYCLは議論の中にあります。 :-)

@benoitsteiner主にプーリングと畳み込みのためのcudnnにあります。 すべてのベンダーが独自のバイナリアセンブリを使用してこの操作のために独自のハードウェアを備えたAPIを作成する場合、それほどスケーラブルなアプローチにはならないだろうと思います。 そのため、パフォーマンスが重要なAPI呼び出しの中には、何らかの方法で標準化したほうがよいと思うものがあります。

@keryell新しいSG14c ++のMatrix / Tensorには、特にベクトル/ SIMD呼び出しのアジェンダに非常に興味深いトピックがあります。 しかし、畳み込み、プーリング、およびその他の有用な「安定化された」深層学習インターフェースについては誰も話していなかったようです。 また、この特定の標準化サブグループには、Nvidia、Intel、Amd、CodePlayなどの人々がいますが、他のグループに属している場合は、Googleの人々はいないようです。

:+1:

@bhackはい、SG14にはまだ機械学習スタイルの提案はありません。 ただし、参加はオープンですので、いくつかの提案を送ることができます。 :-)しかし、おそらくSG6(数値トピック)の方が適切です。 彼らはまだ独自のメーリングリスト/フォーラムを持っているとは思いません。

@gujunli OpenCL CaffeはAndroidで動作しますか? ここで質問して申し訳ありませんが、他に質問する場所が見つかりませんでした:) Androidデバイスで実行されるディープラーニングライブラリがあれば素晴らしいでしょう。GPUを使用できますが、現時点ではないようです。 (私が間違っている場合は私を訂正してください!)

@krikru
公式の(ただし実験的な)OpenCLCaffeブランチをAndroidGPUで実行することはできますが、現時点でのパフォーマンスは最適とは言えません。 https://github.com/sh1r0/caffe-android-lib/issues/23およびhttps://github.com/BVLC/caffe/tree/openclを参照してください。

cudnnの実際の代替手段は、Tensor、NdConvolution、NdPooling演算子、および(おそらく)標準化可能と見なされる可能性のある他の演算子をサポートするOpenVx標準オブジェクトの拡張です。
また、cudnnチームは、すべてのリリースで導入する新しいAPIとオペレーターを選択する必要があります。 もちろん、標準はcudnnのリリースほど速く移動することはできませんが、一部の操作やオブジェクトには、標準化するのに十分な「引用履歴」があると思います。

@hughperkins現時点では、ディープラーニングライブラリを試していません。 使用できる可能性のあるライブラリを確認するために、スカウトを行っています。 AndroidでcltorchとDeepCLを試しましたか? Android専用のTorchの実装があるため、cltorchはAndroidで機能すると思いました。 そして、Androidで動作し、OpenCLを使用する実装がすでに存在する場合、なぜそのような実装があるのでしょうか? しかし、多分私はもっとよく知っているべきでした。

@hughperkins何らかの理由で、 torch-androidはAndroidの公式のTorch実装であると想像しました。つまり、cltorchを含め、他のTorch実装(少なくとも公式ではない)がAndroidでスムーズに実行される可能性はありませんでした。 なぜそう思ったのかわかりませんが、もちろん意味がありません。

えーと…スミスのようなコーディネートトーチ開発。 彼はFacebookAIResearchで働いています。 つまり、torch-androidリポジトリはSoumithに属しているので、公式にかなり近いと言えます。 しかし、それはおそらく何らかの理由でコアの一部ではありません。 そのリポジトリ、またはhttps://groups.google.com/forum/#!forum/torch7で問題として質問できると思います。実際、Soumithはhttpsでリクエストを処理する主要な人物の一種であるため、次のようになります。

これは、cltorchを含め、他のTorch実装(少なくとも公式ではない)がAndroidでスムーズに実行される可能性が低いことを意味します

cltorchはトーチの実装ではないことに注意してください。 これはプラグインであり、thtaはOpenCLを提供します。 両方が必要です。

cltorchはトーチの実装ではないことに注意してください。 これはプラグインであり、thtaはOpenCLを提供します。 両方が必要です。

ああ、説明してくれてありがとう。

@ naibaf7AMDによるOpenCLCaffeブランチとOpenCLCaffeの実装には、名前以外に共通点がありますか? 2つを比較しましたか、それともパフォーマンスに違いがあるかどうか知っていますか? あなたは、OpenCLブランチが最適なパフォーマンスにはほど遠いと書いています。 それはどういう意味で、それを改善するために何が必要でしょうか? Androidで試してみるのも面白いでしょう。

話題から外れます

@bhackうん、このスレッドを乗っ取ってすみません。 どこに質問すればいいのかわからなかった。

@krikru
Caffeブランチで問題を提起し、AndroidとOpenCLでフラグを立ててください。 次に、これについてさらに説明します。 ありがとう。

@keryell3月の次のf2fSG14会議はGoogleが主催するようです。 そこに内部のテンソルフローはありますか?

/ cc @jfbastien

おそらく@benoitsteinerは地元なので、立ち寄ることができます。
しかし、このイベントの前に、フロリダ州ジャクソンビルで月末に完全なC ++ F2Fがあります。
https://isocpp.org/files/papers/N4568.pdf
残念ながら、私はそれらのいずれにも出席することができなくなります。

CppCon2015が計算物理学と応用数学のためのC ++多次元配列について話しているかどうかはわかりませんが、いくつかの論文のフォローアップが生成されました。

+1

@bhack多次元配列について話をしていただきありがとうございます。 これは興味深いものであり、実際の問題に対処しますが、C ++でそのまま承認するにはアドホックすぎるように見えます。 個人的にはBoost.MultiArrayを使用しており、Boost.MultiArrayの洗練されたバージョンに自信があります。

WG21にもいくつかの論文があります。 ご覧のとおり、Googleの@jfbastienは、WG21でいくつかの活動を行っており、3月にGoogleでSG14f2f会議を主催するのにも役立ちました。

@bhack @keryell詳細はOpenCL / tensorflowに関連していないため、このディスカッションをSG14メーリングリストに持ち込む価値があると思います。

はい、おそらくそれはここですべての詳細に厳密に限定されているわけではありません。 Eigen / syclサポート以外cudnn呼び出しの計画はありますか?

+1非常に興味深いトピック。 それがすぐに来ることを願っています。

このスレッドは非常に興味深いものです。 私はAndroidでカフェを動作させることを試みてきました。 結果は驚くべきもののようです。マリのGPUで実行されているカフェはCPUより2〜3遅いようですが、エネルギー効率は約4〜5倍です。 テストはGalaxyS6(Mali T760、Peak Performance 200 GFlops)で実行されました。

GEMMはカフェの畳み込みの中核であるため、Androidでのパフォーマンスをプロファイルすることにしました。 ウィーンCLはいくつかの単純なカーネルほど効率的ではないようです。 これで、大きなマトリックス(2k x 2k)に対してGPUをCPUと同じ速度で実行できるようになりました。 通常、GPUの方がはるかに高速であると予想されるため、これは依然として直感に反します。

見る:
https://github.com/strin/mocha-profile

カーネルの実装はここにあります:

GEMM用のOpenCLカーネル: https ://github.com/strin/gemm-android

何かご意見は?

@bhack共有してくれてありがとう。 このスレッドはとても面白そうです。 提案されたようにDVFSをオフにしようとしましたが、ViennaCLのsgemmで大きなパフォーマンスは見られませんでした。

+1

@strin MALI SDKの最後のsgemmバージョンを試しましたか?

Tensorflowは遅れています! ああああ
https://gist.github.com/jarutis/ff28bca8cfb9ce0c8b1a

これは戦略に影響を与えます:http: //lists.llvm.org/pipermail/llvm-dev/2016-March/096576.html?
編集:
「StreamExecutorは現在、Googleの内部GPGPUアプリケーションの大部分のランタイムとして使用されており、そのスナップショットはオープンソースのTensorFlow_プロジェクトに含まれており、GPGPUランタイムとして機能します。」

+1

それに取り組んでいる人々が、テンソルフローが1.0に近づくまでに、CUDNNの代替問題をなんとか克服できることを願っています

@martinwickeなぜこの問題は解決されたのですか?

私はあなたのコミットがこれを修正するとは思わない。

異なるリポジトリで常に同じコミットコメントを使用できるとは限りません;) https://github.com/tensorflow/skflow/issues/22

ああGitHub

@vrvハイパー通知を受け取ったので、ストリームエグゼキュータ戦略についてフィードバックをいただけますか? ;)

OpenCLサポートの欠如を含め、すべてについてGitHubのせいにするつもりです。 ;)

@benoitsteinerはもっとコメントできるかもしれません。 「ストリームエグゼキュータ」戦略の意味がよくわかりません。 現在、ストリームエグゼキュータとCuDNNおよびEigenのバージョンを使用しており、これらはすべて一緒にうまく機能するため、OpenCL側の計画がどのように変更されたかはわかりません。

つまり:
「StreamExecutorとは何ですか?
========================
StreamExecutorは、 CUDAおよびOpenCLホスト側プログラミングモデル(ランタイム)の統合ラッパーです。 これにより、ホストコードは、同じように機能するデータ並列カーネルを備えたCUDAまたはOpenCLデバイスのいずれかをターゲットにすることができます。」

缶詰操作
==================
StreamExecutorは、一般的なデータ並列操作用にいくつかの事前定義されたカーネルを提供します。
サポートされている操作のクラスは次のとおりです。

  • BLAS:基本的な線形代数サブプログラム、
  • DNN:ディープニューラルネットワーク、
  • FFT:高速フーリエ変換、および
  • RNG:乱数の生成。

@keryellこんにちは。ザイリンクスC ++やOpenCLなどの高級プログラミング言語を使用してFPGAにTensorFlowを実装することにも興味があります。 何か計画があれば、喜んで貢献させていただきます。

@henlineOpenclでのStreamExecutorと関連するCannedの役割について説明していただけますか
Tensorflowの操作。 これがEigenとcudnnのSyCL計画とどのように統合されるのかまだわかりません(交換?)

:+1:私もこれに貢献したいと思います。

@bhack StreamExecutorは、CUDAランタイムおよび一部のCUDAライブラリ(cublasやcudnnなど)と同等の機能を提供します。 ただし、GPUカーネルを作成する必要があります。これは、Eigenを使用する目的です。

@benoitsteinerでは、CUDA用とOpencl用の2つのカーネルを作成する必要がありますか?

@benoitsteinerでは、内部にtensorflow / tensorflow / stream_executor / opencl /の対応物がまだありませんか? 「缶詰オペレーター」はどうですか?

@bhack Eigenを使用すると、一度実行する計算を説明する式を記述し、CPUでその式を評価するカーネル(エバリュエーターと呼びます)とCUDAデバイスで式を評価する別のカーネルを自動的に生成できます。 EigenでOpenCLがサポートされるようになると(近づいています)、OpenCLカーネルを自動的に生成することも可能になります。
パフォーマンスが重要ないくつかのTensorFlow操作(畳み込みなど)では、手動で最適化されたカーネルやサードパーティのライブラリを使用します。 このような場合、これらの操作の適切なOpenCL実装が必要になります。

:+1:

https://bitbucket.org/benoitsteiner/eigen-openclでさらにコードをプッシュする計画はありますか? syclコンパイラはどうですか? オープンソースのGPUターゲット実装はリリースされていないようです。

@bhack @benoitsteiner
私は間もなく、Caffe上のOpenCLのcuDNN置換(これを行うために最もパフォーマンスとメモリが重要であるため、畳み込み部分のみ)をリリースします。 多分それはTensorflowポートのいくつかの用途にもなるでしょう。

@bhack :Codeplayはopenclの面で多くの進歩を遂げました。 今後数週間でhttps://bitbucket.org/benoitsteiner/eigen-openclへの大きなプッシュにご期待ください。

@ naibaf7 :畳み込み演算の高速実装は、TensorFlowで非常に役立ちます。 楽しみにしています。

@benoitsteinerどうすればcuda実装を簡単に削除できますか? '#ifdefGOOGLE_CUDA'はとても複雑だからです。 CUDAを意味することもあれば、GPUを意味することもあります。

この問題はロードマップ(_Platforms_を参照)に到達したので、OpenCLサポートがTensorFlowにいつヒットするかについて大まかに考えていますか? バージョン0.9 / 1.0のように? 2016年第3四半期? それとも2017年はもっと現実的ですか?

@benoitsteiner eigen -opencl https://bitbucket.org/benoitsteiner/eigen-openclは、openclテンソルフローの開発をサポートするのに十分な準備ができていますか?

テンソルフローはEigenテンソルのみに依存しますか、それともEigenの他の依存関係がありますか?

@NEELMCW Codeplayは、OpenCLのEigenTensorsへの部分的なサポートをリリースしました。 コードはこのbitbucketリポジトリで入手できます。 ほとんどの場合、TensorFlowはEigenテンソルに依存しています。 線形代数演算についてはEigenに追加の依存関係がありますが、これらの演算のOpenCL互換の実装を提供する必要はありません(少なくとも最初はそうではありません)。 したがって、TensorFlowでOpenCLのサポートを開始するのに非常に良い立場にあります。

あなたが貢献することに興味があるなら、私はこのスプレッドシートで何をする必要があるかを追跡し始めました

@benoitsteiner私はC ++ 11 OpenCL BLASライブラリ(https://github.com/CNugteren/CLBlast)の作成者であり、現在、そこで半精度サポートを実装しています。 このプロジェクトのBLAS / GEMM部分に貢献したり、CLBlastを変更してニーズに合わせたりできることをうれしく思います。

@CNugteren
CLBlastはOpenCL-Caffeでも利用できるようになりました。見たことがありますか? :)
libDNN畳み込みを見る機会もありましたか?

@ naibaf7見ました、はい! :)これまでlibDNNをまったく調べていませんが、正確に何を意味するのかわかりません。 畳み込みはGEMMを使用して実装されていると思いますか?

@CNugteren
はい、私はあなたがそれを調べて、libdnnにいくつかの改善や調整のヒントを与えることができればいいと思っただけです。
(https://github.com/naibaf7/caffe/blob/master/src/caffe/greentea/libdnn.cpp)。
これはGEMMを使用していますが、暗黙的(BLASを介さず、ワークグループレベルの小さなGEMMのみ)であるため、より高いレベルの並列処理が可能であり、中間バッファーは必要ありません(データをGEMMスキームに展開するため)。

やあみんな、

@benoitsteiner私たちのプッシュに言及してくれてありがとう! お役に立てば幸いです!

このコードをコンパイルするには、SYCLコンパイラが必要です。 現在、サポートされているコンパイラはCodeplayのComputeCppのみであり、Codeplayの評価プログラムから入手できます。 ComputeCppは、2016年後半にパブリックオープンベータとして無料で利用可能になり、2017年に無料バージョン(ComputeCpp Community Edition)でリリースされます。これにより、AMDやIntelGPUなどのOpenCLデバイスでTensorFlowをコンパイルおよび開発できるようになります。およびCPU。

ところで。 この問題にはOpenCLラベルが付いているべきではありませんか? :)

ありがとう、
ルーク

それがオープンソースツールでもコンパイルできることを本当に望んでいます。 @keryell新しいOpenclブランチでどうなっているのか

@bhack最初に、CPUOpenMPホストデバイスモードでtriSYCLを使用できるかどうかを確認するとよいでしょう。 しかし、TensorFlow / Eigenビルドシステムに入る帯域幅がありません。 :-(誰かが試してみたい場合は、遠慮なくそうしてください。:-)

https://github.com/keryell/triSYCL/commits/openclは、OpenCL相互運用性モードでOpenCLカーネルをすぐに実行できるようにする必要がありますが、Clang / LLVMアウトライナーがまだないため、私たち全員が夢見ているSYCLシングルソースモードでは実行できません。 SYCLからカーネルを抽出します。 しかし、Khronosは最近、AMDとIntelのコンポーネントをオープンソース化し、その基盤となるOpenCL C ++ 2.2とSPIR-Vをサポートしています。 つまり、それは「ただの」時間の問題です...

TensorflowがOpenCL(AMD GPU)で実行できる可能性がある場合の見積もりを誰かが提供できますか? そして、パフォーマンス/ユーザビリティの曲線は時間の経過とともにどのようになりますか? 過去のすべての情報を実用的なハードウェア購入情報に解析することは困難です。 :)

前もって感謝します!

@ djan92
残念ながら、使えるようになるまで1年はかかると思います。 非常に最先端のライブラリとテクノロジーに基づいて構築されるようですが、それらのほとんどはまだ準備が整っていません。
また、完全なツールスタックがオープンソースとして利用可能になり、以前は利用できなくなったときにのみ、オンボードにジャンプします。

@ naibaf7

残念ながら、使えるようになるまで1年はかかると思います。 非常に最先端のライブラリとテクノロジーに基づいて構築されるようですが、それらのほとんどはまだ準備が整っていません。
また、完全なツールスタックがオープンソースとして利用可能になり、以前は利用できなくなったときにのみ、オンボードにジャンプします。

SYCLポートの準備が整うのを待っている間に、最初にCLバージョンを実装してみませんか? 私はここに助けてくれる人がかなりいると思います。 一年は長すぎるように聞こえます。

@ djan92
はい、その通りです。#22は生後約8か月で、投稿数は100を超えています。 情報が殺到する可能性があります!

TensorflowがOpenCL(AMD GPU)で実行できる可能性がある場合の見積もりを誰かが提供できますか?

TensorFlowは、(Tensorモジュール内の)テンソル計算にEigenライブラリを使用します。 SYCL(https://bitbucket.org/benoitsteiner/opencl branch Codeplay)を使用してOpenCL1.2の部分的な実装をコミットしました。 この作業にSYCLを使用した理由は、TensorFlowのこのセクションでC ++式ツリーを使用しているためです。これは、SYCL for OpenCLでは可能ですが、OpenCLCでは直接使用できません。 畳み込みやBLASなどのTensorFlowの他のコンポーネントは、OpenCLCを直接使用できます。

現在、ComputeCpp(CodeplayのSYCLコンパイラ)をbazelビルドシステムに統合する作業を行っています。 これはすぐに準備ができているはずです(このリポジトリに従ってください:https://github.com/benoitsteiner/tensorflow-opencl/)。 その後、ComputeCppを使用してOpenCL SPIRをサポートするシステム(AMDやIntelなど)でTensorFlowを高速化する必要があります。 TensorFlowをさらに高速化し、OpenCLの実装とtriSYCLオープンソースSYCLをさらにサポートするためのさらなる作業が継続されます。 SYCLとOpenCLはマルチベンダー、ロイヤリティフリーのオープンスタンダードであるため、このアプローチを使用してサポートできるプラットフォームとデバイスはたくさんあります(AMD GPUだけでなく)。

ComputeCpp Community Editionコンパイラは、2016年後半に無料で利用できるようになります(ベータ形式:完全準拠は2017年初めに無料でリリースされます)。

TensorFlowの非C ++部分(BLASや畳み込みなど)の高速化に関する作業は、SYCLなしで実行でき、個別に実装できます。 さまざまなハードウェアベンダーが、これらの機能用に最適化された独自のライブラリを持っている場合があります。 または、これらの機能にC ++でEigenを使用することもできます。

そして、パフォーマンス/ユーザビリティの曲線は時間の経過とともにどのようになりますか?

パフォーマンスは着実に向上すると考えています。 多種多様なデバイスで高速化するには、データをより効率的に管理する必要があります。そのため、ホストと複数のデバイス間でデータの移動をより効率的に管理できるように、「マネージドテンソル」の作業項目があります。 現在、さまざまなデバイスでパフォーマンスがどのように変化するかを予測することは困難です。 現在、アクセラレーションはほとんどありませんが、TensorFlowでオープンスタンダードのアクセラレーションを可能にするインフラストラクチャを整備しています。

@ naibaf7

残念ながら、使えるようになるまで1年はかかると思います。

基本的な操作はすぐにここに来るはずです。 オープンスタンダードベースのアクセラレーションをサポートするために、コード内に基本的なインフラストラクチャを配置しています。 コミュニティのサポートがあれば、加速されて使用可能なバージョンが1年以内に完成すると信じています。

また、完全なツールスタックがオープンソースとして利用可能になり、以前は利用できなくなったときにのみ、オンボードにジャンプします。

ComputeCppは、2016年に無料で公開される予定です。オープンソースのtriSYCLサポートが後に続くはずです。 オープンソースのOpenCLは、pocl、Shamrock、Clover、Beignetですでにサポートされています。

@robertwgh
EigenのC ++テンソルコードはSYCLなしではOpenCLCに簡単に移植できませんが、OpenCLCでうまく機能する他の機能があります。このスプレッドシートをご覧ください: https ://docs.google.com/spreadsheets/d

ComputeCppの評価版は公開前に提供しています。 ご希望の場合は、私にメールを送ってください:)

@lukeiwanski素晴らしい、アップデートしてくれてありがとう。 1年以内にフル機能でそれを成し遂げることについてあなたが正しいことを願っています。

LLVMでのStreamexecutorの別のステップ

rx 480で加速する可能性はありますか?

@benoitsteiner
LibDNNスタンドアロンは統合に利用できます。
https://github.com/naibaf7/libdnn

これを読むのは素晴らしいことです。 Beignet2.0が洗練されていれば助かります。 現在、SkylakeとIrisには多くの可能性があります。

誰かが調べたい場合は、最近のプルリクエストがhttps://github.com/benoitsteiner/tensorflow-opencl/pull/1に追加されました。

Imagination(GPU)のOpenCL SDKにアクセスするには、NDAが必要です。共有ライブラリしかありません。 このライブラリに基づいてテンソルフローを実行することは可能ですか?

@alephman
OpenCLプログラムをビルドするために、ベンダー固有のヘッダーファイルは必要ありません。 https://www.khronos.org/registry/cl/api/1.2/cl.hppのcl.hppと、他のSDKのopencl.h / cl.hを試してください。 例-私は少なくとも3つのOpenCLプラットフォームを持っており、それはすべて1つの共有/usr/include/CL/cl.hで動作します

OpenCLで実行されるTensorFlowはまだサポートされていません。 進行中の作業です。 現在、AMDGPUに取り組んでいます。 PowerVRサポートが続く必要があります。 開発に貢献したい場合は、直接お問い合わせください(Codeplay)。 PowerVRでTensorFlowを実行する場合は、もう少し進行するのを待つ必要があります。

@inferrnaありがとう、ベンダー固有の実装を隠すOpenGLに似ています。

@andrewrichards私は開発に貢献するのが大好きです、あなたと連絡を取る方法は?

最も簡単なのは、 https ://www.codeplay.com/products/computecppのページで「興味のある登録」をクリックすることです。
それはあなたを私たちの開発者プログラムに連れて行き、私たちはこの@alephmanで一緒に働くことができます

必要に応じて、オープンソースの代替手段でコンパイルできるように共同で貢献することもできます。 https://github.com/tensorflow/tensorflow/issues/22#issuecomment-221841173を参照してください

皆さんこんにちは!
TensorflowのサポートがNvidiaCudaの外部に拡張されていると聞いて非常にうれしく思います。 次のようなAPUでも動作させることを検討してください。http: //www.amd.com/en-us/products/processors/laptop-processors#sectionOne

@kgocheva
APUは、CPUとGPUの両方の部分でOpenCLをサポートします。
これは、OpenCLサポートの準備ができていれば、箱から出してすぐに機能するはずです。
一方、すでにAPUをお持ちで、別のMLフレームワークを試してみたい場合は、BVLC OpenCLCaffeがすでに機能しています。

@ naibaf7説明してくれてありがとう。 Tensorflowをローカルで実行するための費用効果の高いハードウェア/ソフトウェアの組み合わせを検討しており、OpenCL開発の進捗状況を確実に追跡します。

@hughperkins
はい、問題になる可能性がありますが、実際にGCLAの問題である場合は、im2col / col2imやその他の畳み込み実装などの部分も外部APIとしてプラグインできると思います。 これは、そのような作品の元の作者にとっても良いかもしれません。

@hughperkins OpenCL1.2のSYCLを介してOpenCLをTensorFlowに取り込む作業を行っています。
「todos」と進捗状況については、 https ://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid = 1625897530をご覧ください。
最近、SYCLhttps://www.codeplay.com/products/computesuite/computecpp用のComputeCppComunityEditionというコンパイラをリリースしました。 人々はそれを試すことができます!
また、Eigenライブラリhttps://bitbucket.org/benoitsteiner/opencl/branch/ComputeCppに焦点を当てています-TensorFlowのMNISTに必要な段階に到達しています-いくつか残っています。
制約については、現在のComputeCpp CEリリースがIntel(CPU、GPU)およびAMD(CPU、GPU)でテストされており、Ubuntu 14.0464ビットおよびCentOS64ビットをサポートするプラットフォームも同様です。
ComptueCppは無料でダウンロード可能であり、商用およびオープンソースプロジェクトで使用できます。
<3つのオープンコミュニティだから:)

@lukeiwanskiスレッドでこれについて議論/質問して申し訳ありませんが、他の人にも興味があると思います:CodeplayがOpenCL実装のSYCLに非常に興味を持っていることを理解しており、他の人がこの作業に興味を持っているのをすでに聞いていますあなたも。 たとえば、Movidiusの関係者による投稿を読みました。 しかし、これに対するGoogleの貢献は実際には何でしょうか。 MovidiusはAMDやその他のパートナーとしてリストされているので、OpenCLのSYCLを奨励またはサポートしていることは理解できますが、私が知る限り、Googleはあなたのパートナーではなく、これまで貢献していませんか?!

誤解しないでください。私はあなたの仕事が本当に好きですが、あなたの努力を統合し、リソースをプールして、Googleと協力してみるのは良い考えではないでしょうか。 私には、多くの異なるパーティがOpenCL for TensorFlowに関心を持っているように見えますが、これらのパーティは一緒に開発されないため、大きな可能性は使用されていません。

私は間違っている可能性があり、これが十分に議論されている場合は謝罪しますが、Google(または他の当事者)がこれに協力しようとする主要な試みをまだ知らないため、コミュニティがどのようになっているのかまだわかりません直接の貢献、テスト、またはその他の方法のいずれかを介して、(単一の個人のように)支援またはサポートすることができます。

@ascenator Googleは、このプロジェクトでLukeと彼のCodeplayの同僚と、ほぼ12か月間緊密に協力してきました。 この取り組みに対するCodeplayの貢献は多大なものでした。そのため、OpenCLに関連する更新の伝達に関しては、Codeplayに主導権を握らせる必要があると感じました。 これが、このトピックについて私たちからあまり聞いていない理由です:)

ComputeCppコンパイラが広く利用できるようになったので、これまでに行われた作業をマージすることを計画しています。 ただし、最初に、既存のコードベースを不安定にしないことを確認するために、包括的なテストインフラストラクチャをまとめたいと思います。

この取り組みへのすべての貢献を歓迎します。サポートが必要な場合は、お気軽にご連絡ください。 特に、行列の乗算と畳み込み用の高性能OpenCLカーネルに関心があります。 いくつかの候補が提案されていますが、それぞれの長所と短所、またはそれらを統合する方法についてはまだ調査を開始していません。

@benoitsteinerは、説明してくれてありがとう、そして私の誤った情報をお詫びします! これは非常に良いと有望に聞こえます! その時は間違いなくComputeCppを見ていきます。 TensorFlowのOpenCLサポートを本当に楽しみにしています。これは、ロボット工学(ディープラーニングアプリケーションでTensorFlowを研究および使用している分野)に多くの新しい可能性を提供するためです。 私は少なくとも初期のリリースを見て、テスト/デバッグを試みます。 いくつかのIntelチップとテストを待っているARMCPUがいくつかあります;)

@hughperkins ...申し訳ありませんが、これは完全にトピックから外れていませんか? これがOpenCLTFにどのように関連しているかわかりませんか?

ここで、行列の乗算と畳み込みカーネルにチューニングアプローチを採用するかどうか、およびSPIR-Vを生成するCompiteCppの有効なオープンソースの代替手段になるかどうかを知りたいと思います。

2つの新しいクロノスグループ標準がhttps://www.khronos.org/news/press/khronos-launches-dual-neural-network-standard-initiativesでリリースされています

それが役立つ場合は、isaacのより良いバージョンが公開されています: https ://github.com/ptillet/isaac、Maxwell、Pascal、FijiでclBLASとcuBLASよりも大幅に高速化されています。 また、1Dおよび2Dの削減のために、Tensorflowよりも高速な(入力対応)カーネルを提供します。

@hughperkinsは、CUDA-OpenCLトランスレーターではなく、OpenCLデバイス用のCUDAコンパイラーを作成する機会が多いようです。

@hughperkinsたぶんOpenCL2.0のSVM機能がポインターの問題を解決できるでしょうか? Nvidia(AMD、Intel、ARM、Qualcomm)以外のすべての人がOpenCL2.0をサポートし始めているので。 多分それは良い解決策ですか?

@hughperkinsそれはblasの実装そのものです。 clblasおよびcublasヘッダーにいくつかのシンボルを実装しているため、再コンパイルやコード変更はありません。 必要です。 clblast.hは別のヘッダーを使用しているため、いくつかのシンボルを実装することもできます。 アイザックのいくつかの利点は次のとおりです。

  • 完全に動的であるため、再コンパイルせずにCUDAまたはOpenCLのいずれかまたは両方を使用できます。
  • 入力を認識し、大きな正方行列のカーネルを調整しません。 それはあなたが再調整することなくあなたが考えることができるすべての形でうまくいくはずです。
  • numpy / arrayfireに似たC ++ API。 要素ごとの操作と削減を組み合わせるためのいくつかの融合

@ marty1885
あまり。 AMDはAMDGPU-PROドライバーの1.2サポートに戻りました。 2.0の完全なサポートが普及するまでしばらく時間がかかる場合があります。 確かにそこに短期的な解決策はありません。

  • はい
  • 必要に応じて、一連の操作の互換性をハックすることができます(たとえば、** MVをGEMVに転送します)。 複雑なサポートには注意が必要です。 ダブルサポートはすでにここにありますが、それに合わせて調整されたアーキテクチャはありません。

@hughperkins

私のコードは明らかなOpenCLルールに違反していないようです

はい、ポインタを含む__global構造体(配列や構造体など)を単純に渡すことは、それらのポインタが別のデバイスのメモリを指すことができるという理由だけで正しくありません(OpenCLは、あるデバイスが別のデバイスのメモリにアクセスできないマルチデバイスパラダイムをサポートしています)。 しかし、OpenCLコードへの中間変換なしでIRレベルで克服することは可能であるように思われます-それは私が仮定したものです:)

@ benoitsteiner@ henlinehttps: //github.com/henline/streamexecutordocから、streamexecutorがCLバージョンの既定の操作(DNN、BLASなど)をすぐにサポートしていることを示しています。 グーグルがすでにclDNN、clBLAS実装をTensorflowに対応させているが、まだオープンソースではないことを示唆していますか?

それ以外の場合、同じソフトウェアアーキテクチャを維持したい場合は、OpenCL2.0 +とSYCL2.2がSVMをサポートします。
OpenCL 2.0+は、たとえばAMDやIntelGPUでサポートされています。 組み込みの世界では、コスト上の理由からホストとデバイスのメモリが同じであることが多いため、OpenCL1.xでも副作用によってサポートされることがよくあります。

@keryell
しかし、最も注目すべきプラットフォームであるLinux +新しいAMDGPU(RX 480、今後のVega)は、現時点ではOpenCL 1.2のみをサポートしています...そしてそれがいつ変わるかは誰にもわかりません(私の賭けは1年以内に始まります)。 OpenCL 2.0用のBeignet(オープンソースLinux Intel)も、まだバグの多い混乱です。 安定版には1.2があります。
また、OpenCL互換チップを製造しているすべての中小企業を考慮すると、1.2のサポートはほとんど得られていません。 したがって、OpenCL 2.0に依存しているものはすべて、実際には非常に悪い適応率になると思います。

私は..どんなハードウェアヴェーダーもSPIR-Vを消費する緊急性を持っていると思いますか? Vulkanに対するGraphic / Shadersのプレッシャーは、Opencl側に役立つと思います。

@ naibaf7で、OpenCL 2の議論に戻るかどうか、ある時点で実際のものを提供する必要があります...そうでない場合は、TensorFlowが実行されているnVidiaGPUとCUDAがすでに存在します... :-)
ただし、もちろん、SVMを使用しないバージョンのTensorFlowにはある程度の関心があります。

@keryell Vulkan SPIR-Vのどれだけがドライバー(すでに十分なデバイスカバレッジを持っている)で動作すると思いますか?最新のOpenclバージョンをプッシュすると思いますか?

@ naibaf7 Khronosの会議は来週ソウルで開かれ、OpenCLとVulkanの両方の人々が参加しますが、議論は公開されていません。 しかし、それはお互いを改善するためにそれぞれの世界を持っていることは良い考えのように聞こえます、そしてある時点でTensorFlowに利益をもたらします。 :-)

@keryell
はい、DeepLearningの有益なことについて話し合ってくれることを願っています:)

おめでとうございます! 彼らは同じ問題を解決しようとしたので、必ずHIPプロジェクトをチェックしてください。 彼らは、手動で変換する必要があるものを定義するHIPと呼ばれる新しい言語を作成することを選択しました(計算レベルをチェックすることによって倍精度サポートをチェックするなど)。 プロジェクトが進行する間、手動翻訳の量は減少します。 参照: https ://github.com/GPUOpen-ProfessionalCompute-Tools/HIP

LLVMを理解したので、HIPを使用して、Tensorflowまたはオウンゴールの進行を妨げているいくつかのバグを修正することをお勧めします。 このようにして、彼らがすでに修正した問題を解決する必要はありません。

@hughperkins
このhttps://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md#create-the-pip-package-and-installに従って、フォークでPythonモジュールをビルドすることはできません

INFO: From Compiling tensorflow/core/kernels/gather_functor_gpu.cu.cc:
gpus/crosstool: -x cuda
gpus/crosstool: using cocl
gpus/crosstool: PATH=/usr/bin:/usr/local/bin /usr/local/bin/cocl -D_FORCE_INLINES -gencode=arch=compute_30,\"code=sm_30,compute_30\"   -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNDEBUG -DEIGEN_MPL2_ONLY -std=c++11  -I. -Ibazel-out/local_linux-py3-opt/genfiles -Iexternal/bazel_tools -Ibazel-out/local_linux-py3-opt/genfiles/external/bazel_tools -Iexternal/eigen_archive -Ibazel-out/local_linux-py3-opt/genfiles/external/eigen_archive  --compiler-bindir=/usr/bin/gcc -I . -fPIC  -x cu  -O2 -c  -o bazel-out/local_linux-py3-opt/bin/tensorflow/core/kernels/_objs/gather_functor_gpu/tensorflow/core/kernels/gather_functor_gpu.cu.pic.o tensorflow/core/kernels/gather_functor_gpu.cu.cc
dirname: invalid option -- 'O'
Try 'dirname --help' for more information.

私はubuntu16.04を使用しています、dirnameはcoreutilsからのものです-8.25-2ubuntu2

@hughperkinsこの命令を使用してリポジトリのTFdockerfileを微調整すると、他の人のセットアップが簡単になると思います。

はい、もっと機能的なものがあるとき。 基本的に、それはあなたが投稿したこの指示のかなりのコピーと過去です。

私は、2015年後半にATI 6770M(OpenCL 1.2)を搭載したMacBookのMacOS10.10.5でこれを構築することを実験しています。

Xcode 8、Anaconda(Python 3.5)、およびclang + llvmに相当するMacPortsをインストールしました。

apt-get行の代わりに、次のようにします。

sudo port install clang-3.8 llvm-3.8

/ proc / cpuinfoを使用する代わりに、次のようにします。

NUM_PROCS = $(system_profiler SPHardwareDataType | grep "コアの総数" | cut -d ":" -f 2)

次に、MacPortsを使用するようにMakefileを変更し、makeを実行します

perl -pi.bak -e's |(CLANG)=。+ | $ 1 = / opt / local / libexec / llvm-3.8 / bin / clag ++ | ' Makefile
perl -pi -e's |(LLVM_CONFIG)=。+ | $ 1 = / opt / local / bin / llvm-config-mp-3.8 | ' Makefile
perl -pi -e's |(LLVM_INCLUDE)=。+ | $ 1 = / opt / local / libexec / llvm-3.8 / include | ' Makefile

Macos OpenCLdirsに更新します。 将来: /System/Library/Frameworks/OpenCL.framework/Versions/Current/Headers/cl.h'#ifdefAPPLE '条件付きを使用

grep -Rl'include "CL / '* | xargs perl -pi.bak -e's | include" CL / | include "OpenCL / | g'
make -j $ {NUM_PROCS}

これは私が得る限りです:

$ make -j $ {NUM_PROCS}
mkdir-pビルド
mkdir-pビルド
mkdir-pビルド
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build / hostside_opencl_funcs.o -std = c ++ 11 -fPIC -g -O2 -I pwd / include -I pwd / src / EasyCL src / hostside_opencl_funcs.cpp
/ opt / local / libexec / llvm-3.8 / bin / clang ++ -I / usr / lib / llvm-3.8 / include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-exceptions -c -o build / mutations.o -g -I / opt / local / libexec / llvm-3.8 / include src / mutations.cpp
/ opt / local / libexec / llvm-3.8 / bin / clang ++ -I / usr / lib / llvm-3.8 / include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-exceptions -c -o build / struct_clone.o -g -I / opt / local / libexec / llvm-3.8 / include src / struct_clone.cpp
/ opt / local / libexec / llvm-3.8 / bin / clang ++ -I / usr / lib / llvm-3.8 / include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-exceptions -c -o build / readIR.o -g -I / opt / local / libexec / llvm-3.8 / include src / readIR.cpp
src / hostside_opencl_funcs.cpp:17からインクルードされたファイル:
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/include/cocl/cocl.h:91:16:警告: 'host'属性は無視されます[-Wignored-attributes]
attribute ((host))inline unsigned long long atomExch(volatile unsigned long long _p、unsigned long long val){
^
src / hostside_opencl_funcs.cpp:194:33:エラー:メンバー関数 'in'の呼び出しがあいまいです
launchConfiguration.kernel-> in(offset);
〜〜〜〜〜〜〜〜 ^ _ _
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:101:15:注:候補関数
CLKernel in(float value);^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:104:15:注:候補関数CLKernel * in(int32_t value);^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:106:15:注:候補関数CLKernel * in(int64_t value);^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:108:15:注:候補関数CLKernel * in(uint64_t value);^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:110:15:注:候補関数CLKernel * in(uint32_t value);^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:73:15:注:候補関数は実行可能ではありません:「size_t」(別名「unsignedlong」からの既知の変換はありません')から' easycl :: CLArray * '最初の引数の場合CLKernel * in(CLArray * clarray1d){return input(clarray1d);



}^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:91:36:注:候補関数テンプレートは実行可能ではありません:2つの引数が必要ですが、1つ提供されましたテンプレートCLKernel * in(int N、const T * data);^1つの警告と1つのエラーが生成されました。make:* _ * [build /hostside_opencl_funcs.o]エラー1作る: * *未完成の仕事を待っています...
src / struct_clone。 cpp:245 :12:警告:11個の列挙値がスイッチで処理されません: 'HalfTyID'、 'X86_FP80TyID'、 'FP128TyID' ... [-Wswitch]
switch(typeID){
^
1つの警告が生成されました。

launchConfiguration.kernel-> in((int64_t)offset);

このパッチは機能しました。 ありがとう。

これを適用した後、ビルドを続行すると、size_t名前空間エラーが発生しました。

$ make -j $ {NUM_PROCS}
mkdir-pビルド
mkdir-pビルド
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build / hostside_opencl_funcs.o -std = c ++ 11 -fPIC -g -O2 -I pwd / include -I pwd / src / EasyCL src / hostside_opencl_funcs.cpp
/ opt / local / libexec / llvm-3.8 / bin / clang ++ -I / usr / lib / llvm-3.8 / include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-exceptions -o build / ir-to-opencl -g -I / opt / local / libexec / llvm-3.8 / include src / ir-to-opencl.cpp build / struct_clone .o build / readIR.o src / ir-to-opencl-common.cpp build / mutations.o /opt/local/bin/llvm-config-mp-3.8 --ldflags --system-libs --libs all
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build / cocl_events.o -std = c ++ 11 -fPIC -g -O2 -I pwd / src / CLBlast / include -I pwd / include -I pwd / src / EasyCL src / cocl_events.cpp
/ opt / local / libexec / llvm-3.8 / bin / clang ++ -I / usr / lib / llvm-3.8 / include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-exceptions -o build / patch-hostside -g -I / opt / local / libexec / llvm-3.8 / include src / patch-hostside.cpp build / readIR.o build / mutations.o build / struct_clone.o src / ir-to-opencl-common.cpp /opt/local/bin/llvm-config-mp-3.8 --ldflags --system-libs --libs all
src / hostside_opencl_funcsからインクルードされたファイル。 cpp:17
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/include/cocl/cocl.h:91:16:警告: 'host'属性は無視されます[-Wignored-attributes]
attribute ((host))inline unsigned long long atomExch(volatile unsigned long long _p、unsigned long long val){
^
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build / cocl_blas.o -std = c ++ 11 -fPIC -g -O2 -I pwd / src / CLBlast / include -I pwd / include -I pwd / src / EasyCL src / cocl_blas.cpp
1つの警告が生成されました。
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build / cocl_error.o -std = c ++ 11 -fPIC -g -O2 -I pwd / src / CLBlast / include -I pwd / include -I pwd / src / EasyCL src / cocl_error.cpp
src / cocl_blasからインクルードされたファイル。 cpp:15
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/include/cocl/cocl_blas.h:8:9:エラー:名前空間「std」に「size_t」という名前のタイプがありません。 単に「size_t」という意味ですか?
typedef std :: size_t cublasStatus_t;
^ 〜〜
size_t
/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23:注:「size_t」はここで宣言されています
typedef SIZE_TYPE size_t;
^
src / cocl_blasからインクルードされたファイル。 cpp:15
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/include/cocl/cocl_blas.h:17:5:エラー:名前空間「std」に「size_t」という名前のタイプがありません。 単に「size_t」という意味ですか?
std :: size_t cublasCreate(cublasHandle_t phandle);^ 〜〜size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23:注:「size_t」はここで宣言されていますtypedef SIZE_TYPE size_t;^src / cocl_blasからインクルードされたファイル。
単に「size_t」という意味ですか?std :: size_t cublasDestroy(cublasHandle_t handle);^ 〜〜size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23:注:「size_t」はここで宣言されていますtypedef SIZE_TYPE size_t;^src / cocl_blasからインクルードされたファイル。
単に「size_t」という意味ですか?std :: size_t cublasSgemm(cublasHandle_t blas、int transA、int transB、int M、int N、int K、^ 〜〜size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23:注:「size_t」はここで宣言されていますtypedef SIZE_TYPE size_t;^src / cocl_blasからインクルードされたファイル。
単に「size_t」という意味ですか?std :: size_t cublasSetPointerMode(cublasHandle_t handle、cublasPointerMode_t mode);^ 〜〜size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23:注:「size_t」はここで宣言されていますtypedef SIZE_TYPE size_t;^src / cocl_blasからインクルードされたファイル。
単に「size_t」という意味ですか?std :: size_t cublasGetPointerMode(cublasHandle_t handle、cublasPointerMode_t * mode);^ 〜〜size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23:注:「size_t」はここで宣言されていますtypedef SIZE_TYPE size_t;^src / cocl_blasからインクルードされたファイル。
単に「size_t」という意味ですか?std :: size_t cublasSetStream(cublasHandle_t handle、cudaStream_t streamId);^ 〜〜size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23:注:「size_t」はここで宣言されていますtypedef SIZE_TYPE size_t;^/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build / cocl_memory.o -std = c ++ 11 -fPIC -g -O2 -I pwd / src / CLBlast / include -I pwd / include -I pwd / src / EasyCL src / cocl_memory.cpp/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build / cocl_device.o -std = c ++ 11 -fPIC -g -O2 -I pwd / src / CLBlast / include -I pwd / include -I pwd / src / EasyCL src / cocl_device.cpp7つのエラーが生成されました。make:* _ * [build /cocl_blas.o]エラー1make:**未完成の仕事を待っています...。

スレッドをまだ読み取り可能にするために、長いログオンの要点をプッシュできますか?

質問:アドレス空間の問題をどのように解決していますか?

@hughperkins SYCLの仕様は、セクション5.8(「アドレス空間の控除」)で説明されています。
実装がさまざまなメモリタイプを処理する必要がある方法。 これ
PlayStation 3で行われた以前の作業と同様であり、
このホワイトペーパー:オフロード–コードの異種への移行の自動化マルチコアシステムまたはアクセラレータ上のC ++:Clangを使用したシングルソースSYCLおよびHSAプログラミングモデルのサポート

それがお役に立てば幸いです。

@hughperkins Tensorflow-openclリポジトリコードをコンパイルしてARMボードを適用できますか? 私のARMボードには、opencl1.2をサポートするImaginationGPUが搭載されています。

tf / Intelサポートを検索しているときに、このスレッドに遭遇しました。

Intel MacBook Proを持っていますが、どうすれば手伝うことができますか? c / c ++はわかりませんが、ビルド/コンパイル/テストの手順に従って、(ペーストビン)の結果を返すことができます...

derek $ system_profiler SPDisplaysDataType
グラフィック/ディスプレイ:

Intel Iris:

  Chipset Model: Intel Iris
  Type: GPU
  Bus: Built-In
  VRAM (Dynamic, Max): 1536 MB
  Vendor: Intel (0x8086)
  Device ID: 0x0a2e
  Revision ID: 0x0009
  Metal: Supported
  Displays:
    Color LCD:
      Display Type: Retina LCD
      Resolution: 2560 x 1600 Retina
      Retina: Yes
      Pixel Depth: 32-Bit Color (ARGB8888)
      Main Display: Yes
      Mirror: Off
      Online: Yes
      Automatically Adjust Brightness: Yes
      Built-In: Yes
    PL2202W:
      Resolution: 1680 x 1050 @ 60 Hz
      Pixel Depth: 32-Bit Color (ARGB8888)
      Display Serial Number: 05884C7A57014
      Mirror: Off
      Online: Yes
      Rotation: Supported
      Adapter Type: Apple Mini DisplayPort To VGA Adapter
      Automatically Adjust Brightness: No
      Adapter Firmware Version: 1.03

@hughperkinsご指示ありがとうございます!
私はあなたのcuda-on-clをarmプラットフォームでコンパイルしようとしています。 cuda-on-clのガイドに従う:
私のARMボード情報:
arm64、gcc 4.9、clangおよびllvm 3.5、openCL 1.2

* clang ++-3.8バージョンを使用する必要がありますか? *
git clone --recursive https://github.com/hughperkins/cuda-on-cl
作る
エラー:
clang ++-3.8:コマンドが見つかりません
Makefileを次のように編集します:CLANG = clang ++ LLVM_CONFIG = llvm-config LLVM_INCLUDE = / usr / include / llvm
その後、もう一度作成します。
エラー:
src / mutations.h:3:10:致命的なエラー: 'llvm / IR /Module.h'ファイルが見つかりません

make run-test-cocl-cuda_sampleを実行してみてください:
make:cocl:コマンドが見つかりません

@hughperkinsで試してみましょう。

テンソルフローでケラをテスト中にエラーが発生しました

keras$ KERAS_BACKEND=tensorflow pytest3

出力エラー:

Invalid kernel name, code -46, kernel _ZN5Eigen8internal15EigenMetaKernelINS_15TensorEvaluatorIKNS_14TensorAssignOpINS_9TensorMapINS_6TensorIfLi1ELi1EiEELi16ENS_11MakePointerEEEKNS_18TensorCwiseUnaryOpINS0_12scalar_rightIffNS0_17scalar_product_opIffEEEEKNS4_INS5_IKfLi1ELi1EiEELi16ES7_EEEEEENS_9GpuDeviceEEEiEEvT_T0_
__internal__ build log: 
"/tmp/OCL11307T1.cl", line 3: error: variable with automatic storage duration
          cannot be stored in the named address space
      local float mem[1024];

コード:

inline float __shfl_down_3(float v0, int v1, int v2) {
    local float mem[1024];
    int tid = get_local_id(0);
    int warpid = tid % 32;
    int warpstart = tid - warpid;
    mem[tid] = v0;
    //barrier(CLK_LOCAL_MEM_FENCE);
    int warpsrc = warpid + v1;
    warpsrc = warpsrc >= 32 ? warpid : warpsrc;
    return mem[warpstart + warpsrc];
}

みなさん、こんにちは。私の名前はricardoです。私はC ++の長年の経験を持つC ++プログラマーであり、Cudaについてはほとんど触れていませんが、この取り組みに貢献できることをうれしく思います。 この仕事にどのように貢献できますか?

わかりました。Mali-T628MP6(OpenGL ES 3.0 / 2.0 /1.1およびOpenCL1.1フルプロファイル)を搭載したOdroidXu3があります。
OSで実行:LUbuntu 140464ビット
完全なインストールを行い、結果をこのプラットフォームに投稿します。
バグについては、バグのリスト(Bugzillaのようなもの?)またはバグのリストを含むスプレッドシートがありますか?
乾杯!

HIPの使用はどうですか?
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/blob/master/docs/markdown/hip_faq.md#how -does-hip-compare-with-opencl
https://github.com/RadeonOpenCompute/hcc
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/45
「あなたの願いは叶います。EigenはHIP経由でAMDGPUに移植されています。あなたのリクエストの2番目の部分は、すべてのGFX8GPUに同梱されているFLOAT16をサポートする標準化されたツールを持ってくることです。
AMDGPUコンパイラの開発ブランチは、FP16 / Int16からFloatに変換するアップコンバートおよびダウンコンバート命令でFP16 / Int16をエミュレートする代わりに、Float16とInt16の両方のネイティブ命令をサポートするようになりました。

これは、フィジーのハードウェアでのf16テストであり、変換とネイティブ命令を使用したハーフタイプの行列乗算を正常に実行しています。」

また、関連はありませんが、nvidiaはすでにCUDAを介してサポートされているため、1.2ではなくsyCL / openCL2.0を使用する必要があります。 また、openCL 2.0は、AMDとIntelWindowsドライバーの両方でサポートされています。 また、AMDは、Linux用のun openCL 2.0ドライバー(Intel、オープンソースマジックで使用可能)を間もなくオープンソース化すると述べています(Intelにはすでに成熟が必要なLinux openCL 2.0実装があります)。テンソルフローは彼らの経済的利益にとって重要であるため、彼らは作業をスピードアップすることができます。 そして、彼らはすでにこのコメントセクションで彼らが助けたいと言っています。 また、すべての主要なARMメーカーはopenCL2.0をサポートしています。 これは、Android(Googleの経済的利益になります)、ラズベリーのような、スマートTVなどに多くの機会を開く可能性があります

そして中期的には、サポートされていないハードウェア用のopencl1.2フォールバックレイヤーを最終的に開発する可能性があります。
また、実装では、openVX(現在、すべての主要なハードウェアメーカーによってサポートされており、AMDにはオープンソース実装があります)とhttps://www.khronos.org/news/press/khronos-launches-dual-neural-networkを使用する必要があります。
そして、すべてSpir-V(VulkanとopenGLで同時に使用できます)を使用します。
すでに言ったことを複製していると言えますが、合成は重要です。
そして最後に、テンソルフローはHSAを使用できますか?

http://www.hsafoundation.com
HSAはAndroidで素晴らしいでしょう。

HIPが役立つかどうかはわかりません。 一部のAMDカードでのみサポートされているため、すべてのデバイスをサポートする場合は、とにかくOpenCLの実装が必要です。 HIPの実装が著しく高速であれば、それでも価値があるかもしれません。 これは事実かもしれませんが、私はまだ多くのベンチマーク(HIP対OpenCL)を見ていません。 もう1つの理由は、cudnnの代わりにMLOpen(HCで記述されている)である可能性がありますが、それがどれほど高速で、どの機能をサポートしているかはわかりません。

TensorFlowは非常に低レベルであるため、HSAを直接使用しません。 ただし、HC(およびHIP)はその上に実装されており、ifの上にOpenCLを実装することもできます(poclがそれを行います)。

ここでリルーパーアルゴリズムは役に立ちますか? http://mozakai.blogspot.ca/2012/05/reloop-all-blocks.html

@hughperkinsコンパイラの進歩が見られてうれしいですが、TensorFlowではトピックから外れると思います。 代わりに、コンパイラプロジェクトのGitHubページで多くの小さなディスカッションスレッドを開始する必要があります。 もっと集中して生産的になると思います。

https://github.com/chihchun/opencl-dockerを参照してください

https://github.com/kripken/emscripten-fastcomp/blob/master/lib/Target/JSBackend/Relooper.cppもあります

関連する論文は次のとおりです: https ://github.com/kripken/emscripten/blob/master/docs/paper.pdf?raw = true

初期のOpenCL / SyCLサポートは、マスターでhttps://github.com/tensorflow/tensorflow/pull/5267に統合されました

おめでとう!

@keryellところで、triSYCLリポジトリはどうなりましたか? それはなくなったようで、私は公的にアクセスできないクロノスのGitlabへの参照を見つけることができるだけです。

編集:私はあなたのプライベートクローンを見つけました、amdからのものだけがなくなっています。

@ bhack 、Macプラットフォームでopencl-dockerをサポートしていますか?

@alephman私はOSXプラットフォームを持っていませんが、起動コマンドを少し調整することでうまくいくと思います。

@bhack @alephman :上記のmacについての私のコメントを参照してください。ビルド手順を教えていただければ、試してみます。

@olesalscheider :はい、triSYCLはAMDからザイリンクスhttps://github.com/Xilinx/triSYCLに移動しましたが、その通りです。私のGitHubワークスペースのバージョンはhttps://github.com/keryell/triSYCLでも機能します。

TensorFlowでtriSYCLをまだ試していません。 試してみるだけの大きなビルド構成作業がすでにあります...

@keryell tr ​​iSYCLステータスとは何ですか?

Intel beignet opencl 2.0のサポートはほぼ完了しています!
http://phoronix.com/scan.php?page=news_item&px=Beignet-Birthday-CL2

@bhack triSYCLは、現在主にザイリンクスで開発されています。 まだますます多くの機能を追加しています。 Clang / LLVMベースのアウトラインコンパイラは、デバイス上で完全なシングルソースエクスペリエンスを実現するためにまだ開発中です。 しかし、すでに実装されているOpenCL互換モードには、アクセサーによって表される依存関係に従ってレイジー転送を実行するSYCLランタイムを使用して、ホストとカーネル間の通信を簡素化することにより、ある程度の価値もあります。

私のMacはOpenCLと互換性がありますが、openCLでテンソルフローを実行するにはどうすればよいですか? 新しいコードを設定したときに、openclがテンソルフローでサポートされていたことがわかりました。

@hughperkins Macclinfo命令がありませんが、どうすればよいですか? しかし、ここでclangを使用してopenclのテストコードをコンパイルすると、次の情報が得られます。
clang -framework OpenCL dumpcl.c -o dumpcl && ./dumpcl Device Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz supports OpenCL 1.2 Device Intel(R) Iris(TM) Graphics 6100 supports OpenCL 1.2

@hughperkinsに感謝しますが、昨日computecppを試したと思いますが、macbookシステムはまだcomputecppでサポートされていないようです。 だから、たぶん新しいアップデートを待ち続けることが私にできる唯一のことです(TT)。 ところで、私のIris 6100は8世代で、OpenCL1.2に適しています。

@hughperkinsはいSYCL1.2はOpenCL1.2のアプリオリであり、SYCL2.2はOpenCL2.2のアプリオリです。
SYCLのOpenCL互換モードを必要とするものを何も使用しない場合、SYCLは実際にはOpenCLをまったく必要としないため、「アプリオリ」と言いました。 実際、SYCLはヘテロジニアスコンピューティングの非常に一般的なモデルであり、何の上でも実行できます。 しかしもちろん、実際の実装にはOpenCLも必要になる場合があります。

こんにちは、

私は当分の間TensorFlowとKerasで学習/作業しており、MacOSでOpenCLサポートを動作させることに興味があります... macOSの周りで行われた作業に関するニュースはありますか?

TensorFlowのコンパイルに成功しましたが、OpenCL用に構成しようとすると、computeCpp 1.2の場所を尋ねられ、macOS用のComputeCppがないようです。

こんにちは。 ML / Tensorflow /またはOpenCLの専門家ではありませんが、私は経験豊富なMacグラフィック開発者であり、組み込みライブラリと単純な依存関係を使用する統合およびAMDGPUを備えたシステムでTensorflowのパフォーマンスを高速化することを切望しています:)

手伝いましょうか?

travisログ@hughperkinsでOSXの最後のコンパイルの失敗を見ると、「xcode-select --install」を実行すると解決する可能性がありますか? / usr / includeディレクトリを再リンクする必要があります。 Xcodeベータ版をリリースに更新するときにこの問題が発生し、一部のC ++コードのコンパイルで問題が発生しました。

XLAコンパイラ(https://www.tensorflow.org/versions/master/resources/xla_prerelease.html)がデータフローグラフからのLLVMコード生成を提供するようです。 これは、spir-v、つまりVulkanのコンピューティングAPIに非常に簡単にアクセスできることを意味します。 コード生成が整理されているので、Androidで実行されている未使用の統合GPUの数が多いことを考えると、GoogleがVulkan互換性を提供していないことは想像できません。

@hughperkins

すばやく:現在、カスタムC ++ / Object-CコードベースでInceptionv3を実行しており、デコードされたビデオフレームをネットワークに渡します。 TFについては、低レベルのニーズを知るのに十分な知識はありませんが、高レベル:モデルのロード、セッションの実行、機能することを期待します。 正直なところ、100%の互換性があると思います。 優先順位を付けるのに役に立たないことを私は知っています。 基本的に、TF / InceptionV3を使用したC ++画像認識が私の出発点でした。

Macで実行されているcuda-on-cl:リポジトリをチェックアウトし、システムでビルドをデバッグおよび実行し、さまざまなハードウェアで結果を検証するのに役立ちます:デュアルD700、NvidiaMacラップトップおよびデスクトップシステム。

詳細なフィードバックをありがとうございます。 私はレポを監視し、フォローし、できる限りの手助けをしようとします。

ヒュー、 http://chrec.cs.vt.edu/cu2cl/を見て、いくつかの関数がどのようにマッピングされているかを確認することをお勧めします。

私の会社のStreamComputingには、ビルドテストとベンチマーク用のさまざまなGPUがあり、これらを顧客プロジェクトに使用しています。 あなたのGithubをJenkinsに接続して、毎週実行することができます。

回答ありがとうございます。今週は、具体的なスクリプトを使用して、このテーマに戻ります。

私のユースケースは、実験でGensimとKeras / tensorflowを使用したテキスト/構文マッチング分析に関するものです。

私はあなたがテストするのを手伝うつもりです

私はAMDカードを搭載したWindowsPCを持っています
AMDカードを搭載したMBP
Intel統合GPUを搭載したMB

ねえ@ hughperkins-私は今晩、AMD R9 3908GBで上記のテストセットを実行しています。 これまでのところ、私はすでに1つの異なる結果を得ています。 logistic_regression.pyトレーニングを行い、 nanを返しません。 とても良い! 最後にsegfaultが発生するので、スクリプトまたはclコードに障害があるかどうかを調査します。

結果をどこにプッシュすればよいですか、どこで最も役立つか?
おそらく、ボランティアがあなたにプッシュできる(またはローカルCIなどで設定できる)結果の標準セットを生成する標準の「テストスクリプト」を取得できますか?

py.testは、他のどのソリューションよりも優れたソリューションです。 それはたったpipの距離にあり、とにかくtensorflowをインストールするプロセスの一部です。

テストを開始してからいくつかの興味深いことを発見しましたが、Python出力だけではデバッグできない可能性があります。

  • 同じスクリプトへの異なる呼び出しは、早期にクラッシュするか、「ハング」するか(出力なし、進行状況なし、 Ctrl-Cへの応答なし、プロセスはpkill -9 'dである必要があります)、または遅くクラッシュする可能性があります検証部分で、またはスクリプトが正常に完了した後。 クラッシュ(segfaults)はXorgをダウンさせる可能性があります。
  • 結果は一見理由もなく異なります。スクリプトを呼び出してセグメンテーションフォールトを発生させてから、もう一度呼び出すと機能します。
  • ハングは、文字通り少し前に機能していたコードの一部で発生する可能性があります。数百のバッチが正常に発生した後、トレーニングバッチ内またはトレーニングバッチの後に1回ハングが発生しました。

それで、GPU側に未解決のものがあり、それをクリアするために適切なセグメンテーション違反が必要である可能性がありますか? GPUモデルやOpenCLについてはまだよくわからないので、ここではあまり貢献できません。 ただし、何が起こっているのかを適切に調査するには、GPUデバッグ出力が必要な場合があります。

また、あなたはgithubからAMDを使用していると思いましたが、あなたはこのCUDA-on-CL全体を自分の時間で実行している「不正なエージェント」のようです。 これを先導してくれてありがとう! GPUをクラウドファンディングするなどして、私や他の人があなたの努力に貢献できる方法はありますか? または、Patreonを設定することもできます。プロジェクトへの毎月の寄付にサインアップできてうれしいですか?

AMD GPUに関しては、AMDのパートナーです。 あなたが見逃したかもしれない8日前の私のメッセージを見てください:

私の会社のStreamComputingには、ビルドテストとベンチマーク用のさまざまなGPUがあり、これらを顧客プロジェクトに使用しています。 あなたのGithubをJenkinsに接続して、毎週実行することができます。

コミットごとに実行されるCIサーバーをセットアップする可能性があるのではないかと思います。

問題ない。 おそらくプロジェクトへの書き込みアクセスが必要なので、Jenkinsはログファイルをbuild-logディレクトリに書き込むことができます。 話し合うことができるように、私はあなたにスパムを送ります。

こんにちは、みんな、

おそらくすでにお分かりのように、SYCLのものの束がTensorFlowにプッシュされています。 まだ完成しておらず、やるべきことがたくさんあります。 しかし、私たちはそこにたどり着くために進んでいます。

貢献に興味がある場合、または現在の状態に興味がある場合は、以下の内訳を確認してください。

インフラストラクチャー
Googleは、@ benoitsteinerのTensorFlowフォーク(https://github.com/benoitsteiner/tensorflow-opencl)を定期的にテストするように設定された2台のマシンを寄付してくれました。

どちらにもAMDGPUが搭載されています。

CL_DEVICE_NAME:ハワイ
CL_DRIVER_VERSION:1912.5(VM)

CL_DEVICE_NAME:フィジー
CL_DRIVER_VERSION:1912.5(VM)

Codeplayは、来年もマシンを専用にすることを目指しています。 OpenCLデバイスのダイバーシティカバレッジを改善するため。

私たちがサポートする関連プラットフォーム用のテストビルドサーバーを提供することに興味がある人がいれば、その面で貢献者を探しています。
現在、要件は次のとおりです。
-Ubuntu 14.04
-SPIRをサポートするOpenCLドライバー(Intel CPU / GPUまたはAMDGPU)

@VincentSCおそらくあなたはそれを手伝うことができますか?

テスト
フィジーのマシン(https://ci.tensorflow.org/job/tensorflow-opencl/127/consoleFull)では、164の失敗に直面しています。

ハワイのマシン(https://ci.tensorflow.org/job/tensorflow-opencl/129/consoleFull)では、56回の失敗が発生しています。

失敗した勾配テストを修正し、フィジーのマシンで追加の失敗の原因を調査しています。

エイゲン
過去数か月間、TensorFlowに必要な機能を積極的に実装してきました。これには、形状変更、スライス、基本的な削減などが含まれます。現在、収縮を実装しています。 詳細な内訳は、 https://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid = 0の[EigenTensor]タブにあります。

TensorFlow
Abs、Floor、IsFinite、Log、Pow、Mulなどのほか、Reshape、Shape、Identity、Fillなどのテンソル操作を含む多くの係数に関する操作が実装されています。
詳細な内訳は、 https ://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid = 1719702219の[TensorFlowKernels]タブにあります。

組織
上記のスプレッドシードには、プロジェクトの取り組みを分類するいくつかのタブがあります。たとえば、全体計画、Eigen Tensor、TensorFlowカーネル、モデルなどです。

参加したい場合は、作業中のアイテムの横に自分の名前を付けるか、不足している重要なものを追加してください。
ありがとう、
ルーク

このロードマップはアクティブですか?

@lukeiwanskiはい、問題ありません。 info@st​​reamcomputing.eu経由でお問い合わせください

これをすべて読んだ後、macOS / OS XでOpenCLを使用するための確実な解決策はまだないと思いますか? OpenCLをサポートするTensorflowC ++をコンパイルしようとしました(誰かが指摘したように、SYCL 1.2にはComputeCppが必要だと思います)。

周りを見回したところ、SYCLライブラリをダウンロード、コンパイル、またはビルドする場所が見つからなかったようです。 ここにありますかhttps://www.codeplay.com/ ? どうすればいいのかよくわかりません、ありがとう...

@dylib私の知る限り、macOS用のComputeCppはまだありません。 つまり、MacOS用のOpenCLの準備ができていないということです。

それでも、AMDカードとCatalystドライバーhttps://github.com/tensorflow/tensorflow/issues/6497を使用してUbuntu16.04で動作させることはできません。 ハウツーはありますか?

OpenCLサポートでコンパイルされたTFを使用する前に、/ usr / local / computecpp / bin / computecpp_infoの出力を確認する必要がありました。 私の場合、それは表示されます

  Device is supported                     : NO - Unsupported vendor
  CL_DEVICE_NAME                          : Pitcairn
  CL_DEVICE_VENDOR                        : Advanced Micro Devices, Inc.

現在、GPUでTFを実行するには2つの選択肢があります。
限られた数の(ベンダーによる)デバイスでうまく機能しますが、独自のCUDA
限られた数の(computecpp開発者による)デバイスとプロプライエタリcomputecppでの作業がうまくいかない
まだOpenCLのサポートはありません。

@inferrnaTensorFlowドキュメント全体のOpenCL固有のセクションにあります。 これは、まもなくtensorflow.orgサイトで公開されます。

@benoitsteiner opencl畳み込みサポートの現在の状態は何ですか? 既存のカーネルを直接活用することを計画していますか? 行列の乗算はどうですか?

ETAはありますか?

HIPを使用してCUDAコードをプラットフォームに依存しないコードに移植するのはどうですか? https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/blob/master/docs/markdown/hip_porting_guide.md

AMDはそれに取り組んでいるようです: https ://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/45#issuecomment -269827686

これはどう? このパッケージはRadeonGPUで動作すると思います。

https://github.com/RadeonOpenCompute/ROCm

@bhack https://github.com/tensorflow/tensorflow/issues/6449#issuecomment-269245727から

@lukeiwanski XLAはあなたの努力にも影響を与えますか?

XLAおよびSYCLソリューションは、さまざまな状況を補完します。SYCLは、完全なプログラム可能性とカスタマイズ性を提供するように設計されています。 XLAは、グラフで明確に定義されたパターンを最適化するためのものです。

XLAについての私の理解は、LLVMコンパイラを使用して実行時に既存のTensorFlowグラフを最適化することです。 グラフで使用されるアルゴリズムごとに、コンパイラで最適化パスを実装する必要があります。
SYCLアプローチは、CUDAレベルのプログラミングを提供する唯一のアプローチです。これは開発者が必要とするものです。

SYCLを使用して、すべてのTensorFlow Opsをサポートし、新しいオペレーションの開発を容易にすることを目指しています。

つまり、SYCLを使用すると、新しい高性能操作を非常に簡単に記述できますが、XLAは、グラフ内のすべての操作をサポートしている場合、グラフ全体を最適化できます。

XLAバックエンドLLVMIRをhttps://github.com/KhronosGroup/SPIRV-LLVMでSPIR-Vに変換できますか?

それが不可能な理由はわかりません。

@lukeiwanskiありがとう、私は特にhttps://www.tensorflow.org/versions/master/experimental/xla/developing_new_backendを探していました

@ k-hashimoto:ここでは、TensorFlowをKhronos Groupの標準であるOpenCLに移植すること、そして実際にはKhronosGroupのポストモダンC ++シングルソース標準であるOpenCLSYCLに移植することについて話し合っています。
ROCmは、一部のベンダーからのまだ別の非標準ソリューションのように見えます。
プロプライエタリソリューションに興味がある場合は、うまく機能しているように見えるTensorFlowのCUDAバージョンがすでにあります。 :-)

合意:OpenCLで会話/努力を続け、ベンダーにそのオープンスタンダードの上に何でも実装させます。

2017年1月17日10:01:32GMT + 00:00、 RonanKeryellnotifications @ github.comは次のように書いています。

@ k-hashimoto:ここではTensorFlowの移植について話し合っています
クロノスグループの標準であるOpenCL、そして実際にはもっと多くのOpenCL SYCL、
KhronosGroupのポストモダンC ++シングルソース標準。
ROCmは、一部のベンダーからのまだ別の非標準ソリューションのように見えます。
独自のソリューションに興味がある場合は、すでにCUDAがあります
うまく機能しているように見えるTensorFlowのバージョン。 :-)

-
コメントしたのでこれを受け取っています。
このメールに直接返信するか、GitHubで表示してください。
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -273076892

-
K-9メールでAndroidデバイスから送信されました。 簡潔に申し訳ありません。

:+1:

👍

:+1:

このメッセージは、メール配信ソフトウェアによって自動的に作成されました。

送信したメッセージを1つ以上のメッセージに配信できませんでした
受信者。 これは一時的なエラーです。 次のアドレスは延期されました:

[email protected]
ドメインbiomasiv.esは、許可されている1時間あたりの最大メール数(111/100(111%))を超えています。 メッセージは後で再試行されます

-------これは、すべてのヘッダーを含むメッセージのコピーです。 ------
受信:github-smtp2-ext6.iad.github.netから([192.30.252.197]:48606 helo = github-smtp2b-ext-cp1-prd.iad.github.net)
esmtpsを使用したchi-server32.websitehostserver.netによる(TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256)
(Exim 4.87)
(封筒[email protected]から)
id 1cWmiQ-0032as-W9
[email protected]の場合; 2017年1月26日木曜日10:16:03-0600
日付:2017年1月25日水曜日04:09:21 -0800
DKIM-署名:v = 1; a = rsa-sha256; c =リラックス/リラックス; d = github.com;
s = pf2014; t = 1485346161;
bh = N1Pjga2Q9PtEE8ncEMXBtSJzd3kd6HAkJRnj6H2dDEg =;
h = From:Reply-To :To:Cc:In-Reply-To:R eferences:Subject :List-ID:
List- Archive:List-Post :List-Un subscribe:From;
b = e5r + VKm / UtpLYj0OCnfEPSYlL6a7xCOd9bN + jS3gify2mRv / g4kofW7ZrEeDyeJT +
GvddVV / w5htZFUbHy9 + 92pYUHGEYEn2XrmFqc6ZFVoPqBsPW5Cxk31O3Kvi1cwuSPI
g8J4X / qvl1DT + yKrh1es7CeXkr23c8mFNgWkG5qk =
差出人: MiguelÁ[email protected]
返信先:tensorflow / tensorflow [email protected]
宛先:tensorflow / tensorflow [email protected]
Cc:購読済み[email protected]
メッセージID:
返信先:
参照:
件名:Re:[tensorflow / tensorflow] OpenCLサポート(#22)
Mime-バージョン:1.0
コンテンツタイプ:マルチパート/代替;
border = "-== _ mimepart_5888957158d12_78b73ff902fe113c148134";
charset = UTF-8
コンテンツ転送エンコーディング:7ビット
優先順位:リスト
X-GitHub-送信者:migpradel
X-GitHub-受信者:バイオマス
X-GitHub-理由:サブスクライブ
リストID:テンソルフロー/テンソルフロー
リスト-アーカイブ: https ://github.com/tensorflow/tensorflow
リスト-投稿: [email protected]
リスト-購読解除:
https://github.com/notifications/unsubscribe/AELU4lfFKxIqjh4jaQkUHuRKD7zj_eKCks5rVztxgaJpZM4Gex3i
X-自動応答-抑制:すべて
X-GitHub-受信者-アドレス: [email protected]

---- == _ mimepart_5888957158d12_78b73ff902fe113c148134
コンテンツタイプ:テキスト/プレーン;
charset = UTF-8
コンテンツ転送エンコーディング:7ビット

image

-
このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信するか、GitHubで表示してください。
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -275092277
---- == _ mimepart_5888957158d12_78b73ff902fe113c148134
コンテンツタイプ:text / html;
charset = UTF-8
コンテンツ転送エンコーディング:7ビット

image


このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信するか、GitHubで表示する、スレッドをミュートしてください。


---- == _ mimepart_5888957158d12_78b73ff902fe113c148134--

ここで新しい。 将来、テンソルフローでOpenCLがサポートされるかどうかを尋ねたいのですが、それはFPGAでテンソルフローを実行するためのサポートがあることを意味しますか?
ありがとう

@atinzad :OpenCLまたはSYCLのバージョンとソースコードがFPGA環境でサポートされている場合ははい。 しかし、TensorFlowはおそらくさまざまな手段を備えた最も移植されたフレームワークであるため、すでにどこかでFPGA上で実行されている部分がすでにある可能性があります...

中期ビジョンにおけるPTX以外のSPIR-Vを標的とするsycl開発努力とXLAの違いは何ですか?

なんて素晴らしい質問でしょう。 おそらく-関係者の数は? 知っておくととても面白いでしょう!

2017年2月16日午後1時35分、 bhacknotifications @ github.comは次のように書いています。

中期ビジョンにおいて、sycl開発努力とPTX以外のSPIR-Vを標的とするXLAの違いは何ですか?


コメントしたのでこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。

中期ビジョンにおいて、sycl開発努力とPTX以外のSPIR-Vを標的とするXLAの違いは何ですか?

@bhackそれは昨日のTensorFlowDevサミットで行われる素晴らしい議論になるでしょう

利用可能なリソース/貢献するために必要なプログラマーのタイプについて質問しますか?

もしそうなら、OpenCL / SYCLアプローチではC ++プログラマー/ OpenCL Cプログラマーはすぐにスピードを上げて貢献することができます。 XLAアプローチには、コンパイラー/ llvmの経験が必要です。

XLAは、拡張機能としてGoogleの内部プロジェクトであり、より多くのリソースが関連付けられています。 しかし、その一方で、彼らの仕事もはるかに大きいです。コンパイラを書くことは簡単な仕事ではありません。

それ以外の場合、モデルについて質問している場合:

https://github.com/tensorflow/tensorflow/issues/22#issuecomment -272908870で前述したように、両方の取り組みは補完的なアプローチであり、どちらも異なるユースケースを持っています。 私はまだその声明に賛成です。

たとえば、彼のプレゼンテーションの@tatatoddは、一部のOpsがXLAをターゲットとして持つことは決してないだろうと述べました。 そのギャップを埋めることは可能だと思います。

考慮すべき他の事柄は新しいプラットフォームです。 新しいチップはGPUよりも頻繁に飛び出す傾向があるため、この議論のためにモバイル環境と組み込み環境を使用します(原則は同じです)。

半導体がSYCL / OpenCLをサポートしている場合は、すぐにTFサポートを利用できます(パフォーマンスの微調整が必​​要になる場合があります)。

アーキテクチャがエキゾチックで、LLVMバックエンドがまだない場合は、XLAがそれを追加する必要があります(それほど頻繁には発生しないかもしれませんが、それでも)。 より頻繁に発生するのは、アーキテクチャが少し変更されてから、新しい最適化パスを追加するか、既存のパスを変更してメリットを得る必要があることです。 カーネルコードの調整は簡単です。

私はXLAをあまり深く調べていませんが、XLAはPTXカーネルコードを実行するために何らかの方法でCUDA APIを呼び出す必要があると思います。そのため、代わりにSPIR-Vカーネルを実行するためにOpenCLまたはVulkanに移植する必要があります。 StreamExecutor(慣れるための別のフレームワーク)を通過するのは、おそらくかなりの労力です。

つまり、半導体企業と開発者の両方がターゲットにできる、非常に断片化された/迂回されたエコシステムで統一された安定したプラットフォームを提供しています。 XLAはサポートにコミットする必要がありますが。

@benoitsteinerまたは@drpngxは、会話に基づいて多くの仮定/結論に取り組んでいるので、XLAの内部知識をより多く与えることができるかもしれません。

ああ、私も通信を容易にするためにスラックチャネルを作成しましたhttps://tensorflowopencl.slack.com/shared_invite/MTQzNDQ0NzgzNzAyLTE0ODcyOTE1NjctMDZhM2RkODRlYg

Eidt:
Slackリンクは無効になりました。 参加したい場合は私にpingしてください。

それは正しく、半導体メーカーがどちらの方向を向くかによって部分的に決まると思います。
「これらのバックエンドは、XLAHLO計算を効率的に表現するために必要なLLVMIRを出力し、次にLLVMを呼び出してこのLLVMIRからネイティブコードを出力します。」 したがって、LLVMIRはSPIR-Vに変換できます。 しかし、Opencl SPIRV方言は、Vulkanとは異なります。 StreamexecutorはLLVMparallel -libにプッシュされており、元の@henline説明では、元の計画はopenclをカバーしているようです。

/ cc @ dneto0

http://phoronix.com/scan.php?page=news_item&px=OpenCL-2.0-NVIDIA-Preps
NvidiaはまもなくLinuxとWindowsの両方でopencl2.0をサポートするはずです。これはYUGEです!

ただし、パフォーマンスに関しては、CUDAよりも遅くなる可能性があります。

Noveauの連中は、SPIR-Vを使用してOpenclで独立して作業していることも忘れないでください。 ステータスは少し古くなっていますが、新しいコミットがあります。

Openclは本質的にCudaよりも遅いわけではなく、openclドライバーを壊して市場を事実上ロックしているだけです。
しかし、nvidiaの主導はようやく終わりに近づいており、彼らの不道徳な反競争的慣行でさえ彼らを救うことはできません。 印象的なCuda自動翻訳HIP(https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP)
今後のvegaapusとdgpusおよびARMがWindowsに登場し、Nvidiaには未来がありません。そのため、業界はopencl / syCL / HIP / HSAを非常に迅速かつ大規模にサポートする必要があります。

こんにちは、テンソルフローが新しいAMD Radeon Instinctをサポートすることを計画していますか? (http://instinct.radeon.com/en-us/)

こんにちは、FPGAのTF-OpenCLサポートに進展はありますか?

@alexivia https://github.com/iteong/tensorflow/blob/master/tensorflow/stream_executor/platform.h#L30は数か月前に削除されましたが、Streamexecutorのロードマップは明確ではありません。

@bhack迅速な対応に感謝します
それで、これはサポートがないことを意味しますか、それとも正しい動作が保証されないことを意味しますか?
また、このスレッドで読んだことから、テストは主にAMD GPUで行われていることがわかります...このOpenCLポートを使用してNvidiaGPUでネットをトレーニングしている人はいますか?

StreamexecutorはLLVMparallel-libsで名前が変更され、現在はacxxelになっています

CC @ zheng-xq

AxcellとStreamExecutorは別々のプロジェクトです。 それらを統合する現在の計画はありません。 切り替える予定があるかどうかは、TensorFlowの人々に任せています。

では、StreamExecutorとStreamExecutor llvmも同じプロジェクトではありませんでしたか?

正解です。同じプロジェクトではありません。

2017年3月16日木曜日の午前11:06に、 bhacknotifications @ github.comは次のように書いています。

では、StreamExecutorとStreamExecutor llvmも同じプロジェクトではありませんでしたか?


あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-287143104
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AAJMh_4ODoCVglGRbFBs8UmtSEm6D47_ks5rmXoUgaJpZM4Gex3i

@jlebar次回は名前を付けるための創造的なユニット;)しかし、おそらく創造性の動機の欠如ではなく、TFで維持されているものに分岐した内部ツールの上流の努力でした。

@bhack 、名前を変更ました。
StreamExecutorをLLVMホールセールに移行することは理にかなっているとは思わない。 これは
現在は「Acxxel」と呼ばれています。

混乱してすみません、フィードバックに感謝します。
確かに学習プロセス。

2017年3月16日木曜日午前11時24分、 bhacknotifications @ github.comは次のように書いています。

@jlebarhttps ://github.com/jlebar次回はネーミング用のクリエイティブユニット
;)しかし、おそらく創造性の動機の欠如ではなく、
維持されているものに分岐した内部ツールのアップストリームの取り組み
TFで..


あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-287148247
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AAJMh0MMZvdTJ-bUoa71FBrEqHqFpDjvks5rmX5IgaJpZM4Gex3i

はい、StreamExecutor、eigenのSyCL、XLA(一部のスライドではCPUとopenclを除いて、実際にはCUDAバックエンドしかありません)の間でまだ少し混乱があります

バンプ

これを緩和するために、Googleの誰かがAppleまたはAMDに話しかけましたか? AMDの人々は、問題がそこにあることすら知らないほど迷子になっていると思います。彼らは、なぜNvidiaがこれほど大きな市場シェアを持っているのか疑問に思っています。 Apple AIチームもここで喜んでお手伝いしてくれると思います...もしOpenCLが2013年以来彼らの側からアバンダンウェアでなかったら、さらに悪いことに、彼らの上司はGoogleに腹を立てなかったでしょう。

これに関する最新情報は何ですか?

TF 1.1リリースノートによると、Mac GPU(Nvidiaのみ)のサポートは非​​推奨になりました。 これがOpenCLアプローチの改善に役立つことを期待しましょう(これにはあまり自信がありません)。

PRのステータスもフォローできますhttps://github.com/tensorflow/tensorflow/pull/9117

ありがとう! 私は先月この問題をフォローしています。 2013年以来OpenCL1.2に固執していることを考えると、Apple OpenCLの取り組みには自信がありません(AppleはまだSPIR 1.2サポートを提供していません)。

OpenCLのTensorFlowがあなたの仕事に役立つ場合は、私が支援したい深層学習の研究と実践を進めるのに役立つ範囲で、私に知らせてください。 私の会社は、デバイス上の推論の作業の一環として、さまざまなGPU用に調整されたTensorFlow用のOpenCLバックエンドを構築しました。 WindowsとMacの一般的な構成を含む、主要なモバイルとデスクトップのGPUファミリでテストしました。 十分な関心がある場合は、何らかの公開配布を行う場合があります。 また、Metal(Apple GPU)とLLVM(CPU)があり、依存関係をゼロに展開する方法もあります。 ここでのアイデアは、すべてのデバイスにディープラーニングの優れたサポートを提供することです。

@ choongng-そのすべてが信じられないほど便利で役立つように聞こえます。 私の個人的なプロジェクトhttps://github.com/Synopsis/は、OS X上のOpenCLと、iOSおよびデスクトップ向けのMetalの展開から大きな恩恵を受けるでしょう。 これがTensorflowに適切に導入される可能性があれば、多くの開発者にとって大きな恩恵になると思います。

ありがとう。

@choongng

あなたの会社がOpenCLバージョン、またはもっと興味深いTensorFlowのMetalバージョンを公開している場合、これは多くの人にとって素晴らしいニュースになると思います。私はTensorFlowを取得するためにNVidiaカードを使用してeGPUを構築しているところです。 /私の仕事のために私のMBPで実行されているKeras ...

興味のある方は... eGPU.ioコミュニティにアクセスしてください

@choongng

これを見てみたいと思いますので、よろしくお願いします! 特に、大ざっぱなクローズドソースコンパイラを必要としない場合は、TFがCLサポート用に選択しました。

2017年4月26日03:33:51GMT + 01:00、 ChoongNgnotifications @ github.comは次のように書いています。

OpenCLのTensorFlowがあなたの仕事に役立つ場合は、私に知らせてください。
ディープラーニングの研究と実践を進める手助けができる範囲
助けるのが好きです。 私の会社はTensorFlow用のOpenCLバックエンドを構築しました
オンデバイス推論の作業の一環として、さまざまなGPUに合わせて調整されています。
私たちは、以下を含む主要なモバイルおよびデスクトップGPUファミリーでテストしました
WindowsとMacの一般的な構成。 十分な関心があれば
ある種の公開配布を行う可能性があります。 Metal(Apple GPU)もあります
およびLLVM(CPU)と、依存関係のない展開を行う方法。 ザ
ここでのアイデアは、すべてのデバイスにディープラーニングの優れたサポートを提供することです。

-
コメントしたのでこれを受け取っています。
このメールに直接返信するか、GitHubで表示してください。
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -297220160

-
K-9メールでAndroidデバイスから送信されました。 簡潔に申し訳ありません。

革命的だと思います;)

@choongngたぶんあなたがこれらの人と力を合わせればそれは助けになるでしょう
https://github.com/benoitsteiner/tensorflow-opencl

@cathalgarveyそのとき使用することを提案しているオープンソースコンパイラは何ですか? 野生の多くのデバイスに対応するオープンソースのOpenCL準拠のソリューションを見つけるのは困難です...
ある時点でソリューションをブートストラップする必要があります...

簡単な修正だとは言いませんでした。 しかし、OpenCLは問題ではありません。 結局のところ、CUDAは完全に独占的であり、TensorFlowが選択したOpenCLオプションよりもはるかに劣っています。

とはいえ、ポータブルミドルウェアランタイムやarrayfireなど、ゼロから始める場合は、CL-or-cudaシステムのオプションがあります。ただし、TensorflowはCUDAとあまりにも結びついています。

人々がCUDAでカーネルを書くことをいとわないが、それがより多くのユーザーに到達し、市場のエコシステムを真剣に成長させるとしても、CLのためにそれを行うことを躊躇するのはイライラします。 すべての人にとってオープンプラットフォームには直接的および間接的なメリットがあり、長期的にはすべての人にとって大幅なコスト削減につながる可能性があります。

SYSCLが最終的にどのように発生するかというと、すばらしいことです。では、なぜ一部の有名人は、オープンスタンダードの目的を打ち破るような、フリンジなプロプライエタリオプションを購入する代わりに、オープンSYSCLディストリビューションにお金をかけないのでしょうか。

2017年4月28日09:13:06GMT + 01:00、 RonanKeryellnotifications @ github.comは次のように書いています。

@cathalgarveyそのとき使用することを提案しているオープンソースコンパイラは何ですか?
オープンソースのOpenCL準拠のソリューションを見つけるのは困難です
野生の多くのデバイスに対処します...
ある時点でソリューションをブートストラップする必要があります...

-
あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示してください。
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -297936468

-
K-9メールでAndroidデバイスから送信されました。 簡潔に申し訳ありません。

この文脈で私が聞きたいのはこれです:

そのため、Tensorflowのような一部のディープラーニングフレームワークは、CUDAの代わりにopenclを使用することをやや慎重に検討しています。 もちろん、CUDAはcuDNNが開発された単なる「言語」であり、それは(私の理解が正しければ)ほとんどの深層学習言語が実際に使用しているものです。 このコンテキストでは、cuDNNのopenclバージョンが何であるかわかりません。

また、AMDは、継続的に開発しており、rocMと呼んでいるCUDAのオープンソースの代替案について話し合っています。 彼らはまた、miOpenがcuDNNと同等(一般的な深層学習機能用の手作りのアセンブラーライブラリ)であると話しているが、まだリリースされていない。 AMDのアプローチはやや全体論的です。GPUにヘビーコンピューティングをエクスポートするだけではありません。

この文脈では、私は本当に混乱しています。 上記のようなopenclの取り組みはどのように組み合わされますか? NVIDIA GPUの場合、それは簡単です.... CUDAがあり、CUDAで記述されたcuDNNがあります。 非NVIDIA /またはこの場合AMDの場合、それはそれほど明確ではないようです。 HIPはいつ優先されますか? HCCを使用するのはいつですか? openclを使用するのはいつですか? どんな洞察も本当にありがたいです!

@cathalgarveyこれらすべての巨大なソフトウェア/ハードウェアインフラストラクチャの背後には多くの政治があります... :-(
純粋な科学的基準に基づいたクリーンなソリューションを夢見ることができたとしても、私たちは実用的でなければならないと思います。
Googleは、TensorFlowアーキテクチャをあまり変更したくありません。 これが、OpenCLベースのアーキテクチャが非常に類似している必要がある理由であり、低レベルの非シングルソースOpenCL Cソリューションではなく、「CUDAランタイム」のようなシングルソースC ++が必要です。 Khronosレルムでは、OpenCLのシングルソースC ++バージョンはSYCLと呼ばれます。
たとえば、アイルランドに拠点を置いているように見えるので、ダブリンに立ち寄るときにこれについて話し合いましょう。 :-)
それまでの間、 https://github.com/triSYCL/triSYCLおよびSYCLを扱うTensorFlow&Eigenブランチに気軽に投稿してください...

@keryell XLA:GPU :OpenCLもSyCLで計画されているかどうか知っていますか?

こんにちは@benoitsteiner 、に関して:

TensorFlowドキュメント全体のOpenCL固有のセクションにあります。 これは、まもなくtensorflow.orgサイトで公開されます。

tensorflow.orgでOpenCLを検索しましたが、重要なものは何も見つからなかったようです。すべての人にとって、ここに戻っているようです。 「すぐに」とは、______の前を意味しますか? (_ここに面白い皮肉を挿入_)。

私はあなたのリポジトリをコンパイルすることができました(イェーイ!)が、Mac用に動作するTensorflow OpenCLを作成するには何か他のものが必要だと思います。 上記のtriSYCLコンパイラをビルドしようとしましたが、残念ながら失敗しました。

@bhack私はグーグルで働いていないので、XLAの詳細についてはわかりません...

@dylib残念ながら、これはすべて進行中です...

@keryellはい、わかっています。いくつかの会議で話し合われたら、私はただ興味がありました。

OpenCLはCUDAとは根本的に異なります。 ただし、代わりにこれがHIPに移植されていることは間違いありません。
だから+1それを提案したすべての人のために。
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP

HIPを使用すると、開発者はCUDAコードをポータブルC ++に変換できます。 同じソースコードをコンパイルして、NVIDIAまたはAMDGPUで実行できます

HIPについて知っている人はあまりいません。
テンソルフローとHIPの詳細については、こちらをご覧ください。
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/37

https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/45

サイドノート:
Nvidia対AMDについて戦う/自慢するべきではないと思います。 それらは驚くべきハードウェアとソフトウェアの時代を作る立派な会社です。 代わりに、より多くのユーザーベースにテンソルフローを提供することに焦点を当てる必要があります。
バインディングを介して多くの言語をターゲットにすることは、すでに良い出発点ですが、できるだけ多くのハードウェアをターゲットにする必要もあります。 (クラウドソリューションが素晴らしいとしても、必ずしも答えとは限りません)

ここStreamでHIPの経験があります。 見せてください。

「私の会社の方が優れている」という議論に同意します。 TensorFlowがターゲットにするGPUを知りたいのですが。 それは実用的で有用でなければなりません。 たとえば、Intel GPUまたは組み込みGPU(Qualcomm、ARM、Imagination)、RaspBerry Pi-はいまたはいいえ?

AMD Radeon Vega Frontier Edition

ROCmオープンソフトウェアプラットフォームと機械学習ライブラリを積極的に改善し続けています。 また、Caffe(4月にリリース)などのオープンマシンインテリジェンスフレームワークもサポートしています。 この四半期の後半に、Torchのサポートを提供する予定であり、 TensorFlowが進行中です。

彼らはすでにCaffeをリリースしており、このスレッドで他の人がビルド/テストの経験を共有しているのを聞くことに非常に興味があります。

https://github.com/ROCmSoftwarePlatform/hipCaffe

インストールを開始しましたが、 clinfoでさえ、CLを必要とするものがすべてフリーズするという障害にぶつかりました。 これがソフトウェアの問題によるものなのか、それとも私のカード(R9 390)がROCmでサポートされていないだけなのかはわかりません。

2017年5月17日15:18:32GMT + 01:00、 BryanLinotifications @ github.comは次のように書いています。

AMD RadeonVegaフロンティア

ROCmオープンソフトウェアプラットフォームを積極的に改善し続けます
機械学習ライブラリ。 オープンマシンもサポートしています
Caffe(4月にリリース)のようなインテリジェンスフレームワーク。 後でこれ
四半期はトーチのサポートを提供する予定であり、 TensorFlow
お仕事。

-
あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示してください。
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -302103815

-
K-9メールでAndroidデバイスから送信されました。 簡潔に申し訳ありません。

@cathalgarveyAMDのGPUでCaffeOpenCLブランチを使用していますが、問題なく動作します。 make run testは1つを除くすべてのテストに合格しました

聞いて良かった。 HW / SWの設定についてお伺いしてもよろしいですか? たとえば、あなたはどのカードですか
使用、Linuxのどのディストリビューション/バージョンなど?

以前はAMDGPU-proを使用していましたが、ROCmのインストール時にアンインストールしました。
私を妨害しているいくつかのレガシーなものがある可能性があります。

-
@onetruecathal / @ [email protected]

2017年5月17日水曜日午後3時50分、Bryan [email protected]
書きました:

@cathalgarvey私はAMDのGPUでCaffeOpenCLブランチを使用してきました
それはうまく機能します。 実行テストを1つを除くすべてのテストに合格させます


あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。

@cathalgarvey

  • Caffe OpenCLブランチ(テスト済みコミットc61d48746b2df1d237c64abc7416342ce98f3251
  • OS:Ubuntu 16.04.2 LTS
  • Polaris(RX460)、Fiji(Fury X)、Tonga(W7100)でテスト済み
  • ドライバー:Linux16.40以降用のAMDGPU-Proドライバー
  • ウィーンCL
  • 一般的な依存関係: libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libblas-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libboost-all-dev cmake python-numpy
  • cmake: cmake -DViennaCL_INCLUDE_DIR=<wherever you downloaded ViennaCL>/ViennaCL-<version> -DOPENCL_INCLUDE_DIRS=<wherever you downloaded ViennaCL>/ViennaCL-<version>/CL/ -DOPENCL_LIBRARIES=/opt/amdgpu-pro/lib/x86_64-linux-gnu/libOpenCL.so.1 ..

はい、上記のOpenCLブランチに加えて、naibaf7は、amdおよびhdグラフィックスを使用したコモディティハードウェアのリアルタイム推論に使用することについての本を(間もなく)発行する予定です。

ああ; 私はOpenCLブランチではなくhipCaffeについて話していました:

https://github.com/ROCmSoftwarePlatform/hipCaffe

hipCaffeをビルド/テストするためにROCmをインストールするには、アンインストールする必要がありました
AMDGPU-pro、おそらくバニラブランチをもう一度試してみます。 それは貧弱です
文書化されていますが、残念ながら..ブラインド「メイク」を試してみようと思います。

ですから、AMDに関する他の人の経験を聞くことにまだ興味があります
ROCm / HIPスタック; 彼らがTensorflowフォークに取り組んでいるなら、それは素晴らしいことです、
それが実際にAMDカードの3/4以上のモデルで動作するという条件で
野生。

-
@onetruecathal / @ [email protected]

2017年5月17日水曜日午後4時9分、Bryan [email protected]
書きました:

@cathalgarvey

Caffe OpenCLブランチ(テスト済みコミット
c61d48746b2df1d237c64abc7416342ce98f3251)
OS:Ubuntu 16.04.2 LTS
Polaris(RX460)、Fiji(Fury X)、Tonga(W7100)でテスト済み
ドライバー:Linux16.40以降用のAMDGPU-Proドライバー
ウィーンCL
一般的な依存関係:libprotobuf-dev libleveldb-dev libsnappy-dev
libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev
libblas-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
libboost-all-dev cmake git python-numpy cmake

あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。

@cathalgarvey彼らがフルフォークではなく、ヒップバックエンドで作業していることを願っています。 それは悲しいことであり、作業の労力を分割するだけです。
すでに十分なツールがあります:/

@YvanDaSilva AMDの取り組みは、現時点では少し調整が不十分です(はい、すべてのフォークです)。 また、たとえばCaffeのOpenCLブランチとは異なり、多種多様なデバイスではまだうまく機能していないようです...

@ naibaf7私は絶対に同意します。
正直なところ、人材が不足しているようで、あらゆる面で取り組んでいます。
ちなみに:ETHがニューロインフォマティクスを持っていることを知りませんでした;)いいですね!

@cathalgarvey私のような素人のためにROCm / HIPスタックについて詳しく説明していただけますか。 私はシー諸島のカードでAMGPU-proとAMDGPUをプレイしているので、いくつかの有用な結果を投稿できると確信しています。

@YvanDaSilva
彼らは私の最初のCaffeOpenCLプロジェクトを後援しましたが、残念ながらうまく調整できなかったため、AMDの研究とAMDの独立した男もOpenCLポートに並行して取り組んでいました-以前のAMDの研究チームは現在機能しておらず、それらのほとんどは実際にTeslaで働いています(自動運転車プロジェクト)今...とても不幸な一連の出来事。
私はまだ彼らと協力して連絡を取り合っています。 ベガは面白いでしょう:)

@ naibaf7いいね、ラッキー! 私がHeig-vdにいたときにそのような研究があったら、確かに修士号を取得し続けていただろう。

ええ...それは私が考えたものです。 非常に多くの作業があり、これらの分野で利用できる人材はほとんどありません。

これらはすべて素晴らしいように聞こえますが、ベンダー固有のソリューションだけでなく、TensorFlowをOpenCLSYCLと連携させることに焦点を当てましょう... :-)
RoCと他のHiPが独自のGitHubを持って、独自の問題について話し合うことを願っています...
@ naibaf7 :少なくとも私はまだOpenCLの領域にいます。 もう一度クラブに参加してください! :-)

@keryell作品にTensorflow用のHIPポートがあれば、HIPに関する議論は有効だと思います。 結局のところ、公式のTensorflow-on-CLソリューションは、プラットフォームとカーネルのサポートが大幅に制限された独自のSYCLフレームワークを使用することです。したがって、CUDAからの新しい方法を提供する「ベンダー固有の」HIPソリューションよりも優れているわけではありません。

HIPは現在ほとんどAMDが行っていることかもしれませんが、AFAIKはオープンスタンダードですか? たぶん私は間違っています。 ただし、AMDがTensorflow-on-HIPポートを提供できる場合は、公式のtensorflow-on-SYCLポートよりもすぐにオープンになります。

HIPはCUDAのサブセットであるため、CUDAと同じくらいオープンです。

いいよ; HIP-the-APIはCUDA-the-APIのサブセットですが、NVidiaがOracleのチャネリングを開始するのに十分な熱意を持っていない限り、それが問題になるとは思えません。 私はHIPのランタイム/コンパイラについて言及していましたが、AMDは〜オープンだと思います。

編集:上記が失礼に聞こえた場合は申し訳ありません。 上記の私の立場を明確にしようとしているだけです!

VulkanとOpenclは融合しますか?

@cathalgarvey議論は明らかに有効ですが、ここではありません...
あなたはここGitHubにいて、クロノスグループの標準を使用してTensorFlowとEigenの移植について話し合っています。
これはTwitterやFacebookの壁ではありません... :-)
だから、これらのプロジェクトにいくつかのコミットで貢献してください! :-)

TensorFlowをComputeCppでコンパイルするためのセットアップガイドの新しいバージョンがあります。これは、CodeplayのSYCLの実装であり、OpenCLデバイスを使用できます。 ご意見をお聞かせいただければ幸いです。 https://www.codeplay.com/products/computesuite/computecpp/guides/how-to-setup-tensorflow-with-computecpp

テストされていないAMDGPUでこれを機能させるための成功率はどれくらいか分かりますか? AMD Radeon Pro 460 @ rodburnsでテストされているかどうか特に興味があります。 テストされていないGPUに希望があれば、Macbookラップトップでubuntuを実行するのに数時間を費やすことができれば幸いです。

@samhainsこれはテストしていませんが、試してみることができます。 SPIR拡張機能をサポートするUbuntuでいくつかの古いAMDドライバーを使用する必要があります。 私はまだそれらがどのドライバーであるかを理解することができていません。

@samhainsコードプレイルートが配信されない場合は、 tf- corianderをお見逃しなく。これは、最終的にUbuntu / Macで実際に使用できる状態になります。

私は現在、convnets、双方向rnnsなどでテストしていますが、すべてがうまく機能しているようです。 これは「バニラ」OpenCL1.2で実行されるため、比較的古いハードウェアの膨大な範囲でTensorflowを有効にする必要があります。

今のところ、こすりはTensorflow0.11に基づいています。

@rodburns。 リンクhttps://www.codeplay.com/products/computesuite/computecpp/guides/how-to-setup-tensorflow-with-computecppに記載されている手順に従ってみました
次のエラーが発生します。
エラー:/home/sayantan/.cache/bazel/_bazel_sayantan/6f05f78a1e215999d72e42c1e87a8c1d/external/protobuf/ BUILD:609 :1:ルール '@protobuf //:python / google / protobuf / internal / _api_に宣言されていない包含':
実際、ソースからテンソルフローをコンパイルしようとすると、同じエラーが発生します。 私は以前にそれをコンパイルしましたが、何が変わったかはわかりません。

@rahasayantan何が含まれていますか? 同様に、-config = syclなしでコンパイルするときにそれを取得しますか?

@lukeiwanski :私が理解している問題は、BazelがProtobufをコンパイルしようとしていて、サブディレクトリが見つからないかダウンロードされていないことです。 recursive-submoduleでプルを実行しましたが、同じ問題があります。 また、-config = syclがなくても同じ問題が発生します。 実際、テンソルフローのメインプロジェクトからgit pullを実行すると、同じ問題に直面します。 私はこれがopenCLと関連しているとは思わない、それは私がプルをしている方法に関するいくつかの問題である。 gitを使用せずにリポジトリからプロジェクトzipを手動でダウンロードしてコンパイルすると、正しくコンパイルされますが、セグメンテーション違反が発生します。 私はすでにあなたのGITプロジェクトでこの問題を提起しており、そこで話し合っています。そのスレッドのセグメンテーション違反に関連する更新を提供します(重複する点はありません)。 ご返信ありがとうございます。

オープンソースのtriSYCLが登場します。 https://github.com/triSYCL/triSYCL/pull/45を参照してください

私はここで新しいです。 TFがOpenCLをサポートするのを見ることに非常に興味があります。 このスレッドから更新を取得するにはどうすればよいですか?

emmm ...おもしろいけど、なんで? Tensorflowがcudaを選択するのに、最初はopenclを選択するのはなぜですか? 私が推測するいくつかの商業的理由?

こんにちは@ tensorflower-gardener、

@hughperkinsは、OpenCL1.2デバイスでNVIDIA®CUDA™コードを実行できるCorianderを作成しました。 TFをOpenCL1.2デバイスに接続する必要性に適しているかどうかを確認することをお勧めします。 彼の作品を使用する予定がある場合に備えて、彼の名前と貢献を親切に説明してください。

MacのOpenCLサポートが少しからtf.zeroに変わったことを期待しているようです。 TensorFlow MacではGPUがサポートされなくなることを読みました(1.2以降)。

Note: As of version 1.2, TensorFlow no longer provides GPU support on Mac OS X.

wtf

https://www.tensorflow.org/install/install_mac

TF-CorianderはMacでテストされているため、バージョンパリティに達した場合は、それを使用できるはずです。

2017年6月22日11:46:51CEST、 dylibnotifications @ github.comは次のように書いています。

MacのOpenCLサポートが
少しからtf.zero 。 そこにあるMacはもうないだろうと読んだだけです
どうやらGPUサポート( 1.2+ ):

Note: As of version 1.2, TensorFlow no longer provides GPU support on
Mac OS X.

wtf

https://www.tensorflow.org/install/install_mac

-
あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示してください。
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -310331281

-
K-9メールでAndroidデバイスから送信されました。 簡潔に申し訳ありません。

悲しいことに、eGPUとn Nvidia 980 Tiが内部にあるため、ドライバーが機能し、Cudaが機能します。

今のところ、構成でTensorFlowを試す時間がありませんでした。

私のコンピューターにインストールされているwebdriverとCudaツールキットとCudaサンプルはうまく機能します

https://youtu.be/JN9fDmqf010

@cathalgarveyあなたはtf-corianderでconvnetsをテストすると言いましたが、convnetsはまだ機能していないようです。 tf-corianderを使用してGPU上でconvnetを実行することができたかどうかを明確にしていただけますか?

テンソルフローがOSXでGPUをサポートしなくなったのはなぜですか? 注文したeGPUセットアップでTensorflowを使用することを計画していました。

@justinrmiller彼らは、mac osでもうテストできないと主張しているため、サポートを停止することにしました。 しかし、私はそれを信じるのに苦労しています。 ハイシエラでのegpusの広告と、新しいnvidiaドライバーの導入により、これはもはや当てはまりません。

@tscholakええ正確に。 私は新しいegpuエンクロージャーを使用して、Windowsボックスを永久に捨てるつもりでした。

NvidiaカードはeGPUエンクロージャーで機能しますが、Appleは開発キットでRX580のみを公式にサポートするため、OpenCLの必要性がなくなることはありません。

MacのOpenCLは1.2です。これは、アクティブなドライバーがないように見えることを意味します
発達。 TFにメタルサポートを追加するのは骨の折れるプロセスだと思います
(Eigenとstream executorを有効にします)が実行可能です。

2017年7月16日午後3時17分[email protected]
書きました:

NvidiaカードはeGPUエンクロージャーで機能しますが、Appleは
開発キットでRX580を公式にサポートするだけなので、
OpenCLは消えません。


コメントしたのでこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-315634166
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/ACFkv3bmDr_KFSydC-QW_xbuR008pvLXks5sOm_kgaJpZM4Gex3i

macOSのGPUサポートが廃止されたことをとても残念に思います。

Appleは明らかにNvidiaGPUにすぐに変更されないため、macOSでのGPUのOpenCLサポートを引き続き探しています。

Tensorflowは私の選択したエンジンです。 私のMacBookProまたは将来のiMacProでローカルにGPUアクセラレーションを使用するのは素晴らしいことです。

Microsoftにとっては、Appleを妨害することは理にかなっていますが、GoogleにはデスクトップOSがないため、彼らは自分自身を傷つけているだけです。

正直なところ、私よりも賢い人がMac OS10.13のMPSを統合することを検討する必要があります-箱から出してすぐにニューラルネットワークプリミティブの大規模なセットをサポートするメタルパフォーマンスシェーダー。 これにより、モバイルおよびデスクトップiOS用の最新の高性能GPUとmacOSTensorflow推論のデプロイが可能になります。

私が理解しているように、Appleプリミティブを使用してトレーニングすることはできません(それらは何も提供しません)が、Tensorflowサポートを使用すると可能でしょうか? Appleプラットフォームを使用している人にとっては、それが恩恵になると思います。

グーグルがこれを社内で提供するとは思わないし、自分でそれを試みるのに必要なスキルもほとんどない。 このアイデアを投稿することで、私よりも才能のある人々がそれを受け入れることができます。

:)

Appleは、Appleデバイスの販売のみを目的としています。 グーグルはグーグルの大規模なサービスを雇うことを目的としています。

1台のAppleラップトップのように1台のデバイスでAI(学習)を行う場合は、「ディープラーニング」ではなく「表面学習」を行うため、チュートリアル以外のことはやめたほうがよいでしょう。 推論の結果、1人のユーザー、1台のデバイス(マルチコア電話が多すぎない場合でも)のトレーニング済みモデルがGPUを介して実行できるようになりますが、CPUでのみ完全に実行できます。

一方、学習のために非常に大きなデータセットをフィードする場合、または非常に大きな同時顧客グループにトレーニングされた推論を提供する場合は、GPUが絶対に必要です。

とはいえ、そのような規模でそれを行うことは、ネットワークの問題のためにそれほど簡単ではありません。 TPU-Podsの物理アーキテクチャをご覧ください。 これはラップトップの対蹠地にあります(メモリ過負荷のマルチコアサーバーごとにいくつかのGPU、サーバー間通信用の専用光ファイバーを備えています)。

私はMacBookProを持っています。 クラウドにアクセスするのに最適なターミナルです:-D

MetalのTFはiOSにも拡張できると思います。 それを手に入れることに興味がある人は、最初にEigenにMetalサポートを追加することをお勧めします(参照としてOpenCLを使用できます)。

@rogerpasky学校では、モデルの評価だけでなく、モデルのトレーニングにもTensorflowを使用する必要がありました。 そして、私は近い将来、これをもう一度繰り返す必要があります。 私のような学生にとって、GPUのトレーニングを受けることは必須であり、多くの時間を節約できます。 複数の同時ユーザーにサービスを提供するだけではありません。

@rogerpaskyそれはMac上でローカルにモデルとソリューションを開発する能力についてです

@rogerpaskyは敬意を表して反対します。 クラウドベースのマルチGPUソリューションはインターネットサービスに最適ですが、私はプロのビデオ制作パイプラインをターゲットにしています。このパイプラインでは、何時間ものプロ解像度と非圧縮のHD、2K、4Kフッテージで推論が実行されます。クラウドにアップロードする、b)googleや誰にもデータを持たせたくない、c)ローカルにマルチGPU対応システム(MacとWindows)でいっぱいの部屋があり、それらを活用したい、d)単一の画像の推論はCPUで問題ありません。複数のグラフを介して推論するために動画全体を実行すると、MPSとCPUのようなものを使用してパフォーマンスが100%向上します。 コミュニティは標準のサポート/採用を拒否し、代わりにNvidiaのみのコードを使用しているため、実際のユースケースはハトに穴をあけられ、それは本当に残念です。

これは、チュートリアルを実行している趣味の人からのアイドルリクエストではありません-GPU推論は、実際のハードウェア上のさまざまなワークロードに対してさまざまなGPU / CPUファミリをサポートするのと同様に重要です。 グーグルがこれを真剣に受け止めてくれることを本当に望んでいます。TFのような単一のライブラリに固執できるのは素晴らしいことです。

私の話を聞いてくれてありがとう、私は怒鳴るつもりはありませんが、コミュニティに別の視点を提供するつもりです。

@ pldelisle@ tscholak@ vade誤解しないでください。 私はそれが欲しいです、そしてあなたがこのスレッドで検索すると私はサポーターとして参加しました、しかし私がそれをフォローしている限り、私はそれをそう思うという理由だけでなく、私が書いた結論に達しました(私はそう思うMacBookは、何千ものビデオでトレーニングされた場合、溶けてしまいます:-D)が、実際の業界の事実はそうです。 短期間で解決するのを待つ必要はありません(私見、iPhone / Androidの問題以来、AppleとGoogleはお互いを憎んでいるため、解決されることはありません)。

@rogerpasky MacOSではすでにnvidiaGPUがサポートされていました。 1.2で削除されました。

Note: As of version 1.2, TensorFlow no longer provides GPU support on Mac OS X.

eGPU(Sonnet)の注文をキャンセルし、ゲーミングリグでLinuxをデュアルブートするだけですが、これは、人々が使用しているもののサポートを停止するのはちょっと悪いことです。 eGPU(モデルトレーニング)を使用してMacでこれを実行することを本当に望んでいましたが、今は実現しないと思います: https ://github.com/lengstrom/fast-style-transfer

@rogerpaskyえーと、CoreMLがKeras経由のテンソルフローモデルのインポートをサポートしていることをご存知ですか? AppleはGoogleを「嫌い」ではなく、ビジネスはビジネスであり、Appleのサプライヤーの1つはSamsungです。 少し読んでください。 グーグル、アップル、サムスンはビジネスであり、お金を稼ぐことをします。 補足として。 ちなみに、私のMacBook Proは、何千本もの映画で推論を実行することで溶けていません。CUDAは、Nvidiaからの採用と継続的なサポートに非常に便利であり、AMDからの機会を逃して私たちを現在の場所に導いたと思います。 私はそれが悪意のあるものではないと思います。変更を加えるためのコストとパフォーマンスの差とコースを維持するためのコストだけです。

この問題を解決するのに役立つ天才がやってくるのではないかと思います。

OpenCL、Mac、iOS、CoreML、Vulkanなどの新しい場所にディープラーニングをもたらすことについての共同ディスカッションのためにGoogleグループを作成しました。これらを実現するために支援したい場合は、参加してメモを投稿してください。ケースまたはあなたが取り組んでいる問題のどの部分。 MIOpen、Codeplayの仕事、TF-Coriander、そして私の会社(Vertex.AI)の内部プロジェクトなど、より多くのプラットフォームにTFを導入するための取り組みに真剣に取り組んでいる人々がすでにいます。 これらの取り組みはすべて密接に関連しているため、開発者とユーザーをすべて1か所にまとめることは素晴らしいことです。

https://groups.google.com/forum/#!forum/deep -learning-everywhere

@benoitsteiner @hughperkins @cathalgarvey
@rogerpasky @vade @tscholak @pldelisle @adityaatluri @ chocol4te @justinrmiller

@justinrmiller Tensorflow 1.2.1(CUDA 8、cuDNN 6)を実行しているSierra(Sonnetエンクロージャー内のTitan Xp)にeGPUがあります。これは、最初から構築することを気にしない場合はそれほど問題ではありませんでした。 何か問題があれば私に知らせてください。

tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: TITAN Xp, pci bus id: 0000:4f:00.0)

In [5]: tf.__version__
Out[5]: '1.2.1'

@ danbarnes333すごい! 情報をありがとう!

@ danbarnes333 cuDNN6でtf1.2を構築するにはどうすればよいですか? LLVMを使用しましたか? GCC? cuDNN5でビルドすることしかできませんでした...

参考までに、 https: //machinelearning.apple.com/

@tscholakこれをOpenCLに保持するためにここに投稿するつもりはありませんが、ここで手順を要約します。

@choongng Googleグループに参加しましたが、静かなようです。 だから私はここで暴言を吐きます;-)

  1. 機械学習/高性能/ GPUコンピューティングは、競争の激しい市場です。 NVidiaは、好むと好まざるとにかかわらず、市場支配し、カードとソフトウェアをベストの近くに保ちます。 予算と期限がある場合は、今のところNVidiaで多かれ少なかれ立ち往生しています。

  2. 私は古いAMDカード(「ボネール」)とゼロ予算を持っています-趣味。 昨日の時点で、ArchLinuxで独自のAMDOpenCL2実装を使用してcaffeを実行していますが、今朝はAMDのオープンソースMIOpenを同じように実行しています。 これで、いくつかのモデルをトレーニングできます。 Bonaireは、1800GFLOPS単精度でピークになります。 したがって、TensorFlowがBonaireのOpenCLで実行されない場合、私はTensorFlowを使用しません。

  3. 予算が魔法のように現れる場合は、Intel CPUとNVidiaカードを購入し、ベンダーがサポートするプロプライエタリソフトウェアを実行します。 Google、Red Hat、Canonical、AMDなどのベンダーの無料QAを完了しました。

    3年間持っていたGPUから何かを引き出すのに、3か月(そして3つのディストリビューション-Fedora 25、Ubuntu 16.04 LTS、Arch)かかりました。 Fedoraのバグトラッカーには、私の名前が記載された未修正のバグがあります。 UbuntuとFreedesktop.orgについても同じことが言えます。 それらを修正しようとしている人々のほとんどは、どちらも支払われていないか、何か他のことをするために支払われています。

    はい、AMDの新しいCPUは印象的です。もちろん、ほとんどのソフトウェアはオープンソースですが、予算と期限によって状況が変わります。 サポートが重要です。 サポートがすべてです!

@znmebTFにGCN以前のハードウェアを使用できることすら知りませんでした。
私のタヒチでは、AMD独自のドライバーはGCN1用の古いLinuxカーネルでのみ動作するため、サポートは1つのディストリビューション(ubuntu 14.01.x)しかありません。 (私はSYCL経由でTF + openCLを取得します(7970でテストされていません))

私が働いている場所では、R&D部門全体がグリーンチームを運営しています。 それらはすべてPHDを持っており、1行のcuda(またはOCL)を書いたものはありません。 しかし、ツールはKerasのワークロードを加速するためにここにあります。 私はリサイクルされたマイニングGPUがセカンドライフを搾り取ろうとしているのはちょっと変わっています。

グリーンチームサポート以外のtl; drは、AMDGPUの市場シェアが表示された場合にのみ表示されます。
鶏が先か卵が先かという問題です。 私はベガに期待しています…しかしそうです…1080Tiキラーではありません。

@acoye FWIWは、4月からスラッシングとグーグルを行った後、今週末に私を動かしたGitHubの投稿です: https ://github.com/BVLC/caffe/issues/5804#issuecomment-318789942。 https://github.com/cdeterman/gpuR/issues/77#issuecomment-318814154も参照してください。 それが私の最初の問題でした-ボネールを使用してRの線形代数を加速しようとしました。

@acoye
最新のLinuxディストリビューションに移動して、AMDGPUドライバーを有効にし、RADEONを無効にし、カーネル構成でCONFIG_DRM_AMDGPU_SI=Yおよび/またはCONFIG_DRM_AMDGPU_CIK=Yを設定して、4.11 /4.12などの最近のカスタムコンパイル済みカーネルを使用できます。さらに、initramfsの7970(Tahiti)用のAMDファームウェア=>最新のAMDGPU-PRO OpenCLは、すべてのGCNカードで動作します。 FGLRX(古いLinuxディストリビューションの場合)とRADEONドライバーを介したCloverのことは忘れてください。どちらも標準以下です。
プレGCNカードも忘れてください。 私はWindowsfor CaffeでOpenCLを使用してそれらをテストしましたが、そのような古いカードのパフォーマンスは努力する価値がありません。 2012年以降のすべてのAMDカードはとにかくGCNでなければなりません。

@ naibaf7昨日、AMDのオープンソーススタックを機能させるために数時間を費やしました。 MIOpenとその依存関係を取得しましたが、 hccにはまだいくつかのビットがありません。 すべてを取得するには、カスタムカーネルビルドを実行する必要があるかもしれません。 CUDAコードを移植したり、コンパイルされたC ++をGPUで実行したりすることはあまり気にしません。 ;-)

また、彼らのWebサイトで、アセンブラーのプログラミングについて何かを見ました。アセンブラーからFORTHに簡単に移動できるため、興味があるかもしれません。 ;-)

@znmebはい、RX 480でMIOpenとTensorFlowを動作させようとしていますが、メインの開発リグを破壊したくないので、代わりにIOMMU仮想化を使用し、Ubuntu16.04仮想マシンを使用します。 RX480。AMDドライバーは仮想化に非常に適しています(ゲームカード用に作成されたnVidiaドライバーとは異なり、Quadroドライバーのみが行います)。

@znmebあなたがしなければならないのはsudo apt-get install rocm miopen-hipだけです

@adityaatluri Archユーザーリポジトリにありますが、インストールされません。GitHubソースからもインストールされません。 単純なもののように見えます-いくつかの依存関係を見つけることができません。

@znmebここ(https://github.com/RadeonOpenCompute/ROCm/issues)で問題を作成して、そこで話し合うことができますか? ありがとう!

@adityaatluri確かに-私は夕食に向かっていますが、戻ってきたらそれを提出します

@ebrevdo AMDプロセッサを搭載したMacでテンソルフローGPUを使用する方法はありますか?

私の会社はしばらくの間OpenCLディープラーニングに取り組んでおり、いくつかの初期の結果を示すことができます。 短期的にはKerasに焦点を当てていますが、(非常に)実験的なTensorFlowサポートも構築しており、最初のリリース後に再検討します。 AMDの初期スループット数を含む詳細はこちら:http: //vertex.ai/blog/bringing-deep-learning-to-opencl

いいね!

ちょっとした落とし穴:AFAIK、MIOpenはAMD固有ではありません。OpenCLとROCmにリンクできるからです。 後者の方がおそらく高速ですが、それでもです。 MIOpenは、「GPU上のオープンソースニューラルネットワーク」の大きな前進であり、AMDは、OpenCLでうまく機能するのであれば、大きな信頼に値します。

2017年8月14日17:19、「ChoongNg」は次のように書いています。
私の会社はしばらくの間OpenCLディープラーニングに取り組んでおり、いくつかの初期の結果を示すことができます。 短期的にはKerasに焦点を当てていますが、(非常に)実験的なTensorFlowサポートも構築しており、最初のリリース後に再検討します。 AMDの初期スループット数を含む詳細はこちら:http: //vertex.ai/blog/bringing-deep-learning-to-opencl (http://vertex.ai/blog/bringing-deep-learning-to-opencl)

あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHub(https://github.com/tensorflow/tensorflow/issues/22#issuecomment-322235416)で表示するか、スレッドをミュートします(https://github.com/notifications/unsubscribe-auth / ABHR3VYHXFDEX0gPHTGLSbFeHjPfEfsXks5sYHOGgaJpZM4Gex3i)。

@cathalgarvey訂正していただきありがとうございます。MIOpenドキュメント(https://rocmsoftwareplatform.github.io/MIOpen/doc/html/install.html#prerequisites)のシステム要件に基づいてコメントを作成しましたが、より良いリンク。

待って、私はこのスレッド/問題を10分間読んでいます。 途中で、残りをスキップしました。 AMD GPUはまだサポートされていますか?

カーネル/ OS(コードプレイ)の1つの非常に古い組み合わせでのみ機能する厄介なクローズドソースのものを使用する:はい

古いバージョンのテンソルフローを使用し、まだいくつかの非線形性をサポートしていません(tf-coriander):はい。

本当に:公式ではありません。 AMDはHIPに移植しているので、3か月かそこらで進歩すると思います。 他のフレームワークは、その努力のおかげですでにうまく機能しています。

2017年8月18日02:09:55GMT + 01:00、 abrad1212notifications @ github.comは次のように書いています。

待って、私はこのスレッド/問題を10分間読んでいます。 中途半端になりました
と私は残りをスキップしました。 AMD GPUはまだサポートされていますか?

-
あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示してください。
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -323233294

-
K-9メールでAndroidデバイスから送信されました。 簡潔に申し訳ありません。

FWIW最近のバージョンのPyGpuはCUDAまたはOpenCLのいずれかを使用できると思います。 Archボックスにすべてのソフトウェアをインストールしましたが、まだテストしていません。

@ abrad1212はい、この問題はしばらくの間続いています。 @cathalgarveyが述べたように、その努力は膨大であり、多くの人々が「それを機能させる」ことを試みています。

私たちの側からの少しの更新。 Ubuntu16.04のAMDGPU-proドライバースタックでComputeCpp0.3.0を使用できるはずです。手順については、http: //deep-beta.co.uk/tensorflow-1-3-on-ubuntu-16を参照してください。

また、現在、さまざまなモデルのパフォーマンスの向上に焦点を当てています。やるべきことはたくさんありますが、そこに到達しています。

@lukeiwanskiベンチマークへのあなたのアプローチは何ですか? Kerasに含まれているモデルの時間を計り、TF + cuDNN + K80に対して正規化します。これは、一般的で十分に最適化された構成だからです。 私たちの方法論はMaxWoolf(http://minimaxir.com/2017/06/keras-cntk/)に似ており、コードはそれほど多くありませんが、喜んで共有します。 私たちのWebサイト(http://vertex.ai)にはいくつかのスループットの数値があり、コードはXception推論のTF 1.2よりもわずかに高速であり、より多くのアプローチを並べて比較することは興味深いでしょう。

Windowsソリューションはありますか? 私は自分のPCにUbuntuをインストールしますが、現在それを実行するのに十分なスペースがありません。

ubuntu 14.04
tensorflowマスターブランチ
openclサポートを構築し、opencl intelcpuランタイムのみをインストールします。
python2.7
https://developer.codeplay.com/computecppce/latest/getting-started-with-tensflowガイドに従ってください
pythonclassify_image.pyを実行します
openclドライバーを呼び出さなかったようです。 (opencl icdラッパーを追加しましたが、何も表示されませんでした)
Pythonコードに追加する必要のある構成はありますか?
sess.graph.device( '/ cpu0')のように

しかし、私がEigenを使用する場合、skclガイドはOpenCLをサポートするCPUで実行できます。 (また、このガイドコードは少し古くなっています。変更が必要です)
https://developer.codeplay.com/computecppce/latest/getting-started-with-eigen

誰でも、テンソルフローPythonインターフェースがOpenCLサポートでどのように実行できるかを確認するのに役立ちます。

また、このオプトセットを使用してテンソルフローをビルドしても、実際にはテンソルフローバイナリは生成されません。 --config = sycl
このコマンドでテンソルフローを構築するだけです:
bazel build -c opt / tensorflow / tools / pip_ package:build_pip_package

たぶん私はforget--config = syclをビルドします
ビルドコマンドを試して、OpenCLライブラリを呼び出せるかどうかを確認します。 結果を取得したら、ここに投稿します。
bazel build -c opt tensorflow / tools / pip_ package:build_pip_package

@ joe8086以下でtf.Sessionの作成を変更すると、ターミナルにログが表示されますが、これはSYCLについて言及していますか?
tf.Session(config = tf.ConfigProto(log_device_placement = True))

Eigenガイドについて、古くなっている具体的なフィードバックはありますか?

@rodburnsありがとう。
私のエラーはビルドテンソルフローミス設定オプション--config = sycl
このブランチコードでこのオプションを追加した後https://github.com/lukeiwanski/tensorflow.git
OpenCLバックエンドでテンソルフローが実行されているのがわかります。

Eigenガイドの場合、主なエラーは次のとおりです。
1、正しいインクルードファイルを与えないでください。
2、配列の場合、Tensor、TensorMapは正しいテンプルパラメーターを提供しません。
3、static_castの場合はデータ型を指定しません。

このディスカッショントピックに役立つ情報を追加してください。
1、メインテンソルフローは--config = syclが正しいとテンソルフローを構築できません。
2、CPU OpenCLを使用すると、速度は私の環境で通常のCPU実装の約4倍から8倍になります。

時間pythonclassify_image.py
2017-09-07 16:56:29.076054:I tensorflow / core / platform / cpu_feature_guard.cc:137]お使いのCPUは、このTensorFlowバイナリがコンパイルされていない命令をサポートしています:SSE4.1 SSE4.2 AVX
2017-09-07 16:56:29.077967:W ./tensorflow/core/common_runtime/sycl/sycl_device.h:49]ComputeCppでサポートされているOpenCLGPUが見つかりませんでした。OpenCLCPUを試しています
2017-09-07 16:56:29.159775:I ./tensorflow/core/common_runtime/sycl/sycl_device.h:66]次のOpenCLデバイスが見つかりました:
2017-09-07 16:56:29.159825:I ./tensorflow/core/common_runtime/sycl/sycl_device.h:68] id:0、タイプ:CPU、名前:Intel(R)Core(TM)i7-6700HQ CPU @ 2.60GHz、ベンダー:Intel(R)Corporation、プロファイル:FULL_PROFILE
2017-09-07 16:56:30.213375:W ./tensorflow/core/framework/op_def_util.cc:333] OpBatchNormWithGlobalNormalizationは非推奨になりました。 GraphDefバージョン9では機能しなくなります。tf.nn.batch_normalization()を使用してください。
ジャイアントパンダ、パンダ、パンダクマ、アライグマ、Ailuropoda melanoleuca(スコア= 0.89107)
indri、indris、Indri indri、Indri brevicaudatus(スコア= 0.00779)
レッサーパンダ、レッサーパンダ、パンダ、クマ猫、猫クマ、レッサーパンダfulgens(スコア= 0.00296)
カスタードアップル(スコア= 0.00147)
ヒメツチグリ(スコア= 0.00117)

実数1分44秒473
ユーザー2m8.980s
sys 1m20.024s

皆さん、私はこのスレッド全体を読むつもりはありませんが、誰かが私の質問に答えることができれば、それは素晴らしいことです! AMD GPUでTensorflowを使用できますか? もしそうなら、どのオペレーティングシステムで、RX Vegaでそれを行うことができますか? ありがとう!

@ M3L0NM4Nうーん...私はスレッドをフォローしていませんが、少なくともCPU OpenCLには、テスト可能なOpenCLコードがあるようです。 古いAMDGPU( "Bonaire")を使用しており、GPUとCPUの両方でOpenCLを実行しているので、これをテストできます。 私は週末にそれを撃つかもしれません。 GPUにOpenCLTensorFlowが本当に必要です。

tf-コリアンダーは動作しますhttps://github.com/hughperkins/tf-coriander

macosでテンソルフロー1.3gpu / openclをサポートしていますか?

最新ニュース:GitHubソースからOpenCLを使用してTensorFlow1.3.1を正常にビルドしました。 ドキュメントにはかなりの数の欠落部分があり、GPUで何も実行しようとはしていませんが、少なくともOpenCL以外のCPUでは機能しています。 ところで、私はCPU OpenCLをインストールしておらず、GPUOpenCLだけをインストールしています。

OpenCL GPUを使用したTensorFlowのテストケースはありますか? 最終的には自分で作成する必要がありますが、簡単に確認したいと思っていました。

@znmebええ、私が報告した問題のテストアプリがあります。 https://github.com/hughperkins/tf-coriander/issues/64

あなたのケースでうまくいくかどうか教えていただけますか?

@unoexpertoええ-動作します(クラッシュしません)が、OpenCLが見つかったかどうかはわかりません。

 python ./hello-tensorflow.py 
b'Hello, TensorFlow!'

OpenCLのコードがあることは明らかなので(ソースから./configureビルドを実行する場合)、ここでの最善の行動は、ドキュメントを要求するために別の問題を提出することだと思います。 とにかく、それが私がそれを見つけた方法です。

@znmeb私の場合、GPUデバイスの選択に関するデバッグ情報が最初に出力されたため、GPUデバイスが見つかったのではないかと思います。 おそらく、 tensorflow/core/common_runtime/gpu/gpu_device.ccのどこかにコンソールにprintfを追加して再コンパイルできます。

@unoexpertoディスカッションGoogleグループに参加し、ドキュメントのリクエストを投稿しました。 これにさらに力を入れる前に、誰かが応答するかどうかを確認するのを待つつもりです。

@znmebどのような指示に従っていますか? clinfoを実行しましたか? Computecpp_infoを実行しましたか? これは、OpenCLドライバーが期待どおりにインストールされていることを示していますか? Ubuntu 14.04の手順はhttps://developer.codeplay.com/computecppce/latest/getting-started-with-tensflowにあり、16.04を使用している場合は、 http://deep-beta.coにいくつかの実験的な手順があります。 uk / tensorflow-1-3-on-ubuntu-16-04-lts /

@rodburnsclinfoとclpeakの両方が実行されます。 最近これを行っていませんが、ソースからカフェをビルドしてテストを実行すると、GPUに確実にヒットします。 したがって、OpenCL / GPUドライバー/ライブラリが機能していると確信しています。

私はArchLinuxを使用しています-カーネルは彼らのLTSです-linux-lts4.9.52-1。 重要な場合、「Bonaire」は32ビットモードで約1.7 TFLOPSのピークに達し、AMDGPUの「SeaIsland」ファミリーに属します。

bin/computecpp_info 
********************************************************************************

ComputeCpp Info (CE 0.3.2)

********************************************************************************

Toolchain information:

GLIBC version: 2.26
GLIBCXX: 20160609
This version of libstdc++ is supported.

********************************************************************************


Device Info:

Discovered 1 devices matching:
  platform    : <any>
  device type : <any>

--------------------------------------------------------------------------------
Device 0:

  Device is supported                     : UNTESTED - Untested OS
  CL_DEVICE_NAME                          : Bonaire
  CL_DEVICE_VENDOR                        : Advanced Micro Devices, Inc.
  CL_DRIVER_VERSION                       : 2442.7
  CL_DEVICE_TYPE                          : CL_DEVICE_TYPE_GPU 

If you encounter problems when using any of these OpenCL devices, please consult
this website for known issues:
https://computecpp.codeplay.com/releases/v0.3.2/platform-support-notes

誰かがテストログを収集していますか? デバイスがテストされていないと表示されるので、テストします。 ;-)

Sycl / OpenCL用のTensorFlowをビルドすることは不可能です!

構成:
Ubuntu 16.04
Tensorflow r1.3
OpenCL 2.0
ComputeCpp CE 0.3.2(computecpp_info OK)
インテルHDグラフィックス620
バゼル0.5.4

インストール手順(OpenCL Intel / ComputeCppビルド):
https://software.intel.com/en-us/articles/opencl-drivers#philinux
https://www.codeplay.com/portal/03-30-17-setting-up-tensorflow-with-opencl-using-sycl

エラー :

ERROR: /home/erwang/workspace/ia/tf_original/tensorflow/tensorflow/core/kernels/BUILD:1695:1: C++ compilation of rule '//tensorflow/core/kernels:adjust_contrast_op' failed (Exit 1)
In file included from tensorflow/core/kernels/adjust_contrast_op.cc:19:
In file included from ./tensorflow/core/kernels/adjust_contrast_op.h:18:
In file included from ./third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:
In file included from external/eigen_archive/unsupported/Eigen/CXX11/Tensor:14:
In file included from external/eigen_archive/Eigen/Core:299:
In file included from external/local_config_sycl/crosstool/../sycl/include/SYCL/sycl.hpp:20:
In file included from external/local_config_sycl/crosstool/../sycl/include/SYCL/sycl_interface.h:54:
external/local_config_sycl/crosstool/../sycl/include/SYCL/multi_pointer.h:342:3: error: multiple overloads of 'global_ptr' instantiate to the same signature 'void (pointer_t)' (aka 'void (__attribute__((address_space(1))) float *)')

CPUでモデルをトレーニングするには時間がかかりますが、OpenCL / GPUアクセラレーションが本当に必要です...

@ErwanGalline Eigen (https://bitbucket.org/benoitsteiner/opencl/pull-requests/16/changes-required-for-new-computecpp-ce/diff#comment-None)への変更を拡大中です。発生している問題を修正します。

また、Eigenのアップストリームパフォーマンスを改善する準備をしています。これは少し注意が必要で、マージの競合の流れを回避するために@benoitsteinerとの調整が必要ですが、そこに到達しています。

AMDユーザーの場合、フォークを試してみることをお勧めします: https ://github.com/lukeiwanski/tensorflow/tree/dev/amd_gpu
Ubuntu 16.04のセットアップ手順は、次の場所にあります: http ://deep-beta.co.uk/tensorflow-1-3-on-ubuntu-16-04-lts/
前述の固有の変更が行われた後、すべての変更はテンソルフローの上流になります。

お役に立てば幸いです。

@lukeiwanskiフォークはAMDR9 Nano / AMD FirePro GPUのみをサポートしていますか?

@lukeiwanski GPUを使用していることを確認するために使用できるテストケースはありますか? radeontopで監視できますが、TensorFlow自体を使用するものが欲しいです。

@ZixuanLiangいいえ、だけではありません。
現在、AMD(R9 380、R9 Nano、FirePro)でテストしています。 Intel GPUがいくつかのドライバーのバグを公開していることはわかっていますが、修正が予定されています。 そして、私たちはルネサスR-Carを発表し、さらに続くことを期待しています。

ザイリンクスはtriSYCLのアップストリームサポートを提供していると思いますhttps://github.com/tensorflow/tensorflow/pull/12882-したがって、FPG(?)- @ keryellはそれについてもっと知っているはずです

@znmeb bazel test -c opt --config=sycl --test_output=all //tensorflow/python/kernel_tests:basic_gpu_testは公正な検証である必要があります..出力は次のようになります。
INFO: From Testing //tensorflow/python/kernel_tests:basic_gpu_test: ==================== Test output for //tensorflow/python/kernel_tests:basic_gpu_test: 2017-10-05 10:53:52.727745: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2017-10-05 10:53:53.059908: I ./tensorflow/core/common_runtime/sycl/sycl_device.h:66] Found following OpenCL devices: 2017-10-05 10:53:53.059926: I ./tensorflow/core/common_runtime/sycl/sycl_device.h:68] id: 0, type: GPU, name: Tonga, vendor: Advanced Micro Devices, Inc., profile: FULL_PROFILE .....

@lukeiwanskiありがとうAMDGPUで試してみます

@lukeiwanskiビルドとテストは私のボネールで機能しているようです。 ただし、私はPython 3.6を使用しており、手順ではPython2.7を使用しています。 2.7を使用する必要がありますか、それとも3.6が機能しますか?

@znmeb https://github.com/tensorflow/tensorflow/issues/6533#issuecomment -273852647をフォローすると、Python3.6が機能しているようです-まだ試していません

@lukeiwanski現時点でTFを構築できるComputeCppバージョンですか?
0.3.2から0.1.4までのさまざまなバージョンを試しましたが、どれも機能しませんでした。 それらはすべて、「 'global_ptr'の複数のオーバーロードが同じシグニチャにインスタンス化する」エラーで終了しました。
ところで、TFソースでTensorDeviceSycl.hファイルが見つかりません。名前が変更されたファイルですか? パッチを現在のソースに適用することは可能ですか?

前もって感謝します。

@eLvErDe ComputeCpp 0.3.2はビルドできます: https ://github.com/lukeiwanski/tensorflow/tree/dev/amd_gpu

アップストリームには、それを修正するEigenへのパッチがありません。https: //github.com/tensorflow/tensorflow/issues/22#issuecomment-334154564を参照してください。

バゼルビルド中にこのEigenパッチを注入する方法はありますか? たぶん、Eigen tgzバージョンをどこかにぶつけて、修正されたものを入手する必要がありますか?

ありがとう、アダム。

https://github.com/lukeiwanski/tensorflow/commit/8468d65e87e083337f18616f75ac56d3296d6ab1

このコミットはそれを構築するのに十分でしょうか?

はい、あなたはそれをチェリーピックできるはずです

残念ながら、それだけでは明らかに不十分です。次のビルドの失敗のいくつかを次に示します。

external/eigen_archive/Eigen/src/Core/util/BlasUtil.h:63:63: error: no type named 'ReturnType' in 'Eigen::ScalarBinaryOpTraits<cl::sycl::vec<float, 4>, std::complex<float>, Eigen::internal::scalar_product_op<cl::sycl::vec<float, 4>, std::complex<float> > >'
  typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar>::ReturnType Scalar;
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
external/eigen_archive/Eigen/src/Core/util/BlasUtil.h:69:34: error: invalid operands to binary expression ('const cl::sycl::vec<float, 4>' and 'const std::complex<float>')
  { return conj_if<ConjLhs>()(x) *  conj_if<ConjRhs>()(y); }
           ~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~

@eLvErDeコンパイルするために適用しなければならないコミットはほとんどありません。
dev / amd_gpuのヒントを使用するか、現在のブランチを変更したくない場合は、dev / amd_gpuをマージすることをお勧めします。

実際、私は非公式のDebian / Ubuntuパッケージに取り組んでいるので、公式の1.3.1リリースに近づこうとしています。 OpenCLのサポートがなくても生活できますが、正しくサポートされたらすぐに有効にする準備ができています。 テスト目的でブランチに対してパッケージを更新するかもしれませんが、今日はそれで十分です;)

マイニングリグには約10種類のAMDGPUがあります。 (7970からubuntu16.04およびamdgpu-proを実行するRX480まで)。 何かをテストして貢献できるかどうか教えてください。

何かをテストして貢献できるかどうか教えてください。
https://github.com/ROCmSoftwarePlatform/hipCaffeはどうですか
https://github.com/ROCmSoftwarePlatform/hipeigen

2017年10月17日火曜日午前10時54分、 slundellnotifications @ github.comは次のように書いています。

マイニングリグには約10種類のAMDGPUがあります。 (から
7970からRX480まで、ubuntu 16.04およびamdgpu-proを実行しています)。 できれば教えてください
何かをテストすることによって貢献します。


コメントしたのでこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-337309059
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AA6MNxXJ-G3nCQUA9RucrJ8y4vs5NPtLks5stOnbgaJpZM4Gex3i

@lukeiwanskiあなたのフォークはmacOSでもAMDGPUをサポートしますか?

やあ、
GPU(Mali-T720)が有効になっているAndroidデバイス用にUbuntu16.04x64でテンソルフローAPIを構築していました。

私のOS情報:
Ubuntu 16.04 x64
コンピューターGPU:NVIDIA 1080Ti
CUDA 8.0
CUDNN 5.1(ただし、構築にはcudaまたはcudnnを使用しません)
バゼル0.5.2
ComputeCpp CE 0.3.2

私のbuild.shは:
'
bazel build -c opt --config = sycl //tensorflow/contrib/android:libtensorflow_cc.so --cxxopt = "-
std = c ++ 11 "--cxxopt ="-DTENSORFLOW_DISABLE_META "--verbose_failures-
crosstool_top = // external:android / crosstool --host_crosstool_top = @ bazel_tools // tools / cpp:toolchain-
cpu = armeabi-v7a
'
ビルドする前に。 LD_LIBRARY_PATH = my_sycl_lib_path = $ LD_LIBRARY_PATHをエクスポートし、「-config = sycl」を使用せずにビルドしても問題なく、正しいlibtensorflow_cc.soを取得しましたが、「-config = sycl」を使用すると、最終結果に-lComputeCppが含まれていません。コンパイルエラー

このような完全なログ:

エラー:/ home / e0024 / workspace / tensorflow / tensorflow / contrib / android / BUILD:102:1:ルール '//tensorflow/contrib/android:libtensorflow.so'のリンクに失敗しました:link_dynamic_library.shに失敗しました:コマンドの実行中にエラーが発生しました
(cd /home/e0024/.cache/bazel/_bazel_e0024/783dad02ec856015f56356584726dd10/execroot/org_tensorflow && \
exec env- \
COMPUTECPP_TOOLKIT_PATH = / home / e0024 /ワークスペース/ソース/computeCppForSYCL1.2 \
HOST_CXX_COMPILER = / usr / bin / g ++ \
HOST_C_COMPILER = / usr / bin / gcc \
LD_LIBRARY_PATH = / home / e0024 /ワークスペース/ソース/computeCppForSYCL1.2/lib:/ home / e0024 / workspace / caffe / build / lib:/ home / e0024 / workspace / cudnn / lib64:\
PATH = / home / e0024 / bin:/home/e0024/.local/bin:/ home / e0024 / workspace / Anaconda2 / bin:/ opt / cuda:/home/e0024/workspace/source/protoc-3.3.0- linux-x86_64 / bin:/ home / e0024 / worksheet / bazel / output:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr /ゲーム:/ usr / local / games:/ snap / bin \
PWD = / proc / self / cwd \
PYTHON_BIN_PATH = / home / e0024 / worksheet / Anaconda2 / bin / python \
PYTHON_LIB_PATH = / home / e0024 / worksheet / Anaconda2 / lib / python2.7 / site-packages \
TF_NEED_CUDA = 0 \
TF_NEED_OPENCL = 1 \
external / bazel_tools / tools / cpp /link_dynamic_library.sh無視しない無視無視するexternal / androidndk / ndk / toolchains / arm-linux-androideabi-4.9 / prebuilt / linux-x86_64 / bin / arm-linux-androideabi-gcc -shared -o bazel-out / arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / tensorflow / contrib / android / libtensorflow.so'-Wl、-rpath、$ ORIGIN /../../../ _solib_armeabi-v7a / _U @local_Uconfig_Usycl_S_Ssycl_Csyclrt___Uexternal_Slocal_Uconfig_Usycl_Ssycl_Slib「-Lbazelアウト/腕のlinux-androideabi-4.9-v7a - GNU-libstdcpp-OPT / binに/ _solib_armeabi-v7a / _U @local_Uconfig_Usycl_S_Ssycl_Csyclrt___Uexternal_Slocal_Uconfig_Usycl_Ssycl_Slib -Wl、-whole-アーカイブbazelアウト/アーム-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / tensorflow / c / libc_api.a -Wl、-no-whole-archive -Wl、-whole-archive bazel-out / arm-linux-androideabi- 4.9-v7a-gnu-libstdcpp-opt / bin / tensorflow / core / libandroid_tensorflow_lib.lo -Wl、-no-whole-archive -Wl、-whole-archive bazel-out / arm-linux-androideabi-4.9-v7a-gnu -libstdcpp-opt / bin / tensorflow / core / kernels / libandr oid_tensorflow_kernels.lo -Wl、-no-whole-archive -Wl、-whole-archive bazel-out / arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / tensorflow / core / libandroid_tensorflow_lib_lite.lo -Wl 、-no-whole-archive -Wl、-whole-archive bazel-out / arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / tensorflow / core / libprotos_all_cc.a -Wl、-no-whole -archive -Wl、-whole-archive bazel-out / arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / external / protobuf / libprotobuf.a -Wl、-no-whole-archive -Wl、 -whole-archive bazel-out / arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / external / protobuf / libprotobuf_lite.a -Wl、-no-whole-archive -lComputeCpp external / androidndk / ndk / sources / cxx-stl / gnu-libstdc ++ / 4.9 / libs / armeabi-v7a / libgnustl_static.a external / androidndk / ndk / sources / cxx-stl / gnu-libstdc ++ / 4.9 / libs / armeabi-v7a / libsupc ++。a-landroid -llog -lm -z defs -s -Wl、-gc-sections'-Wl、-soname = libtensorflow.so '-Wl、-version-script tensorflow / c / version_script.lds -lz -static-libgcc- no-canonical-prefixes'-march = armv7-a ' -Wl、-fix-cortex-a8 '-sysroot = external / androidndk / ndk / platform / android-14 / arch-arm'):com.google.devtools.build.lib.shell.BadExitStatusException:プロセスが終了しましたステータス1。
external / androidndk / ndk / toolchains / arm-linux-androideabi-4.9 / prebuilt / linux-x86_64 / bin /../ lib / gcc / arm-linux-androideabi / 4.9 /../../../ .. / arm-linux-androideabi / bin / ld:警告:互換性のないbazel-out /arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt/bin/_solib_armeabi-v7a/_U@local_Uconfig_Usycl_S_Ssycl_Csyclrt___Uexternal_Slocal_Uconfig_をスキップしますComputeCppの場合
external / androidndk / ndk / toolchains / arm-linux-androideabi-4.9 / prebuilt / linux-x86_64 / bin /../ lib / gcc / arm-linux-androideabi / 4.9 /../../../ .. / arm-linux-androideabi / bin / ld:エラー:-lComputeCppが見つかりません
collect2:エラー:ldが1つの終了ステータスを返しました
ターゲット//tensorflow/contrib/android:libtensorflow.soのビルドに失敗しました
情報:経過時間:617.736秒、クリティカルパス:54.66秒

うーん.... GPU(Mali-T720)を有効にして、腕のアーチにテンソルフローAPIを構築したいのですが。
誰かがここにいくつかの経験や提案を残すことができれば感謝します。 Thx alooooot。

来週のArmTechCon、 @ laMia482で私の講演に来てください! http://schedule.armtechcon.com/session/running-tensorflow-machine-learning-on-arm-embedded-hardware/850230

SPIR-VをサポートするMaliドライバーが必要になりますが、これはおそらくまだ簡単には入手できません。 また、Arm CPUサポートとSPIR-Vサポートを備えたAndroid用のComputeCppランタイムが必要になりますが、これも(まだ)利用できません。 ですから、あなたはほんの少しの忍耐力でなければなりません。

私たち(Vertex.AI)は、OpenCLでのKerasの実行をサポートするディープラーニングスタックであるPlaidMLをオープンソース化しました。 TensorFlowのサポートが予定されており、歓迎されます。 そして、はい、Macのサポートは進行中です(Windowsも)。 http://vertex.ai/blog/announcing-plaidml @ggaabe

@choongng試してみたかったのですが、失敗しました。
pip search plaidmlは戻ります

plaidml (0.1.0rc3)        - PlaidML machine learning accelerator

しかし、 pip install plaidmlまたはpip install plaidml==0.1.0rc3
戻り値

Could not find a version that satisfies the requirement plaidml (from versions: )
No matching distribution found for plaidml

@ hy9beこの問題は、テンソルフローでのOpenCLのサポートに関するものであるため、ここではなくplaidmlリポジトリで問題を作成する方が適切だと思います。 さらに、そこにあるインストール手順を見ると、pipinstallコマンドが正しくない可能性があります。

あなたの注意とあなたのセッションスピーチのために@andrewrichardsに感謝します。

しかし、今のところ私(大学院生)にとって、AndroidデバイスでTensorflowを使用してアプリを構築し、GPU(Mali-T720)をアクティブ化するには、SPIP-Vサポートを備えたMaliドライバーとArmCPUを備えたAndroid用のComputeCppランタイムを取得するために必要なものサポートとSPIR-Vサポート。

CodePlayホームページにComputeCpp(Ubuntu16.04 x64 with bin / doc / include / lib /)をダウンロードしたので、昨日実行します。
bazel build -c opt --config=sycl //tensorflow/contrib/android:libtensorflow_cc.so --cxxopt="-std=c++11" --cxxopt="-DTENSORFLOW_DISABLE_META" --verbose_failures --crosstool_top=//external:android/crosstool --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --cpu=armeabi-v7a
エラーはlibComputeCpp.so incompatibleと言ったので、Arm CPUサポートとSPIR-Vサポートを備えたAndroid用のComputeCppが必要だと思いますが、Android ComputeCppを構築するためのソースコードが見つかりませんでした。githubにはサンプルしかありません。

また、ComputeCpp for Androidは現在利用できないとのことですが、Androidデバイスをサポートする計画はありますか、またはサポートされている場合はどうすれば入手できますか。

AMDのGPUおよびLinuxユーザー向けに、AMDは最近ここでテンソルフローのHIPポートをリリースしました。 あなたは興味があるかもしれません。

しかし、私はそれをテストしていません。

私はそれをテストすることができます-しばらくお待ちください。 ただし、CIは失敗しているようです。

確かにそれは失敗しています。 まだ初期の段階だと思います。

私はそれをテストし、MNISTの例ですぐにセグメンテーション違反を起こしました。
私がここで何を間違っているのかわからない。

$ python ./convolutional.py 
I tensorflow/stream_executor/dso_loader.cc:130] Couldn't open CUDA library libhipblas.so. LD_LIBRARY_PATH: :/home/masa/project/rendering/RadeonProRender-Baikal/Bin/Release/x64:/usr/local/lib64:/opt/CodeXL_2.5-25:/usr/lib/x86_64-linux-gnu/:/opt/CodeXL_2.5-25/RuntimeLibs/QT/
I tensorflow/stream_executor/cuda/cuda_blas.cc:2305] Unable to load HIPBLAS DSO.
I tensorflow/stream_executor/dso_loader.cc:130] Couldn't open CUDA library libhipfft.so. LD_LIBRARY_PATH: :/home/masa/project/rendering/RadeonProRender-Baikal/Bin/Release/x64:/usr/local/lib64:/opt/CodeXL_2.5-25:/usr/lib/x86_64-linux-gnu/:/opt/CodeXL_2.5-25/RuntimeLibs/QT/
I tensorflow/stream_executor/cuda/cuda_fft.cc:344] Unable to load cuFFT DSO.
I tensorflow/stream_executor/dso_loader.cc:139] successfully opened CUDA library libhip_hcc.so locally
I tensorflow/stream_executor/dso_loader.cc:130] Couldn't open CUDA library libhiprng.so. LD_LIBRARY_PATH: :/home/masa/project/rendering/RadeonProRender-Baikal/Bin/Release/x64:/usr/local/lib64:/opt/CodeXL_2.5-25:/usr/lib/x86_64-linux-gnu/:/opt/CodeXL_2.5-25/RuntimeLibs/QT/
I tensorflow/stream_executor/cuda/cuda_rng.cc:338] Unable to load cuRAND DSO.
I tensorflow/stream_executor/dso_loader.cc:139] successfully opened CUDA library libMIOpen.so locally
Extracting data/train-images-idx3-ubyte.gz
Extracting data/train-labels-idx1-ubyte.gz
Extracting data/t10k-images-idx3-ubyte.gz
Extracting data/t10k-labels-idx1-ubyte.gz
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/stream_executor/cuda/cuda_driver.cc:633] creating context when one is currently active; existing: 0x7f94fa357e90
I tensorflow/core/common_runtime/gpu/gpu_device.cc:892] Found device 0 with properties: 
name: Fiji [Radeon R9 FURY / NANO Series]
major: 2 minor: 0 memoryClockRate (GHz) 1
pciBusID 1����
Total memory: 4.00GiB
Free memory: 3.75GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:913] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:972] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Fiji [Radeon R9 FURY / NANO Series], pci bus id: 1����)
Initialized!
I tensorflow/core/kernels/conv_ops.cc:604] running auto-tune for Convolve
Invoking clang-ocl on "/tmp/miopen-MIOpenUtilKernels.cl-c377-1df5-8b6a-884c/MIOpenUtilKernels.cl"
/opt/rocm/bin/clang-ocl -DNUM_CH_PER_WG=1 -DNUM_IM_BLKS_X=1 -DNUM_IM_BLKS=4 -DLOCAL_MEM_SIZE=432 -DSTRIDE_GT_1=0 -DTILE_SZ_X=32 -DTILE_SZ_Y=8 -DUSE_IM_OFF_GUARD=1 -mcpu=gfx803 -Wno-everything MIOpenUtilKernels.cl -o /tmp/miopen-MIOpenUtilKernels.cl-c377-1df5-8b6a-884c/MIOpenUtilKernels.cl.o
writing gemm kernel to "/tmp/miopen-tinygemm.cl-836e-c4d4-abd3-b292/tinygemm.cl"
Invoking clang-ocl on "/tmp/miopen-tinygemm.cl-836e-c4d4-abd3-b292/tinygemm.cl"
/opt/rocm/bin/clang-ocl -mcpu=gfx803 -Wno-everything tinygemm.cl -o /tmp/miopen-tinygemm.cl-836e-c4d4-abd3-b292/tinygemm.cl.o
GCN assember path: /opt/rocm/opencl/bin/x86_64/clang
Arugment: --version 
Invoking clang-ocl on "/tmp/miopen-MIOpenConvDirUniC.cl-f5fc-85f4-7079-a024/MIOpenConvDirUniC.cl"
/opt/rocm/bin/clang-ocl -DMLO_HW_WAVE_SZ=64 -DMLO_DIR_FORWARD=1 -DMLO_FILTER_SIZE0=5 -DMLO_FILTER_SIZE1=5 -DMLO_FILTER_PAD0=2 -DMLO_FILTER_PAD1=2 -DMLO_N_OUTPUTS=32 -DMLO_N_INPUTS=1 -DMLO_BATCH_SZ=64 -DMLO_OUT_WIDTH=28 -DMLO_OUT_HEIGHT=28 -DMLO_OUT_BATCH_STRIDE=25088 -DMLO_OUT_CHANNEL_STRIDE=784 -DMLO_OUT_STRIDE=28 -DMLO_IN_WIDTH=28 -DMLO_IN_HEIGHT=28 -DMLO_IN_BATCH_STRIDE=784 -DMLO_IN_CHANNEL_STRIDE=784 -DMLO_IN_STRIDE=28 -DMLO_IN_TILE0=28 -DMLO_IN_TILE1=8 -DMLO_OUT_TILE0=28 -DMLO_OUT_TILE1=8 -DMLO_GRP_TILE0=16 -DMLO_GRP_TILE1=8 -DMLO_ACTIVE_ALUS=112 -DMLO_N_ALUTILES_PERSTACK=2 -DMLO_OUT_PIX_TILE0=2 -DMLO_OUT_PIX_TILE1=2 -DMLO_N_STACKS=1 -DMLO_N_OUT_TILES=8 -DMLO_N_OUT_TILES_PERSTACK=16 -DMLO_N_IN_TILES_PERSTACK=1 -DMLO_N_READ_PROCS=128 -DMLO_CONV_BIAS=0 -DMLO_ALU_VTILE0=14 -DMLO_ALU_VTILE1=4 -mcpu=gfx803 -Wno-everything MIOpenConvDirUniC.cl -o /tmp/miopen-MIOpenConvDirUniC.cl-f5fc-85f4-7079-a024/MIOpenConvDirUniC.cl.o
Invoking clang-ocl on "/tmp/miopen-MIOpenConvFFT.cl-2fbf-2ba2-0088-ebfc/MIOpenConvFFT.cl"
/opt/rocm/bin/clang-ocl -DCFF_TRANSP_WT_MOD16=1 -DCFF_CGEMM_CHOICE_0=1 -DCFF_IMG_SZ_28_28 -DCFF_IMG_H=28 -DCFF_IMG_W=28 -DCFF_BATCH=64 -DCFF_NFILTER=32 -DCFF_CHANNELS=1 -DCFF_HALFW=1148928 -mcpu=gfx803 -Wno-everything MIOpenConvFFT.cl -o /tmp/miopen-MIOpenConvFFT.cl-2fbf-2ba2-0088-ebfc/MIOpenConvFFT.cl.o
Segmentation fault (core dumped)

@ masahi -rocm1.6.4ベースがインストールされていることを確認してください。

@bensanderありがとう、アップグレードします。

@bensander AMDスタックから他に必要なものはありますか? 私が今持っているのは、オープンソースの「amdgpu」ドライバーを使用するAMD独自のopenclライブラリーだけです。

@ masahi -rocmとrocm-libs(つまり、「apt-get install rocm rocm-libs」)をインストールする場合は、これで十分です。 レポのrocm_docsには、期待される結果を含む完全な説明があります。

@bensander rocm 1.6.4を正しく実行しているかどうか(1.6.3ではない)を確認するにはどうすればよいですか?

@masahiは推測です:ここではなく、AMDやRoCMプロジェクトなど、問題に関連する場所で質問する必要があります...

@keryellそうですね、私は話題から外れています。 ここで止まります。
とにかく、システムでhiptensorflowを動作させることができませんでした。 後でUbuntuのクリーンインストールを試してみます。

@ masahi-あちらで問題を開いてください。セットアップを行います。

こんにちは。 @ bensanderやAMDの他の人々のおかげで、hiptensorflowを機能させることができました。 クイックスタートガイドですべての例を実行できます。

ありがとう

ROCmを使用してAMDハードウェアでTensorFlowを試してみたい人のために、AMD FuryNanoを使用してFast.aiノートブックを実行する方法を説明するブログを書きました。
http://briansp2020.github.io/2017/11/05/fast_ai_ROCm/

👍これを待つことはできません!

ROCm 1.7が進行中であり、適切なTensorflowサポートのように聞こえます。

https://www.phoronix.com/scan.php?page=news_item&px=AMD-ROCm-1.7-リリース済み

AMD GPUへのTensorflowポート:
https://github.com/ROCmSoftwarePlatform/hiptensorflow/blob/hip/README.ROCm.md

それは私にとって素晴らしい働きをします。 私のハードウェア設定:
GPU:AMD Radeon RX 480
CPU:Intel Xeon 2603 v3
MB:スーパーマイクロx10srl-f

重要なのはマザーボードであり、CPUはPCIev3をサポートする必要があります

そのパフォーマンスはNvidia980Tiに似ています

「サポートされている」AMDドライバーを「サポートされている」Ubuntu16.04LTSインストールで動作させることさえできません。 計画的陳腐化?

znmeb、AMD GPUは何ですか? デュアルGPUを使用している場合は、BIOSからサポートされていないGPUを無効にします。

スレッド全体を読み取ることができませんでした... MacOS(sierra +)のOpenCLでのテンソルフローの現在のステータスは何ですか? 具体的には、Intell Iris GPUを使用しており、ソースTf + OpenCLサポートからビルドできるかどうかを期待していました。
また、バージョン1.2では、tfcorrainderは正常に動作しているようです。

@ varun19299FWIWOpenCL用のIntelSDKがあります-私はそれを私の古いSandyBridgeラップトップに持っていますが、あなたのマシンで動作すると確信しています。 https://software.intel.com/en-us/intel-opencl

これは現在、ubuntu以外のLinuxシステムで使用可能な状態ですか? ロードマップページはここにリンクしているだけです。

@pfcUbuntu以外のLinuxで現在使用できるものは何ですか? 一般的にOpenCLを使用するTensorFlow? または、AMD GPUでOpenCLを使用するTensorFlow? OpenCLを使用してTensorFlowを実行する唯一の理由であるため、後者を想定します。 NVidia GPUの場合は、NVidiaドライバー/ライブラリを使用します。CPUの場合のみ、OpenCLから得られるものはありません。

数週間前に、独自のComputeCpp SYCLライブラリとAMD「Bonaire」(シー諸島アーキテクチャ)GPUを使用して、これをArchLinuxで動作させました。 テストする必要のある新しいComputeCppリリースがありますが、それは機能すると思います。

この作業を行うために必要なAMDGPUPro独自のライブラリは、Ubuntu16.04.3では実行されないことがわかりました。 16.04.2からのアップグレードにより、新しいLinuxカーネルとX Serverが導入されましたが、AMDはまだそれで動作するものを出荷していません。 詳細については、 http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-Driver-Compatibility-Advisory-with-Ubuntu-16.04.2-and-16.04.3.aspxを参照してください。 UbuntuでAMDOpenCLを動作させることができませんでした。

コンパイラを使用してCUDAコードをOpenCLコードに変換する実験的なAMDバージョンのTensorFlowがありますが、私もそれをテストしていません。 サポートされているドライバーがない場合、それは役に立ちません。

https://github.com/ROCmSoftwarePlatform/hiptensorflow/tree/hip/rocm_docsは、AMDハードウェアでテンソルフローを実行するために公式にサポートされている方法です。

@bensanderROCmランタイムはUbuntu16.04.3で動作しますか? 私はそれを機能させることができませんでした。

PS:AMDGPU-ProのセットアップがUbuntu 16.04.3で機能するかどうか、いつ機能するかについての洞察はありますか? 別のプロジェクトでそれが必要です。

うーん、私はどこでもUbuntuを楽しんでいません(そしてそうしません)が、カーネル4.14.xと最新のNvidiaベータドライバーを実行しているCentOS 7とリポジトリとGTX1080TIを持っているので、テストするのを手伝うことができますそれが助けになるなら、今日のある時点でそこにいますか?

-
サム・マクラウド

2017年12月7日の07:28に、M。Edward(Ed) [email protected]は次のように書いています。

@bensanderROCmランタイムはUbuntu16.04.3で動作しますか? 私はそれを機能させることができませんでした。


コメントしたのでこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。

@sammcj完全に優れたCUDAライブラリがあるのに、OpenCLでNVidia GPUを実行するのはなぜですか?

あなたのためにそれをテストするのを助けるためだけに!

手作業でテストする必要がなくても心配はいりません。私が提供すると思っただけです。 私はそのマシンをcudaTBHで試したことがなく、現時点ではDockerを介してOpenCLを使用できないMacOSでのみ試しました。

-
サム・マクラウド

2017年12月7日の08:16に、M。Edward(Ed) [email protected]は次のように書いています。

@sammcj完全に優れたCUDAライブラリがあるのに、OpenCLでNVidia GPUを実行するのはなぜですか?


あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。

@znmeb ComputeCpp SYCLを試してみましたが、ubuntuインストーラーしか提供されておらず(私もarchにいます)、aurインストールスクリプトが壊れています。 それがうまくいくと聞いてうれしいです。 必死になったら試してみるかもしれません。
@bensander ADMサポートを取得するために必要なものとまったく同じように見えますが、このコードがTFにバックポートされておらず、コードがTF 1.4を対象としていることを考えると、そのコードが2か月以上前に最後に更新されたという事実が心配です。 0
現時点では、少なくとも私たちの「致命的な」プログラマーにとって、テンソルフローは基本的にあなたをNvidiaに結び付けているようです。 ドキュメントの欠如/更新されたロードマップは役に立ちません。 なんらかの形で手伝ってもかまいませんが、これまでのところうまくいくことはほとんどありませんでした。

@pfc ComputeCppSYCLをArchで動作させました。実行したときにWebサイトにバイナリtarballがありました。

SYCL1.2.1のリリースに関するこのニュース
https://www.roboticstomorrow.com/news/2017/12/06/the-khronos-group-releases-finalized-sycl-121-/11107/
それは言う:
_新しい仕様には、3つの個別の実装から得られた豊富な経験と、元のCUDAアクセラレータバックエンドとともにSYCLをサポートするTensorFlowなどの機械学習フレームワークの開発者からのフィードバックが組み込まれています。_

これは、SYCLが構築されているOpenCL1.2をサポートするAMDGPUでTensorFlowを「簡単に」実行できるようになったことを意味しますか?

AMDハードウェア用の一部の低レベルソフトウェア/ドライバー/ライブラリは、ハードウェア、TensorFlow、OpenCL標準、SYCLではなく、壊れたもののほとんどが存在するという意味で「簡単」です。 ;-) AMD GPUドライバーとOpenCLライブラリーが機能している場合は、AMDGPUにTensorFlowがあります。

AMD Bonaire(シー諸島アーキテクチャ)の私の作業設定:

amdgpuカーネルモジュールがロードされ、 radeonカーネルモジュールがブラックリストに登録されたArch Linux
Archユーザーリポジトリパッケージopencl-amd
ComputeCppライブラリ
@lukeiwanskiのフォークを使用してワークステーションのソースから構築されたTensorFlow:

https://github.com/tensorflow/tensorflow/issues/22#issuecomment-334154564

「AMDGPUドライバーとOpenCLライブラリーが機能している場合は、AMDGPUにTensorFlowが搭載されている」とおっしゃっていたことに少し驚いています。 TensorFlowの「公式」バージョンがOpenCLで実行されていないことを理解していました(CUDAのみ)。 混乱したようです。
AMD Redeon HD 6970を搭載したiMacで少なくともいくつかのKerasコードを実行できるPlaidMLプロジェクトを見つけてとてもうれしく思いました。(https://groups.google.com/forum/#!topic/plaidml-dev/ksFMgxjgKrM )AFAIKあなたもそのフレームワークを試しました。
Tensorflowがすでに実行されている場合(CPUのみ)、UbuntuVirtualBoxでTensorFlowを実行してみます。

@PALYGAP VirtualBoxがOpenCLをMacホストからLinuxゲストにエクスポートするとは思わない。Ubuntu16.04.3は現在機能していません。 私はMacを持っていないので、物事をテストする方法がありません。

誰かがOpenCLを介してAMDでTensorFlowの動作を正常に試し、成功しましたか?

@mohnkhan @lukeiwanskiフォークが機能しています(Arch Linux) -https: //github.com/tensorflow/tensorflow/issues/22#issuecomment-349877056を参照してください。 ブログ投稿を公開する前に、AMDGPU-Proの作業をさらに待っています。https://github.com/corngood/archlinux-amdgpu/pull/54を参照してください。

@znmeb入力ありがとうございます

@mohnkhanところで、AMDは完全にオープンソースの代替パスを構築しています-コンパイラツールチェーンを使用してCUDAコードをOpenCLコードに変換します。 私のような古いカードの状況はわかりませんが。

あなたが記事を書くつもりなら、私は説明することも害はないと思います(全体像をつかむのに3時間かかりました):

  • TFには実際にはSYCL1.2バックエンドがあります。 *実際の* openclはありません。
  • 次に、標準の2つの実装があります(trisyclはかっこいいように見えますが、atmが制限されています)
  • 結局、ComputeCppは ' SPIR / SPIR-Vをフックします(PTXに加えて、しかしこれは本当に別の話です

そして、これが最終的にあなたをあなたの血まみれの憧れのOpenCL 1.2(w / cl_khr_spir ext)にまっすぐに導くものです

代わりに、HIPはさらに別のバックエンドであり、SYCLの反対側に位置し、ROCmのみをターゲットにします(または、nvidia gpuを使用している場合はcudaでも、これもまた別の話です)

AMDは、完全にオープンソースの代替パスを構築しています。コンパイラツールチェーンを使用して、CUDAコードをOpenCLコードに変換します。

いいえ。 あなたはHIPについて話している、そして..それは実際にはそれであり、あなたが最終的にあなたのコードに変換するものである。 これはOpenCLではありません
私が言っていたように、HIPはROCmで実行されます...
(サポートされているカードで)OpenCLを実行するROCmです、関係がROCmからのみ転送され、「サブレイヤー内」ではないことに注意してください。

あなたがおそらく考えているのはコリアンダーかもしれません。

私のような古いカードの状況はわかりませんが。

ここに要約します:あなたが今しているように本格的なAMDGPU-PRO、amdgpu-pro-openclのみのドライバー...または誰かが最終的にクローバーを使用可能にするのを10年の終わりまで待ち続けます。

また、fglrx ...しかし、それがpre-gcnカードに推奨するのが難しい場合は、ベールをかぶせる方が良いと思います。

@mirh

  1. 私はGCN以前のカードには関心がありません。 私は海の島であり、古いものを取得する予定はありません。 繰り返しになりますが、私は別のAMDGPUを購入する予定もありません。 ;-)
  2. ROCmが私のワークステーションで実行されるかどうかはわかりません。「はい」または「いいえ」の答えを出すことができるオープンソースハードウェアテスターはありません。 そのための問題を開きましたが、応答がありません。
  3. SPIR-Vはコンパイラーのターゲットです-私はそれを見て、コンパイラー・ライターを雇う予算がなく、手を挙げました。

これでSYCLが残ります...または、他の2つの手を投げて、TensorFlow、Theano(フリーズしている)、CNTK、またはPlaidMLバックエンドを持つKerasですべてを実行します。 純粋に工学的な経済学の観点から、Keras / PlaidMLは、私が何らかの形でTensorBoardを入手した場合、大きな勝者です。

@mirhすべてのリンクを含む良い要約をありがとう。 私はあなたがあなたの3時間を無駄にしていないと思います... :-)

ROCmが私のワークステーションで実行されるかどうかはわかりません。「はい」または「いいえ」の答えを出すことができるオープンソースハードウェアテスターはありません。 そのための問題を開きましたが、応答がありません。

何度か言ったように、うまくいきません。
GCN以前の第3世代GPUには、ROCmが実行する、またはまったく機能するためのハードウェアがないだけです。

SPIR(-V)..あなたが何について話しているのかわかりません。 それを気にするのはあなたの仕事ではありません。 Computecppは、SYCLの「コマンド」から作成し、それがすべて(opencl)ドライバービジネスです。

あなたは私が暫定的にamdgpu-pro-opencl-onlyと呼んでいるものを持っています、そして私はその時何が問題なのかわかりません。
編集:ルークのコードが着陸するためのある種のETAを持っていることもクールでしょう

@znmebとみんな

私は(L)Ubuntu17.10を持っています。 カーネル4.14.xおよびAMDGPUPro 17.40ドライバーのOpenCLライブラリパーツが実行され、AMD A12-9800E APUで問題なくclinfoやBoinc( Engima @ Home、Milkyway @ Homeなど)などのOpenCLアプリケーションを実行できます。

また、テンソルフロー(現在はバージョン1.4.1)のCPUバージョンを正常にコンパイルして使用することもできます。 しかし、OpenCLバージョンのテンソルフローを正常にコンパイルできません。 私はcomputecpp0.5(登録せずにダウンロードできる現在のもの)をvanilla tensorflow1.4.1および@lukeiwanskiのフォークからの "dev / amd_gpu"ブランチと一緒に使用します。

では、OpenCLバージョンのtensorflowを正常にコンパイルした人が、computecppライブラリのバージョンと、使用しているtensorflowgitのブランチに関する情報を提供してくれるでしょうか。

ありがとう

@AlphasCodes私はUbuntuで何も実行していません-私の作業はすべてArchで行われます。 マシンはUbuntu16.04.3でデュアルブートされていますが、AMD独自のライブラリはまだ機能していません。 私の知る限り、17.10ではサポートされていませんが、OpenCLピースが17.10で動作している場合は、3番目のブートを追加する可能性があります。十分なディスク容量があります。 ;-)

どのようなエラーが発生していますか? ビルドエラーの場合は、Bazelに互換性がない可能性があります。 Bazelは、TensorFlowと同じように常に前進しており、場合によっては一方が他方よりも進んでいます。

「サポートされていません」とはどういう意味ですか?

これ
ubuntuに関しては、16.04.3のみがサポートされていると言われています(少なくとも公式には、アーチでさえスクリプトの魔法の後でそれを機能させることができることを考えると)
編集:「完全な」AMDGPU-PROドライバーにはカーネル4.9が必要ですが、これが問題である可能性があります

誰かが気にかけている場合は、AMDGPU-Pro Driver 17.40のArchへの移植が進行中であり、GitHub( https://github.com/corngood/archlinux-amdgpu/pull/54 )で非常にアクティブになっています。

@mirhが指摘したように、TensorFlowはOpenCLではなくSYCLを使用するため、この問題を本当に解決する必要があります。 たぶん、別の「AMDカードのTensorFlow」を開く必要がありますか?

いいえ、それは完全に合法です。
テンソルフローを最終的にopenclデバイスで実行することが必要です。それが目的です。 合法で終わり。
実際にSYCLを使用していると言ったのは、私が作った技術的な落とし穴にすぎませんでした。魔法のようにランダムなテクノロジーの頭字語がすべて私を怒らせていたからです。
編集:私はまた、彼らのひどい仕事のためにすべてのコードプレイの人に感謝したいと思います

amd用に特別に作成されたものが必要な場合は、 hiptensorflowを確認することをお勧めします。 ROCm-しかし。 そして、どうぞ、この議論を残しましょう。

OK、週末までビルドをやり直してコンパイルエラーを出すのに十分な時間があるかどうかわかりません。 しかし、既存のドキュメントを新しいgithubリポジトリに追加しました。

詳細については、 https://github.com/AlphasCodes/DeepLearningを参照してください(ハードウェア/ソフトウェアのセットアップ+ AMDOpenCLのセットアップ+ Tensorflowのセットアップ)。

@mirhは、「魔法のようにランダムなテクノロジーの頭字語[...] [あなた]を怒らせる」を明確にします。

Khronos Groupの領域では、OpenCLは低レベルの非単一ソースAPIであり、SYCLは高レベルの単一ソースC ++ドメイン固有組み込み言語(DSeL)です。 SYCLはOpenCLの上に構築されることが期待されているため、SYCLを使用するときの推移性により、多くの場合OpenCLを使用します。

TensorFlowはシングルソースCUDAでシングルソースC ++アプローチを使用するEigenを使用するため、後でOpenCLに移植されたときに、SYCLが選択されました。これは、シングルソースC ++を使用するKhronosGroupの標準的な方法であるためです。

しかし、CUDAについて考えると、それはさらに微妙です。

ほとんどの人が、実際には「CUDAランタイムAPI」という名前のCUDAの高レベルのシングルソースバージョンを使用しています。 これはどういうわけかSYCLに似ています。
しかし、実際には、OpenCLに似た「CUDAドライバーAPI」と呼ばれ、たとえば「CUDAランタイムAPI」実装自体によって使用される、あまり知られていない低レベルの非シングルソースバージョンのCUDAがあります。

一種のFAQなので、https://en.wikipedia.org/wiki/SYCLとhttps://en.wikipedia.org/wiki/CUDAを少し明確にしました

TensorFlowで使用しているSYCL実装であるComputeCppは、Ubuntu17.10をまだサポートしていません。 現在のLTSであるUbuntu16.04に固執する必要があります。 手順と前提条件はこちらhttps://developer.codeplay.com/computecppce/latest/getting-started-with-tensflow

余談ですが、TensorFlowのOpenCLサポートは、AMDデバイスのサポートだけを意味するものではありません。 SYCL統合により、他のOpenCLデバイスも有効になります。 TensorFlowで行っている作業の一環として、ARMおよびIntel GPUのサポートは、これらの企業の最新のドライバーが利用可能になったときに利用できるようになります。 また、R-Carプラットフォームでもルネサスアクセラレータプロセッサのサポートを有効にするよう取り組んでいます。

@rodburnsありがとう! Arch UserRepositoryのopencl-amdライブラリを使用してArchLinux(4.14.4カーネル)でこれを動作させています。 カードはボネール(GCN 2.0)です。 そのページでテストを実行して、正常に動作していることを確認します。

GCN第2世代(別名1.1)がある場合、2.0は存在しません。
(衒学者になるために身をかがめる必要があります)

成功!

@lukeiwanskiフォークの最新の「dev / amd_gpu」ブランチコミットにより、TensorflowOpenCLコンパイルの問題が修正されました。 SysCL1.2.1関連のコミットだったと思います。

Tensorflow OpenCLバージョンを正常にコンパイルし、使用できます。 詳細については、 Tensorflowセットアップドキュメントを参照してください。

また、将来、さまざまなTensorflowセットアップ(CPU最適化されていない、CPU最適化された、OpenCL)でのセットアップのベンチマークを見つけることができるベンチマークページを追加しました。

AMDGPUProドライバーバージョン17.50も動作しています。 関連するAMDOpenCLセットアップドキュメントを更新しました。

すべての貢献者に感謝します。

いくつかのベンチマークを実行しましたが、 matmul_bench.py​​ベンチマークを除いて、iGPUは使用可能な4つのCPUスレッドよりも遅いようです。

OpenCL Tensorflow実行の初期化も、CPUのみのOpenCLTensorflow実行よりもはるかに低速です。 CPUの場合は5秒、OpenCLの場合は1〜2分程度です。

誰かがそのような結果を確認できますか?

OK、もう少しトラブルシューティングを行いました。

  • TensorflowMNISTの例を使用しました。Tensorflowセットアップの検証ドキュメントを参照してください
  • 「sudocat / sys / kernel / debug / dri / 0 / amdgpu_pm_info」を使用してiGPUクロック/負荷を確認/監視し、「top」を使用してCPU負荷を確認しました
  • ステップ0までの初期化フェーズには約6分かかり、iGPUの負荷は約0%、iGPUクロックは300 MHz(使用可能な最小クロック)、PythonプロセスのCPU使用率は約200%(= 2スレッド)でした。
  • ステップ0以降、iGPUの負荷は約90%で、iGPUクロックは常に654 MHz〜720 MHz〜800 MHz〜900 MHz(使用可能な最大クロック)に切り替わり、PythonプロセスのCPU使用率は約100%(= 1 CPU)でした。糸)

私はまだArchでコンパイルするものを取得しようとしています。

昨日使ったもの
14時間後(はい、私のジャガイモは非常に遅いです)、試してみたい場合は、このバイナリを取得しました。

私は何が起こっているのかを理解しようとしましたが、残念ながら私はできませんでした。 以下のことを知っている人が私をスピードアップするのを手伝ってくれるとありがたいです!

上記の議論のほとんどは、AMDチップ上でOpenCLアクセラレーションを使用してTensorflowを実行することに関するものでした。 私はこれを言うのは正しいですか? openclをサポートする統合グラフィックカード(intel HD 5000)を使用してGPUアクセラレーションテンソルフローを取得したい場合、どのようなアプローチをとるべきですか?

前もって感謝します!

@znmebこんにちはエド、返信ありがとうございます。 OpenCLをダウンロードしてシステムに実行しました。 しかし、私の質問は、OpenCLライブラリを実際に使用するためにテンソルフローをコンパイルするにはどうすればよいですか?

@AlphaCodes結果を公開していただきありがとうございます。 初期化時間に関しては、OpenCLが機能する方法は、コードが実行前にコンパイルされることです。したがって、起動時間はコンパイルプロセスです。

@brainwave Intelデバイスの場合、実行中のデバイスに関する制限を取り除く方法を説明する@mirhのスレッドがここにあります。 これらのデバイスタイプが制限されている理由でIntelドライバーに問題が発生していますが、サポートを改善するIntelデバイスで更新されたドライバーがまもなく利用可能になることを期待しています。 それまでの間、変更を加えてTensorFlowを再コンパイルし、独自のIntelハードウェアをテストできます。 コードベースのデバイス制限を削除することを検討しています。

@AlphasCodesみんな、おそらく素朴な質問をお詫びしますが、なぜこれがAMD GPUのみをビルドするのですか? OpenCLは標準であるはずではありませんか? OpenCL2.0ドライバーがインストールされているIntelCarbon X1では動作しないことを正しく理解していますか?

2回リンクされた問題を読むと、amdGPUについては何もないことがわかります。
Intelは現在除外されていますが、ユーザーを強制したいということとは関係がなく、一時的な回避策があります。実際にある場合は、そこで話し合ってください。

jupyterノートブックでamd_gpuブランチを使用すると、スレッドが残っているようです。 計算が終了した後でも、Pythonは1つのCPUを100%使用します。 カーネルを再起動すると、漂遊スレッドが終了します。 他の誰かがこれを経験しますか?

@brainwave @unoexperto
申し訳ありませんが、AMD OpenCLハードウェアしかないため、IntelOpenCLをサポートできません。

@desperadoduck
私はまだjupyterを使用していません。 プレーンなbashシェルと仮想Python3環境を使用しています( Python 3 + Tensorflowのセットアップを参照してください)。 しかし、私は問題を再現することはできません。 計算が完了した後、PythonプロセスによるCPU使用率はありません。

@rodburns
情報ありがとうございました。 初期コンパイル時間を短縮することは可能ですか? たとえば、50%だけではなく、使用可能なすべてのCPUスレッドを使用します。

@brainwave @rodburns
LinuxでのIntelGPU(Gen9)の場合、PlaidMLで一般的なビジョンネットを使用してベンチマークを行うと、IntelのオープンソースBeignet実装のDNNパフォーマンスがクローズドソース実装よりも大幅に向上します。 Beignetはインストールも簡単です。これは素晴らしいことです。

ubuntu17.10でインテルグラフィックスhd615(第7世代CPU)をサポートしていますか?

linux64用のopencldirver SRB5.0は、ubuntu17.10で正常に実行されています。

そしてそれは長い間更新されていません:
https://bitbucket.org/mehdi_goli/opencl/branch/IntelGPU

神の愛のために、あなたは上記の2つ(2つ!)の投稿だけを読むことができませんか?
ここでIntelgpu(またはamd cpu)サポートの欠如について話し合いますhttps://github.com/codeplaysoftware/computecpp-sdk/issues/78

@znmebさまざまなコンピューティングリソース(cpu、gpu、DSP、その他のコプロセッサーなど)を最大限に活用することが目標です。
実際、それはハードウェアベンダーのサポートに依存しています: dirverとOS。
私が知っているように、vedioドライバーの制限により、ビデオに対してIntelGPUとnvidaGPUの両方を同時に有効にできない場合があります。 (それらを切り替えることができる場合があります)。
ただし、openclはそれらを同時に使用できます。 それらは両方ともその中の「デバイス」です。

@choongng興味深いことに、Beignetを有効にするためにいくつかの作業を行いましたが、このプロジェクトの活動は少し静かになっているようです。

@znmebはい、GPUは小さな問題ではおそらくそれほどパフォーマンスが良くないでしょうが、進歩していることをうれしく思います。

@unoexperto ComputeCpp with TensorFlowは、IntelGPUを含むSPIROpenCL中間命令をサポートするすべてのハードウェアで使用できますが、ここのスレッドのように、現在のドライバーが現在機能しているとは思わなかったため、意図的に実行を禁止しました。 一部のユーザーはさまざまなIntelドライバーで動作しているように見えるため、この制限を削除できます。 また、OpenCLドライバーを備えたARMおよびRenesasプロセッサーでこれを有効にするために取り組んでいます。

@ sxpc722それならうまくいくはずです。 ちなみに、新しいマシンはWindows 10であり、絶対に必要になるまでLinuxでデュアルブートする予定はありません。 私はベンダーのドライバーとライブラリのバグを追いかけるのにうんざりしています(AMD、あなたを見て)。 実際、同じAMDの理由で、ワークステーションにWindowsパーティションを配置する場合があります。 ;-)

14日間活動がなく、この問題には担当者がいます。それに応じてラベルやステータスを更新してください。

私のテストによると、Tensorflow AMDOpenCLのパフォーマンスは非常に遅いです。 そこで、他のディープラーニングフレームワークを使用していくつかの基本的なテストを行いました。 私のセットアップとベンチマークは、ここのGitHubページにあります。

短編小説。 他のディープラーニングフレームワークは、現在Tensorflow AMDOpenCLよりも約10倍高速です。

@AlphasCodes @znmeb TFチームはスレッドをTFのみに保つことを好むことを私は知っています。私たちは、PlaidMLプロジェクトでPlaidML固有の会話をホストできることを嬉しく思います。 そうは言っても、最終的にはTensorFlow自体と非OpenCLプラットフォーム(現在プロトタイプ形式で存在するAppleのMetal for iOSなど)をサポートすることを望んでいます。

https://github.com/plaidml/plaidml

@choongngそれに応じてメッセージを編集した情報をありがとう。

@znmeb AMD A12-9800EiGPUはGCNv3である必要があります。

ベンチマーク/テストを行う主な唯一の理由は、「AMDにとどまるか、ディープラーニングの冒険のためにNvidiaに切り替える」という質問に対する答えを見つけることです。

そして答えはです。 私はAMDのオープンソースアプローチが本当に好きですが、2つの要因のためにNvidiaに切り替える可能性があります。 まず、ディープラーニングソフトウェアスタック(Tensorflowなど)は、Nvidiaにとってはるかに成熟しています。 次に、グラフィックカードが私の非常に特殊なニーズに対応します(Dan A4 SFXケースに収まり、非常に静かで、何時間も全負荷でほとんどノイズがない必要があります)は、AMD側では非常に限られているか、存在しません。

Intel GPUはサポートされていますか? 私のIrisProは、長年のトレーニングを少しスピードアップできると思います。

ここで、Intel gpu(またはamd cpu)サポートの欠如について説明しますcodeplaysoftware / computecpp-sdk#78

https://github.com/codeplaysoftware/computecpp-sdk/issues/82

この問題の状態を把握しようとしているだけです。 私はこのレポを言うのは正しいですか:

https://github.com/lukeiwanski/tensorflow

... ComputeCppで構築されていますが、一般的なAMD GPUサポートを使用してTensorflowを構築するための現在の最良のオプションはありますか? もしそうなら、このビルドがCPUよりも高速化するというベンチマークの証拠はありますか?

「一般的なAMDGPUサポート」の意味によって異なります。 あなたが本当に古いdGPUまたはAPUを意味するのなら、私にはわかりません。 ただし、新しい(第2世代GCN以降)場合は、ROCmで実行されているhipTensorFlow(v1.0.1)が非常にうまく機能していました。

@ briansp2020ああそうですAMDのROCmに関する作業を見たことがあります。 残念ながら、彼らはLinuxしかサポートしておらず、他のOSのサポートもロードマップに載っていないようです。 Windowsをサポートするものを期待しています。

@mjmax Windowsで利用可能なGPUアクセラレーションテンソルフローパッケージはありますか? GPUで高速化されたディープラーニングが必要な場合は、Linuxが唯一の選択肢だと思いました。 TensorFlowがOpenCLに移植された場合、Windowsへの移植が容易になりますか? CUDAがサポートされているときにGPUアクセラレーションを使用するWindowsでTensorFlowを使用できない理由がわかりません。

これは今では話題から外れていると思いますが、GPUで高速化されたWindows用のTensorFlowやPyTorchを知っている人がいたら、それについても知りたいです...

@ briansp2020私の知る限り、TensorflowはすでにWindowsでNvidiaGPUアクセラレーションをサポートしています。

CL tensofrflowはすでにLinuxで混乱しているので、すぐには何も期待しないでください。
そこにあるものを加速したいのなら、plaidMLしかありません。
(そして、私たちはすでに500のコメントになっています。本当に、本当に必要な場合にのみ投稿してみましょう)

@mirh OpenCLCaffeはWindowsで動作します。 確かに、機能の点ではTensorFlowではありませんが、どこにでも展開する必要のあるソフトウェアにとってはかなり堅実です。

openCLポートをAMDがサポートするHIPポートに置き換えるのはどうですか?

https://github.com/ROCmSoftwarePlatform/hiptensorflow

はは! @LifeIsStrange Lifeは実はとても奇妙です... AMDのHiPマーケティングチームで働いていますか? :-)
この問題の主題である「OpenCLサポート」をご覧ください。

これは、Khronos標準https://en.wikipedia.org/wiki/OpenCLに関するものであることを意味します(OpenCL Khronosワーキンググループの他のSYCL標準は、「概要」セクションの最後に表示されます)。

もちろん、この問題以外の世界もありますが、それは...です! :-)

このすでに長すぎる議論にいくつかのランダムな投稿を投稿することによって、宇宙のエントロピーを軽率に増加させないようにしてください... :-)
ちなみに、このコメントはあなただけでなく、ここにある他のポスターにも当てはまります。
これは、技術的な問題を解決するためのGitHubの問題です。ツールAまたはBが好きか嫌いかについてのFaceBookページではなく、OpenCL標準をサポートするデバイスでTensorFlowを実行することです。:-)
しかし、私たちが見ることができるこの問題に関連するいくつかのgitcommitを自由に送ってください...

OpenCLをサポートするTensorFlowのフォークがありますhttps://github.com/hughperkins/tf-coriander

そしてもちろん、 @ benoitsteinerの作品https://github.com/benoitsteiner/tensorflow-opencl

私見、主流のTFがまだ彼らの仕事を統合しなかったことはばかげています。

ここでは、OpenCLとして実行することに焦点を当てていますか、それとも実際に高速に実行することに焦点を当てていますか? 聖戦ではなく、いくつかのGPUで高速に実行することに焦点を当てたいと思います。 LifeIsStrangeの焦点は、AMD GPUで動作させることにあり、HIPは理にかなっています。 他の人にとっては、Intel GPUまたはAndroidで動作させることに焦点が当てられており、OpenCLの方がはるかに理にかなっています。 GPU言語はめちゃくちゃなので、実用的であり続けてください、

ここでコメントのいくつかを読んだ場合、パフォーマンスはOpenCLポートの問題です。 しかし、残念ながら、私は周りに多くのベンチマークを見ることができません。 これよりも多くのベンチマークがありますか? https://github.com/AlphasCodes/DeepLearning/blob/master/Tensorflow_Benchmarks.md

私が理解しているように、CUDAをOpenCLと比較すると、異なるハードウェアを使用する必要があるため、ベンチマークは困難です。 伝えられるところでは、nVidiaはOpenCLの実装を意図的に作成/許可したため、同じハードウェアでベンチマークを行うと、常にCUDAの見栄えが良くなります。

2018年2月12日14:26:11GMT + 00:00、 VincentSCnotifications @ github.comは次のように書いています。

ここでの焦点は、OpenCLとして実行するために、または
実際に高速に実行しますか? 聖戦はしたくないのですが
複数のGPUで高速に実行することに重点を置いています。 LifeIsStrange's
焦点はAMDGPUで動作させることにあり、HIPはうまくいきます
検出。 他の人にとっては、IntelGPUまたは
Android、そしてOpenCLの方がはるかに理にかなっています。 GPU言語は
混乱しているので、実用的にしてください、

ここでコメントのいくつかを読んだ場合、パフォーマンスは
OpenCLポート。 しかし、残念ながら、私は周りに多くのベンチマークを見ることができません。
これよりも多くのベンチマークがありますか?
https://github.com/AlphasCodes/DeepLearning/blob/master/Tensorflow_Benchmarks.md

-
あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示してください。
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -364936498

-
K-9メールでAndroidデバイスから送信されました。 簡潔に申し訳ありません。

2つの数値だけを比較しても情報はありません-NVidiaのOpenCLが他のGPUで4倍の速度で実行されている場合、半分の速度で実行されているかどうかは誰が気にしますか?

これらのベンチマークが必要だと思います。

  1. NV GPU上のCUDA(参照ベンチマーク)
  2. https://github.com/hughperkins/tf-AMD、Nvidia、IntelGPUのコリアンダー
  3. https://github.com/benoitsteiner/tensorflow-AMD、Nvidia、IntelGPUのopencl
  4. https://github.com/lukeiwanski/tensorflow on AMD、Nvidia、Intel GPU

参照ベンチマークは簡単に見つけることができます。 ここにはいくつかのハイエンドGPUがあるので、数字を入れる場所だけが必要です(building-docsへのリンク付き)。

OpenCLサポートそれは真になる必要があります。

cudaは制限が多すぎて、nvidiaはそれを共有したくありません。
cudaはNvgpusでのみ機能します。
これはTensorFlowの行き止まりです。
別の「TensorFlow」が出てきたが、TensorFlowよりも多くのサポートがある場合。
TensorFlowがまだWindowsのcudaのみをサポートしている場合。
選択するのはTensorFlowだけではないことを理解する必要があります。

OpenCLがHIPより優れているのはなぜですか? OpenCLは牽引力を得ることができず、現時点でOpenCLをサポートすることは、おそらく逆効果であり、コミュニティ/業界全体のリソースの無駄遣いであると思います。 TensorFlowがHIPを直接サポートし、コンパイラ/ツール/ライブラリに移植性の面倒を見てもらいたいと思います。

ソフトウェアが1つの言語/プログラミングモデルをサポートする方が良いのではないでしょうか。

ソフトウェアは、すべてのユースケースをカバーするためにサポートする必要があるものをサポートする必要があります。
ハードウェアをサポートしている場合、HIPは(少なくとも紙面では)すべての鐘と笛です。 しかし、この世界には「新しいamdおよびnvidiaカード」だけではありません。

さて、神の愛のために、それに関する問題についてここで文句を言ってください。
そして、この問題の継続に興味を持っている他のすべての人のためにここに。

SPIR-Vは、クロスハードウェアの代替手段としてCUDAを直接置き換えると思いました。
http://alphanew.net/index.php?section=alphanew&site=overview&lang=eng&newsID=111

GoogleがまだCUDAに依存しているのはなぜですか?

これらは役に立ちますか?

OpenCL乱数生成(Thomas Wang's):

uint wang_hash(uint seed)
{
               seed = (seed ^ 61) ^ (seed >> 16);
               seed *= 9;
               seed = seed ^ (seed >> 4);
               seed *= 0x27d4eb2d;
               seed = seed ^ (seed >> 15);
               return seed;
}

void wang_rnd_0(__global unsigned int * intSeeds,int id)                
{
               uint maxint=0;
               maxint--;
               uint rndint=wang_hash(id);
               intSeeds[id]=rndint;
}

float wang_rnd(__global unsigned int * intSeeds,int id)                
{
               uint maxint=0;
               maxint--;
               uint rndint=wang_hash(intSeeds[id]);
               intSeeds[id]=rndint;
               return ((float)rndint)/(float)maxint;
}


// initialize each thread's own random number seed
__kernel void rnd_0(__global unsigned int * intSeeds)
{
               int id=get_global_id(0);
               wang_rnd_0(intSeeds,id);     
}

// get a new random value by each thread
__kernel void rnd_1(__global unsigned int * intSeeds)
{
               int id=get_global_id(0);
               float randomFloat=wang_rnd(intSeeds,id);
}

OpenCL SHA3hashing(これを書いた人を忘れた)

https://gist.github.com/tugrul512bit/c8170f74846e36e350607664f12c525c

この問題は外部からの貢献を招いているため、担当者を削除してください。 それ以外の場合は、 contributions welcomeラベルを削除します。 ありがとう。

この問題は外部からの貢献を招いているため、担当者を削除してください。 それ以外の場合は、 contributions welcomeラベルを削除します。 ありがとう。

OpenCLをサポートすることはGoogleの利益になります。
特定の(会社/ブランド/ベンダー)の特定のハードウェアをソフトウェアの依存関係として持つことにより、ハードウェアにもっとお金を払うように強制し、市場競争はコストを下げます。
Googleは当初からコモディティハードウェアに取り組んできましたが、これはGoogleの成功(市場での優位性)にとって重要であり、データセンターの運用コストが低く、Gmail(ストレージスペース)やGoogleフォト(ストレージ)などの革新的で寛大な基本的に無料のサービスを可能にしました。スペースと自動タグ付け)。

@wesamcoいいえ、必ずしもGoogleの利益になるとは限りません。 彼らは独自のハードウェアを作ります-「TensorBoard」、IIRCと呼ばれるもの。 OpenCLとCUDA / CUDnnをバイパスして、ボードに生のTensorFlowコードを実行させることができます。

生のTensorFlowコード。

そのようなことはありません-それは未加工の食品のようではありません。 TPUには、さまざまなタイプの呼び出しを処理する独自のDNNライブラリが必要です。

上記の議論をもう一度1つのリストにまとめる時が来たようです。

  • CodePlayはSYCLバックエンドで動作しています
  • ヒューパーキンスはtf-コリアンダーに取り組んでいます
  • AMDはHIPバックエンドに取り組んでいます
  • PlaidMLは、現時点ではCPUのみをサポートしています。
  • IntelGPUのサポート状況は不明です。

だからあなたが好きなプロジェクトを選んで、それらをサポートし始めてください。 たぶん、各グループは彼らのプロジェクトのステータスアップデートを与えることができますか?

OpenCLが完全な言語から、SPIRV(カーネル)で表される言語定義/ハードウェア仕様に変換されたことを理解してください。これは、OpenCLドライバーなどのプラットフォーム上で実行でき、後でVulkanドライバーでも実行できます。 (プラットフォーム)。 したがって、SYCLをサポートすることで、OpenCLもサポートします。

完璧な要約ですが、plaidmlはGPUでも実行されます。
現時点では、それらはテンソルフローではなく、kerasのバックエンドです。 だから、そこはちょっとOTです。

こんにちは、みんな、
@VincentSCは、さまざまな取り組みをまとめてくれてありがとう!

だからあなたが好きなプロジェクトを選んで、それらをサポートし始めてください。 たぶん、各グループは彼らのプロジェクトのステータスアップデートを与えることができますか?

SYCLアプローチは、現在、さまざまなプラットフォーム/デバイスをサポートしています。 私が言及できるものは次のとおりです。

  • AMD GPU(FirePro W8100、R9 Nano、およびR9 380シリーズ)手順はこちらまたはこちらから入手できます
  • ARM Mali(HiKey 960)手順はこちらから入手できます
  • Intel NEOOpenCLドライバーを搭載したIntelGPU(SkyLakeシリーズ)

AMDに関して言えば、現時点では、上記のGPUは、レガシーOpenCLが有効になっているAMDGPU-Proドライバー17.40-xxxを使用しています。
他のシリーズが機能しない明確な理由はわかりません(SPIR / SPIR-Vがサポートされていると仮定して)

私たちが焦点を当てている主なプラットフォームはLinuxですが、将来的にはWindowsを有効にするための継続的な取り組みがあります。 近い将来、OSXをサポートする予定はありません。 私は悲しい顔を知っています。

私たちの焦点は、CNNのパフォーマンスの向上にあります。 現在のパフォーマンスは最適化されておらず、最終的にはどこにもありません。 とはいえ、さまざまなターゲットのほとんどのモデルで、すでにCPUパフォーマンスを上回っています。

開発サイクルをスピードアップし、TensorFlowの全体的なコンパイル時間を短縮する(および移植性を向上させる)ために、Eigen、BLAS、およびDNNライブラリに取り組んでいます。
これらのライブラリは、パフォーマンスの問題を解決するだけでなく、TensorFlowなどの複雑なプロジェクトと簡単に統合できるポータブルライブラリのエコシステムを構築することを目的としています。

以下に、現在共有できるパフォーマンスのグラフを示します。 それらは私のフォークhttps://github.com/lukeiwanski/tensorflow/tree/dev/amd_gpu(271093b21cc5ca38e8699e154b5cada96bd7ac0d )から取得されます。
使用されるベンチマークはhttps://github.com/tensorflow/benchmarksです

cpuvssycl
グラフはInteli7-4790Kの結果に正規化されています。

Eigenへの変更をゆっくりとアップストリームします。それが発生したら、TensorFlowを使用します。

お役に立てば幸いです。
ルーク

GPU / OpenCLをサポートするモバイルデバイスでのディープラーニング推論については、Adreno、Mali、およびPowerVRGPU用に最適化されたMACEをチェックアウトできます。 ここにいくつかのベンチマーク結果があります。

@keryell @benoitsteiner 、どのバージョンのtensorflowとtrisyclが統合に必要です。 最新のtrisyclリリースでテンソルフロー(1.9)を構築するのに問題があります。

残念ながら、最新のTensorFlowは、現在のtriSYCLが処理できるよりも高度な機能を使用しているため、現在完全に準拠している唯一のSYCL実装であるComputeCppを使用する必要があります...

TensorflowはGoogleBrainによってサポートされており、GoogleはnVidiaと提携しています。TensorflowがOpenCLをサポートすることは期待できないと思います。
大きなOpenCLコミュニティの努力が必要です

OpenCLサポートをお願いします!

OpenCLは私たちにも適しています。

@マカオン私も。 NVIDIAグラフィックカードを搭載したマシンを購入する余裕はありません。

上記の2つの投稿に加えて、AMDのVega GPU(Raven Ridge APU内のものを含む)が2倍のFLOPSでFP16を実行できるようになったため、TFが(OpenCLを介して)それらをサポートできれば、より少ない予算。 また、これらの人々の多くは学生であり、DNNの旅の出発点としてTFを使用してもらうと、おそらくTFに固執し、他の人にTFについて話すことさえあります。 これは、このプロジェクトを拡大するのに役立つ素晴らしい方法です。

このスレッドは開発者にとってほとんど意味がないと思います(ノイズが多すぎます-そしてもう少し追加します;-)が、多くのコメントが要点を欠いていると思います:
AMDカードでTensorflowを実行する場合、OpenCLは探しているものではありません。https://github.com/ROCmSoftwarePlatform/にアクセスして、ROCmスタックをインストールしてください。 AFAIK AMDの現在の戦略は、Tensorflow / pytorchのOpenCLではなくROCmに基づいています。

Generic OpenCLは、メンテナンスが多すぎた/ AMDにとって価値のある十分なパフォーマンス上の利点を提供しませんでした。 したがって、このチケットは、OpenCLのみを使用するARMプラットフォーム(たとえば)を実行している場合にのみ興味深いものです

(免責事項:Tensorflow開発の内部は実際には存在しないため、上記の情報は完全に間違っていて誤解を招く可能性があります。よく知っている場合は、遠慮なく私を攻撃してください。)

考えてみれば、新しいGPUオフロードを備えたllvmはどうでしょうか? これにより、テンソルフローとcuda固有のコードの間に大きなレベルの抽象化がもたらされます。

上記の10件の投稿を読んで、すでに試してみることができるlukeiwanski / codeplaysoftwareによるフォークがあることに気付いた皆さんはどうですか?
(また、xiaomiは、かつて、ある種の深刻なオープンソースの取り組みに貢献したことを嫌っています)

@FelixSchwarz ROCmがOpenCLを使用していることをご存知のとおり、これはLinux上のAMDのユーザースペースOpenCLドライバーです(そのため、Windowsをサポートしていません)。したがって、Linux上のAMDのドライバーエコシステムがどのように機能するかを知らない場合は、カーネル側のドライバーAMDGPUとAMDKFD(現在AMDGPUに統合されています)には、ユーザースペースドライバーのRadeonSI(OpenGLの場合)RadV / AMDVLK(Vulkanの場合)とROCm(OpenCLの場合)があります。

このバグと他のフォークのダイナミクスから判断すると、Googleはこれにまったく関心がなく、公式リポジトリにこれを実装することは決してありません。 私は、この問題を解決する(またはロックする)ことに投票し、すべての人に誤った希望を与えないようにします。

問題は、少なくともここにいるすべての人々をここに向けるためにここにあるべきです
必然的に再び開きます。

2018年9月15日土曜日、09:45 Anton [email protected]は次のように書いています:

このバグと他のフォークのダイナミクスから判断すると、Googleはゼロです
これに関心があり、公式にこれを実装することは決してありません
リポジトリ。 私はこの問題を解決する(またはロックする)ことに投票します
誰にでも誤った希望を与えないでください。


このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-421535747
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AB1qNyDrfbiQ4h3kQyqObEfpK3O0FqRGks5ubKIBgaJpZM4Gex3i

Movidius PiHatをサポートするTensorRTがあります。 そして、そのMovidius Pi Hatは、Googleの45ドルの「AIYビジョンキット」です。 GoogleはTargetにリンクして購入します。

これはCUDAやNvidiaとは何の関係もありませんか? Intelチップを使用していると言います。 本質的に、チップはFPGAでしょうか? 誰かがそれについてもっと知っていますか?

私は大きなMovidiusユニットについてかなり知っています-それは推論のみであり、TensorFlowまたはCaffeのプリコンパイル済みモデルのいずれかを実行します。 IIRCはすべて16ビットモードです。

Movidiusチップ自体ははるかに強力ですが、SDKを入手するには資格のあるパートナーである必要があります。

更新はありますか? この問題は3年以上前のものです。

はい、最後の投稿を見るだけです。

@ filips123いいえ、更新はなく、予見可能な将来になることはありません-その可能性は、エイリアンの侵略や過去に戻る方法を見つけるよりも低くなります。

このIntelイニシアチブのPlaidMLはかなりうまく機能しており、チェックする価値があります。
https://github.com/plaidml/plaidml
これは、Macのopenclまたはmetalで実行されます。 それは私が探していたMacbookPro AMDgpusで動作します。
その間、PlaidMLでのPytorchサポートへの投票を手伝ってもらえますか? https://github.com/plaidml/plaidml/issues/63

PlaidMLは確かにすべて素晴らしくてダンディです(私は、たとえば、openclのnvidia GPUで、tfのcuda自体よりもパフォーマンスを向上させることができます)。
しかし、それはkerasのバックエンドですか? ご存知のように、テンソルフローに完全に置き換わるのは、これについて説明しているリポジトリですか?
(私が理解している限り、最新のtfバージョンはモデルを直接kerasにエクスポートできますか?だからそれがあります..)

とにかく、4回目は、 openclの最近のソリューションと、まだ活発に開発されているもの(そして、実際の1日でここにマージされる可能性のあるもの)が必要な場合は、コードプレイスタックがあります。
また:
https://developer.codeplay.com/computecppce/latest/tensorflow-overview
https://github.com/Rbiessy/tensorflow/tree/dev/amd_gpu

PlaidMLは確かにすべて素晴らしくてダンディです(私は、たとえば、openclのnvidia GPUで、tfのcuda自体よりもパフォーマンスを向上させることができます)。
しかし、それはkerasのバックエンドですか? ご存知のように、テンソルフローに完全に置き換わるのは、これについて説明しているリポジトリですか?
(私が理解している限り、最新のtfバージョンはモデルを直接kerasにエクスポートできますか?だからそれがあります..)

とにかく、4回目は、 openclの最近のソリューションと、まだ活発に開発されているもの(そして、実際の1日でここにマージされる可能性のあるもの)が必要な場合は、コードプレイスタックがあります。
また:
https://developer.codeplay.com/computecppce/latest/tensorflow-overview
https://github.com/Rbiessy/tensorflow/tree/dev/amd_gpu

申し訳ありませんが、テンソルフローのサポートがないことに気づいていませんでした。 私の想定する脳は、keras gpu support == tensorflowsupportだと思っていました。

plaidMLはとてもクールです。 ケラで動作します。
もちろん、plaidMLバックエンド(たとえばtf.image.ssim)で作業するには、いくつかのtfコードを純粋なkerasに転送する必要がありました。
しかし、結果-私のコードはNVIDIAおよびAMDカードで動作します。

また、plaidMLは研究者にとって天国です。 「タイル」言語で作成するすべての関数のグラデーションを自動的に生成し、GPUで80%のテンソルフロー速度で動作します。

では、なぜML研究者がまだPyTorchを使用しているのか理解できませんか? IntelのplaidMLでMLサイエンスを後押ししましょう。

@iperovなぜ実際に誰もPlaidMLを使用しないのか気になりますか?

  1. AMDのOpenCL実装では、TensorflowのCUDAバックエンドと比較して実行速度が非常に遅いため、使用する理由の少なくとも半分があります。 パフォーマンスが非常に悪いため、CPUでTensorflowを使用すると競争力がありますか、それともPlaidMLを使用してハードウェアを完全に上回りますか?

  2. 純粋数学の教授のような人だけが作成する特殊なタイルプログラミング言語を維持することに誰も興味がないので、PlaidMLのコード品質は低下し、真面目なプログラマーは過度に巧妙なコードを扱いたくないでしょう...

  3. これは#2とほぼ関係がありますが、IntelがVertex.AIを買収して以来、彼らはPlaidMLを気にしなくなりました。 GPUコンピューティングで高速化された機械学習のためのインテルのソリューションは、Tensorflow、PyTorch、またはその他のディープラーニングフレームワークをバックエンドとしてターゲットにするために、現在nGraphとして知られているディープラーニング専用の新しいコンパイラを導入しています。 彼らがnGraphを持っているとき、彼らが彼らの仲介者としてもうPlaidMLを開発し続ける理由はありません...

人々は、保守性やその他の機能などの他の理由でPyTorchを使用するため、要約すると、PlaidMLはIntelのツールであり、計画の最終部分でPyTorchが機能することを意図していない可能性があります。 nGraphの現在のIntelGPUバックエンドはOpenCL2.1に基づいており、Intelのみが準拠した実装を持っているため、Intelは純粋に機械学習の改善のためではなく、自分自身を監視するためだけに存在します。 IntelがさらにnGraphを開発しているとき、多くのディープラーニングフレームワークにはOpenCL、Metal、またはVulkanの個別のソースプログラミングモデルと互換性のないテンプレートカーネルがあるため、OpenCL2.1のみに基づいてGPUバックエンドをベースにし続けることはできません。実験目的でのみ。 Intelの最終的なGPUバックエンドは、おそらくSYCL 2.2またはOpenMPのようなまったく異なるものに基づいており、ベンダー固有のソリューションをもたらす可能性もあります...

AMDに関しては、誰が気にしますか? OpenCLは彼らとは無関係であり、彼らはついにHIPでの作業でいくつかの結果を示しています...

@iperovなぜ実際に誰もPlaidMLを使用しないのか気になりますか?

  1. AMDのOpenCL実装では、TensorflowのCUDAバックエンドと比較して実行速度が非常に遅いため、使用する理由の少なくとも半分があります。 パフォーマンスが非常に悪いため、CPUでTensorflowを使用すると競争力がありますか、それともPlaidMLを使用してハードウェアを完全に上回りますか?
  2. 純粋数学の教授のような人だけが作成する特殊なタイルプログラミング言語を維持することに誰も興味がないので、PlaidMLのコード品質は低下し、真面目なプログラマーは過度に巧妙なコードを扱いたくないでしょう...
  3. これは#2とほぼ関係がありますが、IntelがVertex.AIを買収して以来、彼らはPlaidMLを気にしなくなりました。 GPUコンピューティングで高速化された機械学習のためのインテルのソリューションは、Tensorflow、PyTorch、またはその他のディープラーニングフレームワークをバックエンドとしてターゲットにするために、現在nGraphとして知られているディープラーニング専用の新しいコンパイラを導入しています。 彼らがnGraphを持っているとき、彼らが彼らの仲介者としてもうPlaidMLを開発し続ける理由はありません...

人々は、保守性やその他の機能などの他の理由でPyTorchを使用するため、要約すると、PlaidMLはIntelのツールであり、計画の最終部分でPyTorchが機能することを意図していない可能性があります。 nGraphの現在のIntelGPUバックエンドはOpenCL2.1に基づいており、Intelのみが準拠した実装を持っているため、Intelは純粋に機械学習の改善のためではなく、自分自身を監視するためだけに存在します。 IntelがさらにnGraphを開発しているとき、多くのディープラーニングフレームワークにはOpenCL、Metal、またはVulkanの個別のソースプログラミングモデルと互換性のないテンプレートカーネルがあるため、OpenCL2.1のみに基づいてGPUバックエンドをベースにし続けることはできません。実験目的でのみ。 Intelの最終的なGPUバックエンドは、おそらくSYCL 2.2またはOpenMPのようなまったく異なるものに基づいており、ベンダー固有のソリューションをもたらす可能性もあります...

AMDに関しては、誰が気にしますか? OpenCLは彼らとは無関係であり、彼らはついにHIPでの作業でいくつかの結果を示しています...

携帯電話やラズベリーパイオドロイドなどのアームマシン内のすべてのGPUはどうですか?
彼らはopenclをサポートしていませんか?
Googleは、AndroidのGPUにテンソルフローを挿入することに注意する必要があります。
ニューラルネットワークトレーニングの最大のライブラリはNvidiagpuでのみ実行され、Nvidia gpuをますます高価にします(人々や企業はプロのニューラルネットワークトレーニングのためにのみ購入するため)、そうすればgoogleはより多くのお金を失うことになります。

@Degerzあなたはどの惑星から来ましたか?
tf-CPUとAMDGPUをどのように比較できますか?
tf-CPUよりも高速なplaidMLx30上のAMDGPU

  1. AMDのOpenCL実装では、TensorflowのCUDAバックエンドと比較して実行速度が非常に遅いため、使用する理由の少なくとも半分があります。

私のディープフェイクテストでは、OpenCLは20%しか遅くありませんが、一部のミニネットワークではOpenCLは20%速くなっています。

私のプロジェクトDeepFaceLabには、AMDのサポートを待っている多くのユーザーがいます。 ディープフェイクをAMDカードでトレーニングできるようになったとき、何人の人が喜んだか。
また、plaidMLは、AMD / IntelHDをすぐにサポートするkerasの唯一のバックエンドです。
keras用の新しいAMDバックエンドが登場した場合、もちろん私のプロジェクトはそれに切り替わります。
PyTorchには未来がありません。

plaidMLで何を維持しますか? Opsは自動微分可能であり、維持するものはありません。

純粋数学の教授のような人だけが作成するタイルプログラミング言語

機械学習は数学の教授によって発明されましたね。

@talregev ARMまたはBroadcomはどうですか? 前者はおそらくOpenCLの実装が標準以下であり、後者はOpenCLドライバーを公式に提供していません。 ハードウェアベンダー向けの有能なコンピューティングスタックを作成して維持することは、Googleの責任ではありません...

@iperov PlaidMLに埋め込みレイヤーを使用してニューラルネットをトレーニングするのは苦痛ですよね? PlaidMLには、DenseNetにあまり適していない、計算グラフが静的であり、PlaidMLがRNNでもうまく機能するという事実など、他にも多くの制限がありますか?

あなたのプロジェクトに関しては、それについて心配する必要はありません。 MIOpenがアップストリームになると、AMDはすぐにネイティブGPUバックエンドを提供するため、Tensorflowのようなより良いものに移ります。これは、競合他社のcuDNNライブラリと同様のディープニューラルネットワーク用のプリミティブのGPUアクセラレーションライブラリであり、どちらもPlaidMLをそのままにします。パフォーマンスの面でほこり。 とにかく誰がInteliGPUを気にしますか? インテルが将来のディスクリートグラフィックスハードウェアで高性能のディープラーニングを提供することに真剣に取り組んでいる場合、他のハードウェア(AMD / HIPおよびNvidia / CUDA)が以前に行ったのと同じように単一のソースオプションを提供します...

PyTorchには未来がありません。

羨ましい? PyTorchはPlaidMLよりも約10倍人気があり、DLの最新技術はPyTorchに簡単に実装でき、さまざまな貢献者が多数います。IntelがPlaidMLに1か月近く貢献していない間、Facebookによって積極的に開発されています。

plaidMLで何を維持しますか? Opsは自動微分可能であり、維持するものはありません。

だから私はあなたから、PlaidMLは将来的に新しい修正や新機能を受け取るべきではないと思いますか? コードを改善することに価値が見当たらない場合は、PlaidMLの明白な欠陥を認めるよう説得する意味はありません...

機械学習は数学の教授によって発明されましたね。

特に、読みやすさよりもエレガンスが明らかに優先されるTileの場合は、それらが構成するプログラミング言語をすべて採用する必要があるという意味ではありません。 なぜこれほど多くの潜在的な貢献者が貢献することを恐れているのも不思議ではありません...

イエス様、私はあなたたちがSTFUをして、代わりに仕事に戻ることを望みます。 炎上戦争のメールを受け取るのは耐えられないので、チケットの購読を解除する必要があります。 あまりにも悪いメンテナはスレッドをミュートしません。

@gunan @caisq @sanjoyそれについて何かしていただけませんか?

このページは役に立ちましたか?
0 / 5 - 0 評価