Tensorflow: دعم OpenCL

تم إنشاؤها على ٩ نوفمبر ٢٠١٥  ·  541تعليقات  ·  مصدر: tensorflow/tensorflow

أنا أفهم أن TensorFlow يدعم CUDA فقط. ما الذي يجب القيام به لإضافة دعم OpenCL؟

contributions welcome

التعليق الأكثر فائدة

من الغريب أن Google تخلت عن OpenCL المفتوح لـ CUDA.
im-just-saying

ال 541 كومينتر

من الغريب أن Google تخلت عن OpenCL المفتوح لـ CUDA.
im-just-saying

على الأقل ، يجب أن تدعم مكتبة Eigen OpenCL.

: +1:

: +1:

: +1:

ممتاز وكل ذلك.

سأكون مهتمًا بتوسيع Tensor Flow باستخدام OpenCL. كما أصدرنا بالفعل OpenCL caffe. https://github.com/amd/OpenCL-caffe. نأمل أن يتم دمجها بطريقة خفيفة؟ هل أي شخص مهتم بالعمل معًا على هذا؟

gujunli جميل أن نرى AMD هنا. @ cc naibaf7lunochod

سيكون رائعا.

: +1:

/ cclukeiwanski لـ Eigen / OpenCL / SYCL

gujunli بالتأكيد سيكون مهتمًا بالمساهمة. يرجى إعلامي عندما تخطط للبدء.

أهلا بكم،

هنا في Codeplay ، نبحث في موتر Eigen الذي يعمل على GPU باستخدام SYCL (طبقة C ++ حديثة أعلى OpenCL). مما جمعناه حتى الآن ، يرتبط تصميم موتر GPU ارتباطًا وثيقًا للغاية بـ CUDA وسيتطلب تغييرات في الواجهة لنموذج برمجة آخر وخاصة إصدار SYCL و OpenCL 1.2.

إذا كان أي شخص مهتمًا بالحفر بشكل أعمق / المساعدة ، فنحن بالتأكيد مهتمون بالمساهمة.

شكرا،
لوك

lukeiwanski شكرا لك على ردود الفعل. أعتقد أن benoitsteiner عمل في جزء امتداد موتر من eigen.

: +1: يمكنني المساعدة في ترميز بعض برامج OpenCL / SYCL إذا قام شخص ما بوضع خطة ، وقسم العمل إلى مهام وما إلى ذلك ، أوصي باستخدام Boost.Compute كغلاف لـ OpenCL (فهو يجعل تشغيل النواة ، والاختبار ، ووضع النماذج أسهل).

+1

: +1:

أهلا بكم،

فقط لإبقائك على اطلاع دائم ، ما زلنا نحقق في كيفية تغيير واجهة Eigen لتلائم نموذج البرمجة SYCL / OpenCL 1.2 بشكل أفضل.
بمجرد أن نتوصل إلى نهج معقول يستهدف نماذج البرمجة غير المتجانسة (ليس فقط OpenCL / SYCL) سنقوم بإنشاء اقتراح.

شكرا،
لوك

الثابتة والمتنقلة ابقني على تحديث. لقد قمت بتطوير opencl-caffe لـ AMD. أنا أنظر أيضا في
تدفق الموتر.

شكرا.
جونلو
في 8 كانون الأول (ديسمبر) 2015 الساعة 10:19 صباحًا ، كتب "Luke Iwanski" [email protected] :

أهلا بكم،

فقط لإطلاعك على آخر المستجدات ، ما زلنا نحقق في كيفية تغيير
واجهة Eigen لتلائم بشكل أفضل نموذج البرمجة SYCL / OpenCL 1.2.
بمجرد أن نتوصل إلى نهج معقول ، سنقوم بإنشاء اقتراح.

شكرا،
لوك

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -162967662
.

/ ccptilletgongzg هل هناك أي اهتمام من إنتل بهذا؟ آمل حقًا ألا نقوم بتفكيك OPENCL هنا كما هو الحال في Caffe حيث لدينا مفترق AMD ، و PRs غير مدمج من Intel ، و AMD PR آخر شبه غير رسمي ، ومستخدم علاقات عامة طويلة الأمد (بالإضافة إلى اثنين من جهود Opencl القديمة المهجورة). إذا كان شخص ما مهتمًا بالتاريخ ، فيمكنه إلقاء نظرة على https://github.com/BVLC/caffe/pull/2610 التعليقات.

bhack نحن لدينا مصلحة في هذا. شكرا على إعلامي. إذا كان هناك اقتراح لتطبيق OpenCL / SYCL الخاص بـ Eigen ، فسنرى ما يمكننا القيام به من جانب Intel.

: +1:

مبادرة مثيرة للاهتمام على https://github.com/ptillet/isaac أيضًا إذا كنا هنا نعتمد على امتداد Eigen tensor.

كما أود المساهمة. benoitsteiner هل يمكنك تنظيمه؟

تم تضمين هذا في خارطة الطريق ولكن تم تمييزه أيضًا كمساهمة لذلك يمكن أن يكون الاتجاه / التمهيد مفيدًا حقًا.

يمكنني المساهمة في تنظيمها. المسؤول عن دعم OpenCL في
تدفق الموتر الآن؟

شكرا جزيلا.
جونلي

في الثلاثاء ، 19 كانون الثاني (يناير) 2016 ، الساعة 7:50 صباحًا ، كتب bhack [email protected] :

تم تضمين هذا في خارطة الطريق ولكن تم تمييزه أيضًا كمساهمة لذلك أ
يمكن أن يكون direction / bootstrap مفيدًا حقًا.

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172894538
.


جونلي جو-- 谷 俊丽
مختبر العلوم المنسق
جامعة إلينوي في أوربانا شامبين


لقد افترضت للتو بينوا لأنه عين الميزة بنفسه ، لكن أعتقد أنك حصلت عليها جونلي! ربما تبدأ مع بريد إلكتروني أو موضوع منتدى الأطراف المهتمة؟

يعرف benoitsteiner المزيد عن الأطراف المهتمة التي ربما لم تظهر
يصل في هذا الموضوع (أو هذه المسألة). كنت أنتظر حتى ينسق ليصنع
بالتأكيد نتجنب تكرار العمل.

يوم الثلاثاء ، 19 كانون الثاني (يناير) 2016 ، الساعة 11:42 صباحًا ، من دان ماكلولين ، إخطارات github.com
كتب:

لقد افترضت للتو بينوا لأنه عين الميزة بنفسه ، لكنني أعتقد ذلك
لقد حصلت عليه جونلي! ربما تبدأ مع بريد إلكتروني أو موضوع المنتدى
الأطراف المهتمة؟

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172963537
.

انا مهتم. هل هناك أي خارطة طريق؟

في 19 كانون الثاني (يناير) 2016 ، الساعة 11:46 صباحًا ، كتب Martin Wicke [email protected] :

يعرف benoitsteiner المزيد عن الأطراف المهتمة التي ربما لم تظهر
يصل في هذا الموضوع (أو هذه المسألة). كنت أنتظر حتى ينسق ليصنع
بالتأكيد نتجنب تكرار العمل.

يوم الثلاثاء ، 19 كانون الثاني (يناير) 2016 ، الساعة 11:42 صباحًا ، من دان ماكلولين ، إخطارات github.com
كتب:

لقد افترضت للتو بينوا لأنه عين الميزة بنفسه ، لكنني أعتقد ذلك
لقد حصلت عليه جونلي! ربما تبدأ مع بريد إلكتروني أو موضوع المنتدى
الأطراف المهتمة؟

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172963537
.

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub.

هل توجد قائمة بمكتبات تبعية CUDA التي يعتمد عليها Tensorflow؟

سيساعد هذا في معرفة ما إذا كان بإمكاننا الحصول على بدائل OpenCL فورية.

تضمين التغريدة
هناك clFFT و clBLAS (بدلاً من ViennaCL). يعد منشئ الأرقام العشوائية أمرًا أكثر تعقيدًا (بدون curand) ، إما استخدام مولد وحدة المعالجة المركزية ونقله إلى GPU أو استخدام نواة أخرى موجودة لـ RNG.

سيكون أكبر مأزق هو التنفيذ الفعال للالتفاف (شيء مثل cuDNN).

توجد خبرة حول مثل هذه القضايا هنا:
https://github.com/BVLC/caffe/pull/2610
https://github.com/BVLC/caffe/pull/2195
https://github.com/amd/OpenCL-caffe

يستخدم Tensorflow امتداد Tensor upstreamed إلى Eigen. لذلك أعتقد أن هناك حاجة إلى دعم Opencl / Sycl لـ Eigen. انظر هذا الموضوع

شكرا @ naibaf7. نعم ، لا أعتقد أن هناك بديلًا قابلاً للتطبيق لـ cuDNN لـ OpenCL في الوقت الحالي.

تم إنشاء موقع http://opencl.org لدعم مشاريع النقل مفتوحة المصدر مثل هذه! نقوم حاليًا بتثبيت جميع الأدوات اللازمة على موقع الويب ولدينا مساحة للمستودعات على https://github.com/OpenCL/ - لاحقًا نضيف خوادم بناء لاختبار عدة أنواع من الأجهزة ويمكننا تقديم خبرتنا في كيفية كتابة التعليمات البرمجية التي تعمل بأقصى سرعة على العديد من الأجهزة.

نحن بصدد إطلاق مبادرة نقل لـ GEGL الأسبوع المقبل ، ولكن يسعدنا دعمك أيضًا.

bhack من هذا الموضوع وهنا يبدو أن lukeiwanski يبحث في الأمر. أعتقد أن لدينا عددًا كافيًا من الأشخاص المستعدين للعمل عليها ، نحتاج فقط إلى benoitsteiner أو lukeiwanski أو gujunli للتنسيق. كان بينوا هادئًا ، ربما يكون في عطلة.

أرغب في المساهمة في هذه المبادرة.

أهلا بكم،

سنقوم بتنسيق جهود نقل وحدة موتر Eigen إلى SYCL لـ OpenCL حيث لدينا بالفعل شيء يعمل في الغالب ، لكنه ليس جاهزًا للمراجعة بعد.

نحن نؤيد هذا النهج لأنه سيقدم غزوًا أقل لقاعدة الكود. يدعم SYCL النموذج المفرد C ++ النموذجي الذي يستخدمه eigen بالفعل.

تصميم خارطة الطريق قيد التقدم ، لذا لا ينبغي أن يمر وقت طويل جدًا الآن.

شكرا،
لوك

lukeiwanski هل تعمل أو على اتصال مع المنبع؟ هل تعتقد أنه سيتم قبول المنبع في Eigen؟

+1

أخبار سارةlukeiwanski ، أخبرنا بأي مساعدة تحتاجها.

أعتقد أنك تستخدم تطبيقك الخاص لـ SYCL - هل سيكون ذلك متاحًا للمطورين / الباحثين؟ على أي منصات؟

lukeiwanski SYCL يبدو وكأنه الطريقة الصحيحة للذهاب بالنظر إلى مقدار البرمجة الوصفية للقالب المتضمن مع Eigen. أنا مطور c ++ خبير ولدي خبرة OpenCL المكتسبة من تطوير شبكتي العصبية ومكتبة الجبر الخطي . أرغب في المساعدة في هذا الجهد والبدء في التطوير باستخدام SYCL.

bhack نحن على اتصال بـ benoitsteiner ، لكننا سنناقش اقتراحنا مع المشرفين على المنبع قبل أن نبذل الكثير من الجهد.

DanMcLaughlin ، @ ville-k نعمل على تطوير تطبيقنا لـ SYCL و ComputeCpp (https://www.codeplay.com/products/computecpp). لمزيد من المعلومات ، هل يمكنك الاتصال بي خارج القائمة عبر عنوان البريد الإلكتروني الموجود في ملف التعريف الخاص بي؟

lukeiwanski هل هناك أي تحديث / تقدير بخصوص الخطط؟

+1.
لديّ AMD GPU و Intel GPU في الكمبيوتر المحمول. أعتقد أن كلاهما لديه برامج تشغيل OpenCL ويبدو أن دعم AMD أفضل بكثير. سأحظى بأداء أعلى ، لأن لديّ جهازي OpenCL. آمل أن تجعله يتسع مع أجهزة OpenCL.

أهلا بكم،

شكرا على الاهتمام!
في هذه المرحلة ، نقوم بإعداد البنية التحتية للاختبار الخاصة بنا للتأكد من عدم وجود أي شيء نقوم به يتسبب في حدوث الانحدار.
نحن على اتصال مع benoitsteiner للتأكد من أننا متزامنون مع ما فعله حتى الآن.

ما زلنا نقوم بتجميع خارطة طريق لعملية التكامل - يجب أن يتم ذلك في غضون أسبوعين ، حيث يوجد بعض التفاصيل التجارية التي يجب توضيحها.

هدفنا هو إحضار OpenCL إلى TensorFlow عبر Eigen بنهاية هذا العام.

شكرا،

يستفد. أحب أن تساهم.

حسنًا ، يبدو في الواقع أنه جهد من Codeplay مع نوع من المزامنة مع Google الداخلية. ما هو دور مشتركي AMD و Intel هنا؟

/ cckeryell إذا كان لديك أي اهتمام بهذا من عالم SYCL / FPGA

أعتذر عن عدم المساهمة أكثر في هذه المناقشة مؤخرًا ، لقد كان لوحتي ممتلئة خلال الأسبوعين الماضيين.

سأقوم بتنسيق جهود OpenCL على جانب TensorFlow. تفكيرنا الحالي هو:

  • يعتمد TensorFlow على c ++ 11 واتخذ نهج "مصدر واحد" ، لذا يبدو SYCL مناسبًا تمامًا.
  • ليس لدينا الكثير من خبرة OpenCL في المنزل ، لذلك نحن نتعاون بشكل وثيق مع Codeplay لسد هذه الفجوة. على وجه الخصوص ، يقود Codeplay حاليًا الجهود لإضافة دعم لـ SYCL إلى مكتبة موتر Eigen.
  • يعتمد TensorFlow على مكتبة cuDNN لحساب التلافيفات على وحدات معالجة الرسومات NVidia. إذا كان شخص ما مهتمًا بالمساهمة بما يعادل OpenCL ، فسيسعدنا تقديم المساعدة.

من أجل المساعدة في تنظيم الجهود ، قمت بإنشاء قائمة بريدية: [email protected].

bhack متأكد من أن لدي بعض الاهتمام بـ C ++ الراقية على FPGA :-)
يبدو TensorFlow كحالة استخدام جيدة للتحقق من صحة triSYCL أيضًا.
بالمناسبة ، إذا كان بعض الأشخاص هنا يبحثون عن بعض التدريبات التدريبية حول هذا الموضوع ، فلدي بعض الوظائف. يبدو أن Codeplay يبحث عن بعض الأشخاص أيضًا ، إذا كنت أثق في موقع الويب الخاص بهم.

أنا مهتم حقًا بآراءkarlrupp و hughperkins . آمل أن يرغبوا في الانضمام إلى المناقشة حول مجموعة Google الجديدة.

benoitsteiner شكرا لك على التحديث. سيكون من الرائع أن يقوم جميع الشركاء المشاركين في KhronosGroup (Google و Nvidia و Amd و Intel و Codeplay و Xilinx وما إلى ذلك) بالترويج لـ cudnn مثل API بطريقة موحدة. نوع من جهود توحيد رؤية الكمبيوتر Openvx من Khronos ولكن للتعلم العميق.

bhack أي مجموعة Google جديدة؟

بخلاف ذلك ، فإن OpenCL و CUDA هما نهجان مختلفان للغاية في البرمجة. تعمل CUDA بالطريقة نفسها لأن شركة واحدة لديها سيطرة كاملة على كل شيء ، لذلك يمكنها تضمين نقاط ثنائية ومن يعرف ماذا في الملف التنفيذي النهائي. لا يمكن القيام بذلك مع OpenCL ، إلا إذا ذهب المرء إلى مسار SyCL (لدي مخاوف ...) ولدى بائع برنامج التحويل البرمجي SyCL سيطرة كاملة على جميع البنيات المستهدفة الممكنة (غير محتملة أو مستحيلة من الناحية العملية). بشكل عام ، رأيي هو أن المكتبة الجيدة التي تدعم OpenCL تحتاج إلى أكثر من مجرد عدد قليل من التعديلات هنا وهناك. ربما ليس ما أردت أن تسمعه ، لكنك طلبت رأيي :-)

karlrupp راجع https://github.com/tensorflow/tensorflow/issues/22#issuecomment -176406416 في نهاية مجموعة Google.
سألت رأيك لأنك تتمتع بتجربة رائعة مع ViennaCL الذي يتعامل مع مكتبة الجبر ذات الخلفيات المتعددة (CPU ، GPU ، MIC). يعتمد Tensorflow على مكتبة Eigein وامتداد Tensor الجديد الذي ساهمت به Google في المنبع (ولكن فقط مع الواجهة الخلفية CUDA). أعتقد أنهم لم يواجهوا الكثير من كل المأزق الذي واجهته بالفعل مع ViennaCL في هذه السنوات من التطوير.

bhack نحن حاليًا في الاجتماع وجهًا لوجه في سياتل هذا الأسبوع ولكن بالطبع لا أستطيع أن أقول ما إذا كنا نتحدث عن مكتبات DNN أم لا ... :-)

keryell حاول دفع القضية في سياتل ؛)

karlrupp أنت على حق ، OpenCL و CUDA هما نهجان مختلفان للغاية في البرمجة. الجانب أحادي المصدر الموجود على سبيل المثال في CUDA و OpenMP 4.5 قوي للغاية من منظور هندسة البرمجيات. هذا هو السبب في وجود معيار SYCL هذا لمبرمجي C ++ الحقيقيين. يمكن اعتبار SYCL على أنه CUDA على المنشطات بدون أي امتداد للغة ومع بعض جوانب OpenMP (المهام). من المتوقع أن يقوم مترجم جهاز SYCL النموذجي بإنشاء نواة SPIR-V.

لا تمثل مخاوفك بشأن قابلية النقل مشكلة مع معيار SPIR-V (نوع من المكافئ المحمول لـ nVidia PTX / AMDIL / ... في عالم Vulkan & OpenCL) وهو أمر إلزامي لقبوله في OpenCL 2.1 و Vulkan. لذا فإن الجميل هو أنه إذا كان لديك واجهة أمامية تولد SPIR-V ، فأنت لا تحتاج إلى معرفة خاصة بتفاصيل الأجهزة التي تعمل عليها. يوجد مترجم Khronos مفتوح المصدر ثنائي الاتجاه بين LLVM IR و SPIR-V ، لذلك فهو يفتح مناطق جديدة تمامًا.

@ keryell أوافق على أن SPIR-V خطوة للأمام. ومع ذلك ، فإنه لا يعالج جميع قضايا النفخ الشامل.

لا تحتاج إلى معرفة خاصة بتفاصيل الأجهزة التي تعمل عليها

هل هذه نسخة ولصق من تسويق OpenCL 1.0 ، والتي ادعت نفس الشيء تمامًا؟ ستحتاج دائمًا إلى النزول إلى تفاصيل الأجهزة الأساسية إذا كنت تهدف إلى تحقيق أقصى قدر من الأداء. هذا هو الحال بشكل خاص في سياق تقلصات التوتر السريع.

... كما أظهر @ scott-gray مع النيون

تضمين التغريدة

هل هذه نسخة ولصق من تسويق OpenCL 1.0 ، والتي ادعت نفس الشيء تمامًا؟

هاها. :-)

ستحتاج دائمًا إلى النزول إلى تفاصيل الأجهزة الأساسية إذا كنت تهدف إلى تحقيق أقصى أداء. هذا هو الحال بشكل خاص في سياق تقلصات التوتر السريع.

بالطبع ، ولكن قبل اللعب باستخدام التحسين من الدرجة الثانية ، من المفيد أن يكون الجزء الضخم من كود C ++ المُعدّل بالكامل يعمل بطريقة متسارعة.

من أجل التحسين ، إما أن تقوم بتجميع النواة الثنائية المحسّنة على غرار NervanaSys أو ، نظرًا لأن SYCL عبارة عن C ++ خالص ، يمكنك استخدام ASM ("...") فيه مع الكثير من #ifdef لاختبار البنية الهدف. :-) ومع ذلك ، فإن SPIR-V نفسها قابلة للتوسيع ولا أستطيع أن أرى لماذا لم نتمكن من وضع VHDL أو Verilog مضمنة فيه في مرحلة ما. :-)

ولكن بشكل أكثر تحديدًا ، يجب أن يساعد الإدخال الأخير لعمليات المجموعة الفرعية في تحقيق أداء جيد بطريقة محمولة وقد يساعد استخدام وظائف مخصصة بسيطة مضمنة.

يضيف C ++ ميزات البرمجة الوصفية المثيرة للاهتمام التي تسمح باستبدال معظم مولدات الأكواد المستخدمة مثل clBLAS أو الأطر الأخرى لإنشاء كود أكثر تكيفًا مع أجهزة X أو Y.

كما يمكن لـ N4355 في c ++ 17 الدخول في اللعبة قريبًا أو لاحقًا

karlrupp ، bhack نهج tensorflow هو الاعتماد على تجريد الأجهزة (وحدة التنسور) لمعظم العمليات التي تحتاجها شبكة عصبية نموذجية ، مع الاعتماد على المكتبات المتخصصة (مثل cudnn) للعمليات القليلة التي تكون حرجة الأداء الحكيم حقا. يتيح لنا تجريد الأجهزة تنفيذ معظم عمليات TensorFlow مرة واحدة وتشغيلها على مُسرع بأداء أكثر من جيد بما يكفي.

bhack نعم أحب المصفوفات متعددة الأبعاد. في مجال اهتمامنا أيضًا ، هناك SG14 في لجنة C ++ التي تحاول جعل جميع الأشخاص المهتمين بهذه القضايا يتقاربون في المعيار.
https://groups.google.com/a/isocpp.org/forum/#!forum/sg14
بالطبع SYCL في المناقشات. :-)

benoitsteiner بشكل أساسي على cudnn للتجميع والالتفاف. أعتقد أنه إذا كان كل بائع ينتج واجهة برمجة تطبيقات بأجهزته الخاصة لهذه العمليات مع التجميع الثنائي الخاص به ، فلن يكون أسلوبًا قابلاً للتطوير. هذا هو السبب في أنني أعتقد أن بعض استدعاءات واجهة برمجة التطبيقات الحاسمة للأداء سيكون من الأفضل توحيدها بطريقة ما.

keryell هناك موضوعات مثيرة للاهتمام حقًا لـ Matrix / Tensor في SG14 c ++ الجديد خاصةً في أجندة مكالمات vector / SIMD. ولكن يبدو أن أحداً لم يتحدث عن الالتواء والتجميع وغيرها من واجهات التعلم العميق المفيدة "المستقرة". يبدو لي أيضًا أنه في هذه المجموعات الفرعية المعيارية المحددة يوجد أشخاص من Nvidia و Intel و Amd و CodePlay وما إلى ذلك .. ولكن ليس من Google أيضًا إذا كان في مجموعات أخرى.

: +1:

bhack نعم ، لا يوجد اقتراح نمط التعلم الآلي في لجنة الدراسات 14 حتى الآن. لكن المشاركة مفتوحة حتى تتمكن من إرسال بعض المقترحات. :-) ولكن ربما تكون لجنة الدراسات 6 (الموضوعات العددية) أكثر صلة بالموضوع. لا أعتقد أن لديهم قائمة بريدية / منتدى خاص بهم حتى الآن.

gujunli هل يعمل OpenCL Caffe على نظام Android؟ آسف لسؤال هذا هنا ولكني لم أجد أي مكان آخر لأطلبه :) سيكون رائعًا مع مكتبة التعلم العميق التي تعمل على أجهزة Android _ ويمكن أن تستخدم وحدة معالجة الرسومات ولكن يبدو أنه لا يوجد في الوقت الحالي. (صححني إذا كنت مخطئا!)

تضمين التغريدة
يمكن إنشاء فرع OpenCL Caffe الرسمي (ولكن التجريبي) ليعمل على وحدات معالجة رسومات Android ، ولكن الأداء في الوقت الحالي بعيد عن المستوى الأمثل. راجع https://github.com/sh1r0/caffe-android-lib/issues/23 و https://github.com/BVLC/caffe/tree/opencl.

يمكن أن يكون البديل الحقيقي لـ cudnn هو امتداد كائنات OpenVx القياسية مع دعم مشغلي Tensor و NdConvolution و NdPooling و (ربما) بعض المشغلين الآخرين الذين يمكن اعتبارهم قابلين للتقييس.
يحتاج فريق cudnn أيضًا إلى اتخاذ بعض الخيارات بشأن واجهة برمجة التطبيقات الجديدة والمشغلين الذين سيقدمونهم في كل إصدار. بالطبع لا يمكن للمعيار أن يتحرك بسرعة مثل إصدارات cudnn ولكني أعتقد أن بعض العمليات والكائنات لديها ما يكفي من "سجل الاقتباسات" ليتم توحيدها.

hughperkins في الوقت الحالي ، لم أجرب أي مكتبة تعلم عميق ؛ أنا فقط أقوم ببعض الاستكشاف لمعرفة المكتبة التي يمكنني استخدامها. هل جربت cltorch و DeepCL على Android؟ لقد افترضت للتو أن cltorch يعمل على Android ، نظرًا لوجود تطبيق Torch مخصص خصيصًا لنظام Android. ولماذا لديك مثل هذا التطبيق إذا كان هناك بالفعل أحدهما يعمل على Android _ و_ يستخدم OpenCL ، أليس كذلك؟ لكن ربما كان علي أن أعرف أفضل.

hughperkins لسبب ما تخيلت أن torch-android كان تطبيق Torch رسميًا لنظام Android ، مما يعني أنه من غير المحتمل أن يعمل تطبيق Torch (على الأقل غير رسمي) بسلاسة على Android ، بما في ذلك cltorch. لا أعرف لماذا اعتقدت ذلك ، بالطبع ليس له أي معنى.

حسنًا ... سوميث نوع من إحداثيات تطوير الشعلة. يعمل في Facebook AI Research. لذا ، نظرًا لأن torch-android repo مملوك لـ Soumith ، أود أن أقول إنه قريب إلى حد ما من المستوى الرسمي. لكنها ربما ليست جزءًا من اللب لسبب ما. أعتقد أنه يمكنك طرح السؤال كمشكلة في ذلك الريبو ، أو في https://groups.google.com/forum/#!forum/torch7 في الواقع ، نظرًا لأن Soumith هو نوع من الشخص الرئيسي الذي يتعامل مع الطلبات في https: //groups.google.com/forum/#!forum/torch7 ، أعتقد أنك ربما تريد نشر سؤالك هناك.

مما يعني أنه من غير المرجح أن يعمل أي تطبيق آخر لـ Torch (على الأقل ليس رسميًا) بسلاسة على Android ، بما في ذلك cltorch

لاحظ أن cltorch ليس أداة تنفيذ للشعلة. إنه مكون إضافي ، توفر thta OpenCL. تحتاج كلاهما.

لاحظ أن cltorch ليس أداة تنفيذ للشعلة. إنه مكون إضافي ، توفر thta OpenCL. تحتاج كلاهما.

اه، شكرا على التوضيح.

@ naibaf7 هل يوجد أي شيء مشترك بين فرع OpenCL Caffe وتطبيق OpenCL Caffe بواسطة AMD إلى جانب الاسم؟ هل قارنت بين الاثنين أم تعرف ما إذا كان هناك أي اختلاف في الأداء؟ تكتب أن فرع OpenCL بعيد عن الأداء الأمثل. ماذا يعني ذلك وماذا سيكون ضروريًا لتحسينه؟ سيكون من الممتع تجربتها على Android.

نحن نخرج عن الموضوع

bhack نعم ، آسف لاختطاف هذا الموضوع. أنا فقط لا أعرف أين أطرح السؤال.

تضمين التغريدة
يرجى طرح مشكلة حول هذا الموضوع في فرع Caffe ، والإبلاغ عنها باستخدام Android و OpenCL. ثم يمكننا مناقشة هذا أكثر. شكرا.

keryell يبدو أن اجتماع f2f SG14 القادم في مارس ستستضيفه Google . هل سيكون هناك أي توتر داخلي هناك؟

/ ccjfbastien

ربما يمكن أن يسقط benoitsteiner لأنه محلي.
ولكن قبل هذا الحدث ، هناك C ++ F2F الكامل في نهاية الشهر في جاكسونفيل ، فلوريدا.
https://isocpp.org/files/papers/N4568.pdf
للأسف لن أتمكن من حضور أي منهم.

لا أعرف ما إذا كان CppCon 2015 talk C ++ متعدد الأبعاد للفيزياء الحاسوبية والرياضيات التطبيقية قد ولّد بعض المتابعة الورقية.

+1

bhack شكرًا لك على الإشارة إلى الحديث حول المصفوفات متعددة الأبعاد. إنه ممتع ويعالج المشكلات الحقيقية ولكنه يبدو مخصصًا للغاية بحيث لا يمكن التصديق عليه في C ++ كما هو. أنا شخصياً أستخدم Boost.MultiArray وأنا أكثر ثقة في نسخة مصقولة من Boost.MultiArray.

هناك أيضًا بعض الأوراق في WG21 . كما ترى ، لدى jfbastien في Google بعض النشاط في WG21 وساعد أيضًا في استضافة اجتماع SG14 f2f في Google في مارس.

bhackkeryell أعتقد أنه سيكون من المفيد أخذ هذه المناقشة إلى القائمة البريدية لـ SG14 لأن التفاصيل لا تتعلق بـ OpenCL / tensorflow.

نعم ربما لم يعد محصوراً هنا بكل التفاصيل. بخلاف دعم Eigen / sycl هل هناك خطة لمكالمات cudnn؟

+1 موضوع مثير جدا للاهتمام. أتمنى أن يأتي قريبا.

هذا الموضوع مثير جدا للاهتمام. كنت أحاول جعل الكافيين يعمل على نظام Android. تبدو النتائج مفاجئة: يبدو أن تشغيل الكافيين باستخدام وحدة معالجة الرسومات في مالي يكون أبطأ بمقدار 2-3 مرات من وحدة المعالجة المركزية ، ولكنه أكثر كفاءة في استخدام الطاقة بحوالي 4-5 أضعاف. تم إجراء الاختبار على Galaxy S6 (Mali T760 ، Peak Performance 200 GFlops).

نظرًا لأن GEMM هو جوهر الالتفاف في الكافيين ، فقد قررت تحديد أداءه على Android. يبدو أن ViennaCL ليست فعالة مثل بعض الحبات البسيطة. أنا الآن قادر على تشغيل وحدة معالجة الرسومات بأسرع ما يمكن لوحدة المعالجة المركزية (CPU) للمصفوفات الكبيرة (2 كيلو × 2 كيلو). لا يزال هذا غير بديهي ، لأننا عادة نتوقع أن تكون وحدات معالجة الرسومات أسرع بكثير.

يرى:
https://github.com/strin/mocha-profile

يمكن العثور على تطبيقات kernel هنا:

نواة OpenCL لـ GEMM: https://github.com/strin/gemm-android

أي أفكار؟

strin هل سبق لك اتباع هذا الموضوع https://community.arm.com/thread/4935؟

bhack شكرا للمشاركة. هذا الموضوع يبدو ممتع جدا. حاولت تحويل DVFS كما هو مقترح ، ولكن لم يتم رؤية أداء مهم لـ sgemm في ViennaCL.

+1

strin هل جربت آخر إصدار من sgemm في MALI SDK؟

Tensorflow متأخر! اه اه
https://gist.github.com/jarutis/ff28bca8cfb9ce0c8b1a

سيكون لهذا تأثير على الاستراتيجية: http://lists.llvm.org/pipermail/llvm-dev/2016-March/096576.html؟
تعديل:
"يتم استخدام StreamExecutor حاليًا كوقت تشغيل للغالبية العظمى من تطبيقات GPGPU الداخلية من Google ، ويتم تضمين لقطة منه في مشروع TensorFlow_ مفتوح المصدر ، حيث يعمل بمثابة وقت تشغيل GPGPU."

+1

آمل أن يتمكن الأشخاص الذين يعملون عليها من التغلب على مشكلة CUDNN البديلة بحلول الوقت الذي يقترب فيه Tensorflow من 1.0

martinwicke لماذا تم إغلاق هذه القضايا؟

لا أعتقد أن التزامك يصلح هذا.

لا يمكنك دائمًا استخدام تعليقات الالتزام نفسها في مستودع مختلف ؛) https://github.com/tensorflow/skflow/issues/22

يا جيثب

vrv الآن بعد أن أخطرتنا بشكل مفرط ، هل يمكنك تقديم بعض التعليقات حول استراتيجية تنفيذ البث؟ ؛)

سأقوم فقط بإلقاء اللوم على GitHub في كل شيء ، بما في ذلك نقص دعم OpenCL. ؛)

ومع ذلك ، قد يكون benoitsteiner قادرًا على التعليق أكثر. لا أعرف حقًا ما تقصده باستراتيجية "منفذ البث". نستخدم حاليًا إصدارًا من منفذ البث و CuDNN و Eigen وجميعهم يلعبون جيدًا معًا ، لذلك لست متأكدًا من كيفية تغير أي خطط لجانب OpenCL من الأشياء

انا اعني:
"ما هو StreamExecutor؟
=========================
StreamExecutor عبارة عن غلاف موحد حول نماذج البرمجة من جانب المضيف CUDA و OpenCL (أوقات التشغيل). يتيح لكود المضيف استهداف أجهزة CUDA أو OpenCL مع نواة موازية للبيانات تعمل بشكل متماثل. "

العمليات المعلبة
==================
يوفر StreamExecutor العديد من النوى المحددة مسبقًا لعمليات البيانات المتوازية الشائعة.
فئات العمليات المدعومة هي:

  • BLAS: البرامج الفرعية للجبر الخطي الأساسي ،
  • DNN: شبكات عصبية عميقة ،
  • FFT: تحويل فورييه السريع ، و
  • RNG: توليد رقم عشوائي.

keryell مرحبًا ، لدي أيضًا اهتمام بتطبيق TensorFlow على FPGA ، باستخدام لغات برمجة عالية المستوى مثل Xilinx C ++ أو OpenCL. يسعدني أن أساهم إذا كان لديك خطة ما.

henline هل يمكنك شرح دور StreamExecutor على Opencl ودور Canned ذي الصلة
عمليات Tensorflow. ما زلت لا أرى كيف سيتكامل هذا مع خطط SyCL على Eigen و cudnn (بديل؟)

: +1: أود المساهمة في هذا أيضًا.

يوفر bhack StreamExecutor وظائف مكافئة لتلك الخاصة بوقت تشغيل CUDA وبعض مكتبات CUDA (مثل cublas أو cudnn). ومع ذلك ، ما زلت بحاجة إلى كتابة نواة GPU الخاصة بك ، وهو ما نستخدم Eigen من أجله.

benoitsteiner إذًا ، هل ما زالت هناك حاجة لكتابة حبتين ، واحدة لـ CUDA والأخرى لـ Opencl؟

benoitsteiner إذًا ، ألا يزال لديك tensorflow / tensorflow / stream_executor / opencl / نظير داخليًا؟ ماذا عن "المشغلين المعلبين"؟

يمكّنكbhack Eigen من كتابة تعبير يصف الحساب الذي تريد إجراؤه مرة واحدة ، ويقوم تلقائيًا بإنشاء نواة (نسميها المقيِّم) لتقييم هذا التعبير على وحدة المعالجة المركزية ونواة أخرى لتقييم التعبير على جهاز CUDA. بمجرد أن نحصل على دعم OpenCL في Eigen (نحن نقترب) ، سيكون من الممكن أيضًا إنشاء OpenCL kernel تلقائيًا.
بالنسبة إلى عدد قليل من عمليات TensorFlow ذات الأهمية الحاسمة للأداء (مثل الالتواء) ، فإننا نستخدم نواتًا محسّنة يدويًا و / أو مكتبات تابعة لجهات خارجية. في هذه الحالات ، سنحتاج إلى تطبيق OpenCL جيد لهذه العمليات.

: +1:

هل هناك خطة لدفع المزيد من التعليمات البرمجية في https://bitbucket.org/benoitsteiner/eigen-opencl؟ ماذا عن مترجم sycl؟ يبدو أنه لا توجد تطبيقات مستهدفة GPU مفتوحة المصدر تم إصدارها.

تضمين التغريدة
سأقوم قريبًا بإصدار بديل cuDNN (فقط جزء الالتفاف ، حيث إنه أكثر أداء وذاكرة أهمية للقيام بذلك) لـ OpenCL على Caffe. ربما يكون أيضًا لبعض الاستخدامات لمنفذ Tensorflow.

bhack : حقق Codeplay الكثير من التقدم على جبهة opencl. ترقبوا دفعة كبيرة إلى https://bitbucket.org/benoitsteiner/eigen-opencl في الأسابيع القليلة المقبلة.

@ naibaf7 : التنفيذ السريع لعملية الالتواء سيكون مفيدًا للغاية في TensorFlow. نتطلع إلى ذلك.

benoitsteiner كيف يمكنني ببساطة إزالة تطبيق cuda؟ لأن "#ifdef GOOGLE_CUDA" معقد للغاية. يعني أحيانًا CUDA ، وأحيانًا يعني GPU.

نظرًا لأن هذه المشكلة قد شقت طريقها إلى خريطة الطريق (انظر _Platforms_): هل لدينا تقريبًا فكرة عن موعد وصول دعم OpenCL إلى TensorFlow؟ هل أعجبك الإصدار 0.9 / 1.0؟ Q3 / 4 2016؟ أم أن عام 2017 أكثر واقعية؟

benoitsteiner هل eigen-opencl https://bitbucket.org/benoitsteiner/eigen-opencl جاهز بما يكفي لدعم تطوير تدفق موتر opencl؟

هل يعتمد Tensorflow على موتر Eigen فقط أم أن هناك أي تبعيات أخرى لـ Eigen؟

أصدرتNEELMCW Codeplay دعمًا جزئيًا لـ OpenCL إلى Eigen Tensors. الرمز متاح في مستودع bitbucket هذا. بالنسبة للجزء الأكبر ، يعتمد TensorFlow على موترات Eigen. هناك تبعيات إضافية على Eigen لعمليات الجبر الخطي ، لكن لا يتعين علينا توفير تنفيذ متوافق مع OpenCL لهذه العمليات (على الأقل ليس في البداية). لذلك نحن في وضع جيد جدًا لبدء دعم OpenCL في TensorFlow.

إذا كنت مهتمًا بالمساهمة ، فقد بدأت في تتبع ما يجب القيام به في جدول البيانات هذا

benoitsteiner أنا مؤلف مكتبة C ++ 11 OpenCL BLAS (https://github.com/CNugteren/CLBlast) وأقوم حاليًا بتنفيذ دعم نصف الدقة هناك. يسعدني المساهمة في جزء BLAS / GEMM من هذا المشروع و / أو تعديل CLBlast ليناسب احتياجاتك بشكل أفضل.

تضمين التغريدة
CLBlast متاح الآن أيضًا في OpenCL-Caffe ، هل رأيت ذلك؟ :)
هل أتيحت لك أيضًا فرصة لإلقاء نظرة على تلافيف libDNN؟

@ naibaf7 رأيته ، نعم! :) لم ألقي نظرة على libDNN على الإطلاق حتى الآن ، لكني لست متأكدًا مما تقصده بالضبط. أفترض أن الالتفاف يتم تنفيذه باستخدام GEMM؟

تضمين التغريدة
نعم ، لقد اعتقدت أنه سيكون من الجيد أن تتمكن من إلقاء نظرة عليها وربما تقديم بعض النصائح للتحسين أو الضبط على libdnn.
(https://github.com/naibaf7/caffe/blob/master/src/caffe/greentea/libdnn.cpp).
إنه يستخدم GEMM ، ولكن ضمنيًا (ليس من خلال BLAS ، فقط GEMM الصغيرة على مستوى مجموعة العمل) بحيث يكون مستوى أعلى من التوازي ممكنًا ، وكذلك لا يلزم وجود مخزن مؤقت وسيط (لفك البيانات في مخطط GEMM).

مرحبا جميعا،

benoitsteiner شكرا لذكر دفعنا! نأمل أن تكون مفيدة!

لتجميع هذا الرمز ، تحتاج إلى مترجم SYCL. حاليًا ، المترجم الوحيد المدعوم هو ComputeCpp الخاص بـ Codeplay ، والذي يتوفر عبر برنامج تقييم Codeplay. سيتم توفير ComputeCpp مجانًا كإصدار تجريبي مفتوح عام ، لاحقًا في عام 2016 ثم تم إصداره بإصدار مجاني (إصدار ComputeCpp Community Edition) في عام 2017. سيسمح هذا لأي شخص بتجميع وتطوير TensorFlow على أجهزة OpenCL ، مثل AMD أو Intel GPUs ووحدات المعالجة المركزية.

بالمناسبة. ألا يجب أن يكون لهذه المشكلة تسمية OpenCL؟ :)

شكرا،
لوك

آمل حقًا أن يتم تجميع ذلك أيضًا باستخدام أداة مفتوحة المصدر. @ keryell كيف تسير الأمور مع فرع Opencl الجديد الخاص بك

bhack سيكون من الجيد معرفة ما إذا كان بإمكانه العمل مع triSYCL في وضع الجهاز المضيف لـ CPU OpenMP أولاً. لكن ليس لدي النطاق الترددي للدخول إلى نظام إنشاء TensorFlow / Eigen. :- (إذا أراد شخص ما المحاولة ، فلا تتردد في القيام بذلك. :-)

https://github.com/keryell/triSYCL/commits/opencl يجب أن يسمح بتشغيل OpenCL kernels قريبًا في وضع التشغيل التفاعلي OpenCL ، ولكن ليس في وضع المصدر الفردي SYCL الذي نحلم به جميعًا لأننا لا نملك Clang / LLVM outliner حتى الآن لاستخراج النواة من SYCL. لكن Khronos افتتح مؤخرًا مكونات من AMD و Intel لدعم OpenCL C ++ 2.2 & SPIR-V الذي سيكون أساسه. لذا فهي مسألة وقت "فقط" ...

هل يمكن لشخص ما تقديم تقديرات للوقت الذي قد يكون فيه Tensorflow قادرًا على العمل باستخدام OpenCL (وحدات معالجة الرسومات AMD)؟ وكيف يبدو منحنى الأداء / قابلية الاستخدام بمرور الوقت؟ من الصعب تحليل جميع المعلومات السابقة إلى معلومات شراء أجهزة قابلة للتنفيذ. :)

شكرا مقدما!

@ djan92
أود أن أقول أعطها سنة حتى تصبح صالحة للاستعمال ، لسوء الحظ. يبدو أنه سيتم بناؤه على مكتبات وتقنيات متطورة تمامًا ، ومعظمها ليس جاهزًا بعد.
سأنتقل أيضًا إلى اللوحة بمجرد توفر حزمة الأدوات الكاملة كمصدر مفتوح وليس قبل ذلك.

@ naibaf7

أود أن أقول أعطها سنة حتى تصبح صالحة للاستعمال ، لسوء الحظ. يبدو أنه سيتم بناؤه على مكتبات وتقنيات متطورة تمامًا ، ومعظمها ليس جاهزًا بعد.
سأنتقل أيضًا إلى اللوحة بمجرد توفر حزمة الأدوات الكاملة كمصدر مفتوح وليس قبل ذلك.

لماذا لا يتم تنفيذ إصدار CL أولاً أثناء انتظار أن يكون منفذ SYCL جاهزًا؟ أفترض أن هناك عددًا غير قليل من الأشخاص هنا على استعداد للمساعدة. سنة واحدة فقط تبدو طويلة جدا.

@ djan92
نعم ، أنت محق ، # 22 عمرها تقريبًا 8 أشهر ولديها أكثر من 100 مشاركة! يمكن غرق المعلومات!

هل يمكن لشخص ما تقديم تقديرات للوقت الذي قد يكون فيه Tensorflow قادرًا على العمل باستخدام OpenCL (وحدات معالجة الرسومات AMD)؟

يستخدم TensorFlow مكتبة Eigen لحساب الموتر (في وحدة Tensor). لقد التزمنا بتنفيذ جزئي لـ OpenCL 1.2 باستخدام SYCL (https://bitbucket.org/benoitsteiner/opencl Branch Codeplay). السبب في استخدامنا SYCL لهذا العمل هو أن هذا القسم من TensorFlow يستخدم أشجار تعبير C ++ ، وهو أمر ممكن مع SYCL لـ OpenCL ، ولكن غير ممكن مع OpenCL C مباشرة. يمكن للمكونات الأخرى لـ TensorFlow ، مثل التلافيف أو BLAS ، استخدام OpenCL C مباشرةً.

حاليًا ، أعمل على دمج ComputeCpp (مترجم Codeplay's SYCL) في نظام بناء bazel. يجب أن يكون هذا جاهزًا قريبًا (اتبع هذا الريبو: https://github.com/benoitsteiner/tensorflow-opencl/). بعد الانتهاء من ذلك ، يجب تسريع TensorFlow على الأنظمة التي تدعم OpenCL SPIR (مثل AMD أو Intel) باستخدام ComputeCpp. سيستمر العمل الإضافي على تسريع المزيد من TensorFlow ، بالإضافة إلى دعم المزيد من تطبيقات OpenCL و triSYCL مفتوح المصدر SYCL. تعد SYCL و OpenCL معايير مفتوحة متعددة البائعين وخالية من حقوق الملكية ، لذلك هناك الكثير من الأنظمة الأساسية والأجهزة التي يمكن دعمها باستخدام هذا النهج (وليس فقط وحدات معالجة الرسومات AMD).

سيتوفر برنامج التحويل البرمجي ComputeCpp Community Edition مجانًا لاحقًا في عام 2016 (في شكل تجريبي: سيتم إصدار التوافق الكامل مجانًا في أوائل عام 2017).

يمكن إجراء العمل على تسريع الأجزاء غير C ++ من TensorFlow (مثل BLAS والتلافيف) بدون SYCL وتنفيذها بشكل منفصل. قد يكون لدى بائعي الأجهزة المختلفين مكتباتهم الخاصة المحسنة لهذه الميزات التي يمكن أن تساعد في التسريع. أو يمكننا استخدام Eigen مع C ++ لهذه الميزات.

وكيف يبدو منحنى الأداء / قابلية الاستخدام بمرور الوقت؟

نعتقد أن الأداء سوف يتحسن بشكل مطرد. للتسريع على مجموعة متنوعة من الأجهزة ، نحتاج إلى إدارة البيانات بشكل أكثر كفاءة ، وهذا هو سبب وجود عنصر عمل "موتر مُدار" ، بحيث يمكن إدارة حركة البيانات بشكل أكثر كفاءة بين المضيف والأجهزة المتعددة. من الصعب التنبؤ بكيفية اختلاف الأداء عبر مجموعة واسعة من الأجهزة في الوقت الحالي. حاليًا ، يتم تسريع القليل جدًا ، لكننا نضع البنية التحتية في مكانها للسماح بتسريع قياسي مفتوح في TensorFlow.

@ naibaf7

أود أن أقول أعطها سنة حتى تصبح صالحة للاستعمال ، لسوء الحظ.

يجب أن تكون العمليات الأساسية هنا قريبًا جدًا. نحن نضع البنية التحتية الأساسية داخل الكود لدعم التسريع المفتوح القائم على المعايير. نعتقد أنه مع دعم المجتمع ، ستكون نسخة سريعة وقابلة للاستخدام جاهزة في أقل من عام.

سأنتقل أيضًا إلى اللوحة بمجرد توفر حزمة الأدوات الكاملة كمصدر مفتوح وليس قبل ذلك.

سيكون ComputeCpp متاحًا للعامة مجانًا في عام 2016. يجب أن يتبع دعم triSYCL مفتوح المصدر. OpenCL مفتوح المصدر مدعوم بالفعل مع pocl و Shamrock و Clover و Beignet.

تضمين التغريدة
لن يكون رمز موتر C ++ في Eigen محمولًا بسهولة إلى OpenCL C بدون SYCL ، ولكن هناك ميزات أخرى من شأنها أن تعمل بشكل جيد على OpenCL C. ألق نظرة على جدول البيانات هذا: https://docs.google.com/spreadsheets/d / 1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0 / edit # gid = 0 واملأ اسمك مجانًا على الميزات التي يجب أن تستخدم OpenCL C العادي (مثل BLAS والتلافيف).

نقدم نسخة تقييمية لـ ComputeCpp قبل الإصدار العام. إذا كنت ترغب في واحد ، يرجى مراسلتي عبر البريد الإلكتروني :)

lukeiwanski رائع ، شكرًا على التحديث. أتمنى أن تكون محقًا بشأن إنجازها بكامل ميزاتها في أقل من عام.

خطوة أخرى لتطبيق Streamexecutor في LLVM

أي فرصة للحصول على التسارع على rx 480؟

تضمين التغريدة
سيكون LibDNN المستقل متاحًا للتكامل:
https://github.com/naibaf7/libdnn

عظيم أن تقرأ هذا يجري العمل عليه. سيكون من المفيد لو تم تلميع Beignet 2.0. الكثير من الإمكانات مع Skylake و Iris الآن.

تمت إضافة طلب سحب حديثًا على https://github.com/benoitsteiner/tensorflow-opencl/pull/1 إذا أراد شخص ما إلقاء نظرة.

يحتاج OpenCL SDK الخاص بـ Imagination (GPU) إلى NDA للوصول إليه ، فنحن لدينا فقط المكتبة المشتركة. هل من الممكن تشغيل Tensorflow على أساس هذه libs؟

تضمين التغريدة
لا تحتاج إلى ملفات رأس خاصة بالبائع لإنشاء أي برنامج OpenCL. جرب cl.hpp من https://www.khronos.org/registry/cl/api/1.2/cl.hpp و opencl.h / cl.h من أي حزمة SDK أخرى. على سبيل المثال - لدي 3 منصات OpenCL على الأقل وكلها تعمل مع /usr/include/CL/cl.h مشترك واحد

لا ندعم حتى الآن تشغيل TensorFlow على OpenCL. عمل جاري الشغل عليه. نعمل حاليًا على وحدات معالجة الرسومات AMD. يجب أن يتبع دعم PowerVR. إذا كنت ترغب في المساهمة في التطوير ، يجب عليك الاتصال بنا (Codeplay) مباشرة. إذا كنت ترغب في تشغيل TensorFlow على PowerVR ، فيجب عليك الانتظار لمزيد من التقدم.

شكرًا inferrna ، يبدو مشابهًا لبرنامج OpenGL الذي يخفي تنفيذ البائع المحدد.

andrewrichards أحب المساهمة في التطوير ، كيف أتواصل معك؟

الأسهل هو النقر فوق "تسجيل اهتمامك" على صفحتنا هنا: https://www.codeplay.com/products/computecpp
سيؤدي ذلك إلى انضمامك إلى برنامج المطورين الخاص بنا ويمكننا العمل معًا علىalephman

إذا كنت ترغب في ذلك ، يمكنك أيضًا تخصيص المحتوى للسماح بالتجميع باستخدام بديل مفتوح المصدر. راجع https://github.com/tensorflow/tensorflow/issues/22#issuecomment -221841173

مرحبا جميعا!
سعيد جدًا لسماع تمديد دعم Tensorflow خارج Nvidia Cuda. أتساءل عما إذا كنت تفكر أيضًا في جعلها تعمل على وحدات APU مثل هذا: http://www.amd.com/en-us/products/processors/l laptop-processors#sectionOne؟

تضمين التغريدة
تدعم APUs OpenCL لكل من جزء وحدة المعالجة المركزية ووحدة معالجة الرسومات.
يجب أن يعمل هذا إلى حد كبير خارج الصندوق عندما يكون دعم OpenCL جاهزًا.
في غضون ذلك ، إذا كان لديك بالفعل APU وترغب في تجربة إطار عمل ML آخر ، فإن BVLC OpenCL Caffe يعمل بالفعل.

@ naibaf7 شكرا على التوضيح. إنني أتطلع إلى مجموعات الأجهزة / البرامج الفعالة من حيث التكلفة لتشغيل Tensorflow محليًا وسأتبع بالتأكيد تقدم تطوير OpenCL.

تضمين التغريدة
نعم يمكن أن تكون مشكلة ، لكني أعتقد أن أجزاء مثل im2col / col2im وغيرها من تطبيقات الالتفاف يمكن أيضًا توصيلها كواجهات برمجة تطبيقات خارجية إذا كانت مشكلة في GCLA حقًا. قد يكون هذا أيضًا أفضل للمؤلفين الأصليين لمثل هذا العمل.

hughperkins نحن نعمل على جلب OpenCL إلى TensorFlow عبر SYCL لـ OpenCL 1.2.
الرجاء إلقاء نظرة على https://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid = 1625897530 للتعرف على "المهام" والتقدم.
أصدرنا مؤخرًا مترجمًا لـ SYCL https://www.codeplay.com/products/computesuite/computecpp يسمى ComputeCpp Comunity Edition. يمكن للناس تجربتها!
كذلك ، نحن نركز على مكتبة Eigen https://bitbucket.org/benoitsteiner/opencl/branch/ComputeCpp - للوصول بها إلى المرحلة المطلوبة بواسطة MNIST في TensorFlow - هناك بعض الأشياء المتبقية.
بالنسبة للقيود ، تم اختبار إصدار ComputeCpp CE الحالي من أجل Intel (CPU ، GPU) و AMD (CPU ، GPU) بالنسبة للأنظمة الأساسية التي ندعمها Ubuntu 14.04 64bit و CentOS 64bit.
ComptueCpp قابل للتنزيل مجانًا ويمكن استخدامه في المشاريع التجارية ومفتوحة المصدر.
لأننا <3 مجتمعات مفتوحة :)

lukeiwanski آسف للمناقشة / طلب هذا هنا في الموضوع ، لكنني أعتقد أنه قد يكون مفيدًا للآخرين أيضًا: أفهم أن Codeplay مهتم للغاية بـ SYCL لتطبيق OpenCL وقد سمعت بالفعل أن الآخرين مهتمون بهذا العمل لك أيضا. قرأت بعض المنشورات التي كتبها مسؤول في Movidius على سبيل المثال. ومع ذلك ، أود أن أسأل ما هي مساهمة Google في هذا حقًا؟ نظرًا لأن Movidius ، إلى جانب AMD وغيرها ، مدرجون كشركاء Codeplay ، يمكنني أن أفهم أنهم يشجعون أو يدعمون SYCL لـ OpenCL ، ولكن على حد علمي ، فإن Google ليست شريكك ولم تساهم حتى الآن؟!

لا تفهموني بشكل خاطئ ، فأنا أحب عملك حقًا ، لكن ألن يكون من الجيد توحيد جهودك وتجميع الموارد ومحاولة العمل معًا مع Google؟ بالنسبة لي ، يبدو أن العديد من الأطراف المختلفة مهتمة بـ OpenCL لـ TensorFlow ، لكن لا يتم استخدام إمكانات هائلة ، لأن هذه الأطراف لا تتطور معًا ؟!

قد أكون مخطئًا ويرجى الاعتذار إذا تمت مناقشة هذا الأمر بشكل كافٍ ، لكنني ما زلت غير مدرك لأي محاولات كبيرة من قِبل Google (أو أطراف أخرى) للعمل معًا على هذا الأمر ، ونتيجة لذلك ، ما زلت غير مدرك لكيفية عمل المجتمع يمكن أن تساعد أو تدعم (مثل الأفراد) ، إما عن طريق المساهمات المباشرة أو الاختبار أو أشياء أخرى.

ascenator نحن في Google نعمل عن كثب مع Luke وزملائه في Codeplay في هذا المشروع منذ ما يقرب من 12 شهرًا حتى الآن. لقد كانت مساهمة Codeplay في هذا الجهد هائلة ، لذلك شعرنا أنه يجب علينا السماح لهم بأخذ زمام المبادرة عندما يتعلق الأمر بإرسال التحديثات المتعلقة بـ OpenCL. هذا هو السبب في أنك لم تسمع الكثير منا حول هذا الموضوع :)

الآن بعد أن أصبح مترجم ComputeCpp متاحًا على نطاق واسع ، نخطط لدمج العمل الذي تم إنجازه حتى الآن. لكننا نريد أولاً تجميع بنية تحتية للاختبار الشامل للتأكد من عدم زعزعة استقرار قاعدة الرموز الموجودة.

نرحب بجميع المساهمات في هذا الجهد ، لذلك لا تتردد في الاتصال بي إذا كنت تريد المساعدة. نحن مهتمون بشكل خاص بنواة OpenCL عالية الأداء لمضاعفة المصفوفات والتلافيف. تم اقتراح العديد من المرشحين ، لكننا لم نبدأ في النظر في إيجابيات وسلبيات كل منهم أو كيفية دمجها.

benoitsteiner أشكركم جزيل الشكر على التوضيح وآسف للمعلومات الخاطئة! هذا يبدو جيدا جدا وواعدا! بالتأكيد سألقي نظرة على ComputeCpp بعد ذلك. إنني أتطلع حقًا إلى دعم OpenCL لـ TensorFlow ، لأن هذا يوفر الكثير من الإمكانات الجديدة للروبوتات (وهو المجال الذي أقوم فيه بالبحث واستخدام TensorFlow لتطبيقات التعلم العميق). سأقوم على الأقل بإلقاء نظرة على الإصدارات المبكرة ومحاولة الاختبار / التصحيح. لدينا بعض رقائق Intel بالإضافة إلى عدد من وحدات المعالجة المركزية ARM التي تنتظر الاختبارات ؛)

hughperkins ... آسف ولكن أليس هذا خارج الموضوع تمامًا هنا؟ لا أرى مدى صلة ذلك بـ OpenCL TF؟

أنا مهتم أكثر هنا بمعرفة ما إذا كان سيتم اتباع نهج ضبط لمضاعفة المصفوفة ونواة الالتفاف وما إذا كان سيكون بديلاً صالحًا مفتوح المصدر لـ CompiteCpp والذي سينتج SPIR-V.

تم إصدار معيارين جديدين لمجموعة Kronos على https://www.khronos.org/news/press/khronos-launches-dual-neural-network-standard-initutions

إذا كان ذلك مفيدًا ، فقد تم إصدار إصدار أفضل من isaac: https://github.com/ptillet/isaac ، ويوفر سرعات كبيرة عبر clBLAS و cuBLAS في Maxwell و Pascal و Fiji. يوفر أيضًا حبات أسرع (مدركة للمدخلات) من Tensorflow لتخفيضات 1D و 2D.

يبدو أن hughperkins لديك فرص أكبر لكتابة مترجم CUDA لأي جهاز OpenCL ، بدلاً من مترجم CUDA-OpenCL.

hughperkins ربما يمكن لميزة SVM الخاصة بـ OpenCL 2.0 أن تحل مشكلة المؤشر؟ نظرًا لأن الجميع إلى جانب Nvidia (AMD و Intel و ARM و Qualcomm) بدأوا في دعم OpenCL 2.0. ربما هو حل جيد؟

hughperkins إنه تطبيق blas بحد ذاته. يقوم بتنفيذ بعض الرموز في رؤوس clblas و cublas لذلك لا يوجد إعادة ترجمة وتعديل في الكود. مهم. يمكنني أيضًا تنفيذ بعض الرموز لـ clblast.h ، نظرًا لأنه يستخدم رأسًا مختلفًا. بعض مزايا إسحاق هي:

  • ديناميكي بالكامل ، بحيث يمكنه استخدام إما / كلا CUDA أو OpenCL بدون إعادة ترجمة.
  • مع مراعاة الإدخال ، فإنه لا يقوم بضبط النواة لمصفوفات مربعة كبيرة. يجب أن تعمل بشكل جيد على جميع الأشكال التي يمكنك التفكير فيها دون إعادة ضبطها.
  • واجهة برمجة تطبيقات C ++ تشبه numpy / arrayfire. بعض الاندماج للجمع بين العملية الأولية والتخفيضات

يارب
ليس صحيحا. عادت AMD إلى دعم 1.2 على برامج تشغيل AMDGPU-PRO. قد يستغرق الأمر بعض الوقت حتى ينتشر الدعم الكامل 2.0. بالتأكيد ليس هناك حل قصير المدى.

  • نعم
  • يمكنني اختراق التوافق لمجموعة من العمليات إذا لزم الأمر (على سبيل المثال ، إعادة توجيه ** MV إلى GEMV). سيكون الدعم المعقد صعبًا. يوجد دعم مزدوج بالفعل هنا ولكن لم يتم ضبط أي بنية له.

تضمين التغريدة

يبدو أن الكود الخاص بي لا ينتهك أي قواعد OpenCL واضحة

نعم ، من الواضح أن تمرير أي بنية عامة (مثل المصفوفة أو البنية) تحتوي على مؤشرات أمر غير صحيح لمجرد أن هذه المؤشرات يمكن أن تشير إلى ذاكرة جهاز آخر (يدعم OpenCL نموذجًا متعدد الأجهزة حيث يتعذر على أحد الأجهزة الوصول إلى ذاكرة جهاز آخر). ولكن يبدو أنه من الممكن التغلب على مستوى الأشعة تحت الحمراء ، بدون ترجمة وسيطة إلى كود OpenCL - وهذا ما افترضته :)

benoitsteiner ، henline ، من https://github.com/henline/streamexecutordoc ، فإنه يقترح أن Streamexecutor قد دعم إصدار CL العملية المعلبة (مثل DNN ، BLAS) خارج الصندوق. هل يشير ذلك إلى أن Google لديها بالفعل تطبيق clDNN و clBLAS جاهز لـ Tensorflow ، ولكن ليس مفتوح المصدر بعد؟

بخلاف ذلك ، يدعم OpenCL 2.0+ و SYCL 2.2 SVM ، إذا كنت تريد الاحتفاظ بنفس بنية البرنامج.
OpenCL 2.0+ مدعوم من AMD و Intel GPU على سبيل المثال. في العالم المضمن ، غالبًا ما يتم دعمه بالتأثيرات الجانبية حتى مع OpenCL 1.x ، نظرًا لأن ذاكرة المضيف والجهاز غالبًا ما تكون هي نفسها لأسباب تتعلق بالتكلفة.

@ keryell
لكن الأنظمة الأساسية الأكثر شهرة ، Linux + وحدات معالجة الرسومات AMD الجديدة (RX 480 ، Vega القادمة) تدعم فقط OpenCL 1.2 في الوقت الحالي ... ومن يدري متى سيتغير ذلك (رهاني في غضون عام). لا يزال Beignet (مفتوح المصدر Linux Intel) لـ OpenCL 2.0 يمثل أيضًا فوضى عربات التي تجرها الدواب ؛ الإصدار الثابت يحتوي على 1.2.
أيضًا ، بالنظر إلى جميع الشركات الأصغر التي تصنع شرائح متوافقة مع OpenCL ، فإنها بالكاد تسحب دعم 1.2. لذلك أعتقد أن أي شيء يعتمد على OpenCL 2.0 سيشهد معدلات تكيف سيئة للغاية في الممارسة العملية.

أعتقد .. أي جهاز فيدور لديه ضرورة ملحة لاستهلاك SPIR-V؟ أعتقد أن ضغط الجرافيك / شادر على فولكان يمكن أن يساعد جانب أوبنسل ..

@ naibaf7 للرجوع إلى المناقشة حول OpenCL 2 أم لا ، في مرحلة ما يجب تسليم أشياء حقيقية ... وإلا فهناك بالفعل nVidia GPU و CUDA مع تشغيل TensorFlow ... :-)
لكن بالطبع ، هناك بعض الاهتمام بنسخة من TensorFlow بدون SVM.

keryell ما مقدار Vulkan SPIR-V الذي يعمل على برامج التشغيل (التي لديها بالفعل تغطية جيدة للأجهزة) هل تعتقد أنها ستدفع إصدارات Opencl الحديثة؟

@ naibaf7 اجتماع Khronos الأسبوع المقبل في سيول مع كل من OpenCL و Vulkan ، لكن المناقشات ليست علنية. ولكن يبدو أن هذه فكرة جيدة لجعل كل عالم يعمل على تحسين الآخر ، وفي بعض الأحيان يعود بالفائدة على TensorFlow. :-)

@ keryell
نعم ، آمل أن يناقشوا بعض الأشياء المفيدة DeepLearning :)

تهاني! تأكد من التحقق من مشروع HIP ، حيث حاولوا حل نفس المشكلة. لقد اختاروا إنشاء لغة جديدة تسمى HIP ، والتي تحدد ما يجب تحويله يدويًا (مثل التحقق من دعم الدقة المزدوجة عن طريق التحقق من مستوى الحساب). بينما يتقدم المشروع ، ستنخفض كمية الترجمات اليدوية. انظر: https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP

اقتراحي لك هو استخدام HIP وإصلاح بعض الأخطاء التي تمنع تطوير Tensorflow أو أهدافك الخاصة ، لأنك الآن تفهم LLVM للقيام بذلك. بهذه الطريقة لن تضطر إلى حل المشكلات التي تم حلها بالفعل.

تضمين التغريدة
لا يمكن بناء وحدة python باستخدام fork الخاص بك باتباع هذا https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md#create -the-pip-package-and-install

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.

أنا على أوبونتو 16.04 ، dirname من coreutils-8.25-2ubuntu2

hughperkins أعتقد أن التغيير والتبديل في ملف docker TF على المستودع الخاص بك باستخدام هذه المزادات يمكن أن يسهل الإعداد للآخرين.

نعم ، عندما يكون هناك شيء أكثر فاعلية. إنها في الأساس نسخة وسابقة من هذه المزادات التي نشرتها.

أقوم بتجربة بناء هذا على MacOS 10.10.5 على MacBook أواخر عام 2015 مع ATI 6770M (OpenCL 1.2).

لقد قمت بتثبيت Xcode 8 و Anaconda (Python 3.5) و MacPorts المكافئات لـ clang + llvm:

بدلاً من سطور apt-get ، قم بما يلي:

منفذ sudo تثبيت clang-3.8 llvm-3.8

بدلاً من استخدام / proc / cpuinfo ، قم بما يلي:

NUM_PROCS = $ (system_profiler SPHardwareDataType | grep "إجمالي عدد النوى" | cut -d ":" -f 2)

ثم قم بتعديل Makefile لاستخدام macports وتشغيل make

perl -pi.bak -e | (CLANG) =. + | $ 1 = / opt / local / libexec / llvm-3.8 / bin / clag ++ | ' Makefile
perl -pi -e | (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 OpenCL dirs ؛ المستقبل: استخدم /System/Library/Frameworks/OpenCL.framework/Versions/Current/Headers/cl.h '#ifdef APPLE ' مشروط

grep -Rl 'تشمل "CL /' * | xargs perl -pi.bak -e 's | include" CL / | include "OpenCL / | g'
جعل -j $ {NUM_PROCS}

هذا بقدر ما أحصل عليه:

$ make -j $ {NUM_PROCS}
mkdir -p build
mkdir -p build
mkdir -p build
/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- وظائف-أقسام -fdata-أقسام -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS_D__STDM -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-استثناءات -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- وظائف-أقسام -fdata-أقسام -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS_D__STDM -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-استثناءات -c -o build / architecture_clone.o -g -I / opt / local / libexec / llvm-3.8 / include src / architecture_clone.cpp
/opt/local/libexec/llvm-3.8/bin/clang++ -I / usr / lib / llvm-3.8 / include -fPIC -fvisibility-inlines-hidden- وظائف-أقسام -fdata-أقسام -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS_D__STDM -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-استثناءات -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]
السمة ((المضيف)) مضمنة طويلة atomicExch (متقلبة طويلة بدون إشارة طويلة _p طويلة ، طويلة طويلة بدون توقيع) {
^
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 (قيمة عائمة) ؛^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:104:15: ملاحظة: وظيفة المرشحCLKernel * in (قيمة int32_t) ؛^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:106:15: ملاحظة: وظيفة المرشحCLKernel * in (قيمة int64_t) ؛^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:108:15: ملاحظة: وظيفة المرشحCLKernel * in (قيمة uint64_t) ؛^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:110:15: ملاحظة: وظيفة المرشحCLKernel * in (قيمة uint32_t) ؛^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:73:15: ملاحظة: وظيفة المرشح غير قابلة للتطبيق: لا يوجد تحويل معروف من "size_t" ') إلى "easyycl :: CLArray *"للحجة الأولىCLKernel * in (CLArray * clarray1d) {return input (clarray1d)؛



}^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:91:36: ملاحظة: نموذج وظيفة المرشح غير قابل للتطبيق: يتطلب وسيطتين ، ولكن تم توفير وسيط واحدقالبCLKernel * in (int N ، const T * data) ؛^تم إنشاء تحذير واحد وخطأ واحد.جعل: * _ * [build / hostside_opencl_funcs.o] خطأ 1صنع: * * بانتظار الوظائف غير المكتملة ....
src / Struct_clone. cpp: 245 : 12: تحذير: 11 قيمة تعداد لم تتم معالجتها في المحول: 'HalfTyID'، 'X86_FP80TyID'، 'FP128TyID' ... [-Witch]
التبديل (typeID) {
^
تم إنشاء تحذير واحد.

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

نجح هذا التصحيح. شكرا لك.

بعد تطبيق هذا ، أدى استمرار الإنشاء إلى حدوث أخطاء في مساحة الاسم size_t:

$ make -j $ {NUM_PROCS}
mkdir -p build
mkdir -p build
/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- وظائف-أقسام -fdata-أقسام -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS_D__STDM -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-استثناءات -o build / ir-to-opencl -g -I / opt / local / libexec / llvm-3.8 / include src / ir-to-opencl.cpp build / architecture_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- وظائف-أقسام -fdata-أقسام -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS_D__STDM -D__STDC_LIMIT_MACROS -std = c ++ 11 -fcxx-استثناءات -o build / patch-hostside -g -I / opt / local / libexec / llvm-3.8 / include src / patch-hostside.cpp build / readIR.o build / mutations.o build / architecture_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]
السمة ((المضيف)) مضمنة طويلة atomicExch (متقلبة طويلة بدون إشارة طويلة _p طويلة ، طويلة طويلة بدون توقيع) {
^
/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
تم إنشاء تحذير واحد.
/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: خطأ: لا يوجد نوع يسمى 'size_t' في مساحة الاسم 'std' ؛ هل تقصد ببساطة "size_t"؟
typedef الأمراض المنقولة جنسياً :: 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: خطأ: لا يوجد نوع يسمى 'size_t' في مساحة الاسم 'std' ؛ هل تقصد ببساطة "size_t"؟
الأمراض المنقولة جنسياً :: 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"؟الأمراض المنقولة جنسياً :: 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"؟الأمراض المنقولة جنسياً :: size_t cublasSetPointerMode (مقبض cublasHandle_t ، وضع cublasPointerMode_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.
هل تقصد ببساطة "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.cppإنشاء 7 أخطاء.جعل: * _ * [build / cocl_blas.o] خطأ 1جعل: * * انتظار الوظائف غير المكتملة ....

هل يمكننا دفع سجل الدخول الطويل للسماح للخيط أن يظل قابلاً للقراءة؟

سؤال: كيف حالكم يا رفاق مشكلة مساحات العناوين؟

hughperkins تصف مواصفات SYCL في القسم 5.8 ("خصم مساحة العنوان")
كيف يحتاج التطبيق للتعامل مع أنواع الذاكرة المختلفة. هذه
مشابه للعمل السابق الذي تم إجراؤه على PlayStation 3 والموصوف في
هذه الورقة: التفريغ - أتمتة ترحيل الشفرة إلى غير المتجانسةالأنظمة متعددة النواة أو C ++ على المسرعات: دعم نماذج برمجة SYCL و HSA أحادية المصدر باستخدام Clang

امل ان يساعد.

hughperkins هل يمكنني تجميع كود الريبو tensorflow-opencl لتطبيق لوحة ARM الخاصة بي؟ تحتوي لوحة ARM الخاصة بي على Imagination GPU الذي يدعم opencl 1.2.

لقد عثرت على هذا الموضوع أثناء البحث عن دعم tf / intel.

لديّ Intel MacBook Pro ، كيف يمكنني المساعدة؟ لا أعرف c / c ++ ، ولكن يمكنني اتباع تعليمات البناء / التجميع / الاختبار وإعادة نتائج (pastebin) ...

ديريك $ 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 على الذراع. اتباع دليل cuda-on-cl الخاص بك:
معلومات لوحة ARM الخاصة بي:
arm64، مجلس التعاون الخليجي 4.9، clang and llvm 3.5، openCL 1.2

* هل يجب علي استخدام clang ++ - الإصدار 3.8؟ *
git clone - متسلسل 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-test-cocl-cuda_sample:
يصنع: cocl: الأمر غير موجود

hughperkins اسمحوا لي أن أجربها.

حصل خطأ أثناء اختبار keras مع Tensorflow

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

مرحبًا بالجميع ، اسمي ريكاردو ، أنا مبرمج C ++ ولدي سنوات عديدة في C ++ ، وقليلًا على Cuda ، سأكون سعيدًا بالمساهمة في هذا الجهد. كيف يمكنني المساهمة في هذه الوظيفة؟

حسنًا ، لديّ Odroid Xu3 مع Mali-T628 MP6 (OpenGL ES 3.0 / 2.0 / 1.1 و OpenCL 1.1 Full Profile)
يعمل على نظام التشغيل: LUbuntu 1404 64 بت
سأقوم بتثبيت كامل ونشر النتيجة على هذه المنصة.
حول الأخطاء ، هناك قائمة بالأخطاء (شيء مثل Bugzilla؟) أو جدول بيانات يحتوي على قائمة بالأخطاء؟
هتافات!

ماذا عن استخدام HIP؟
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/blob/master/docs/markdown/hip_faq.md#how -Does-hip-Compar-with-opencl
https://github.com/RadeonOpenCompute/hcc
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/45
"يتم منح رغبتك ، يتم نقل Eigen عبر وحدة معالجة الرسومات AMD عبر HIP. الجزء الثاني من طلبك هو هل يمكننا تقديم أداة قياسية تدعم FLOAT16 التي يتم شحنها مع جميع وحدات معالجة الرسومات GFX8 الخاصة بنا ، والتي تم منحها الرغبة."
يدعم الآن فرع التطوير الخاص بنا من برنامج التحويل البرمجي AMDGPU كلاً من التعليمات الأصلية لـ Float16 و Int16 ، بدلاً من محاكاة FP16 / Int16 مع تعليمات التحويل الأعلى والأسفل للتحويل من FP16 / Int16 إلى Float والعكس.

هذه اختبارات f16 على أجهزة فيجي التي نفذت بنجاح ضرب مصفوفة بنصف الأنواع مع التحويل وبتعليمات أصلية ".

أيضًا ، غير مرتبط ولكن يجب عليك استخدام syCL / openCL 2.0 بدلاً من 1.2 ، لأن nvidia مدعوم بالفعل عبر CUDA. و openCL 2.0 مدعوم في كل من برامج تشغيل AMD و Intel Windows. صرحت AMD أيضًا أنها ستفتح قريبًا برنامج تشغيل un openCL 2.0 لنظام التشغيل Linux (والذي يمكن استخدامه بواسطة Intel ، السحر مفتوح المصدر) (ولدى Intel بالفعل تطبيق Linux openCL 2.0 الذي يحتاج فقط إلى النضج.) إذا سألت Intel و AMD ، فربما يمكنهم تسريع العمل ، لأن تدفق التوتر مهم لمصالحهم الاقتصادية. وقد قالوا بالفعل في قسم التعليقات هذا إنهم يريدون المساعدة. كما يدعم جميع صانعي ARM الرئيسيين openCL 2.0. قد يفتح هذا الكثير من الفرص لنظام Android (وهو ما يصب في مصلحة Google الاقتصادية) ، مثل التوت ، وأجهزة التلفزيون الذكية ، إلخ.

وفي منتصف المدة ، يمكننا في النهاية تطوير طبقة احتياطية opencl 1.2 للأجهزة غير المدعومة.
ويجب أن يستخدم التطبيق أيضًا openVX (الذي يدعمه الآن جميع صانعي الأجهزة الرئيسيين ، ولدى AMD تطبيق مفتوح المصدر) ومع https://www.khronos.org/news/press/khronos-launches-dual-neural-network - المبادرات المعيارية
وكل ذلك مع Spir-V (والذي يمكن استخدامه في نفس الوقت بواسطة Vulkan و openGL).
يمكنك القول إنني أقوم بعمل نسخة مكررة مما قيل بالفعل ، لكن التخليق مهم.
وأخيرًا ، هل يمكن أن يستخدم Tensorflow HSA؟

http://www.hsafoundation.com
سيكون HSA رائعًا على Android.

لا أعرف ما إذا كان HIP سيكون مفيدًا أم لا. يتم دعمه فقط على بعض بطاقات AMD لذا نحتاج إلى تطبيق OpenCL على أي حال إذا أردنا دعم جميع الأجهزة. قد لا يزال الأمر يستحق العناء إذا كان تنفيذ HIP أسرع بشكل ملحوظ. قد يكون هذا هو الحال ولكني لم أر العديد من المعايير (HIP مقابل OpenCL) حتى الآن. قد يكون هناك سبب آخر هو MLOpen (الذي تم كتابته في HC) كبديل لـ cudnn ولكن مرة أخرى ليس لدي أي فكرة عن مدى سرعة ذلك أو الميزات التي يدعمها.

لن يستخدم TensorFlow HSA مباشرةً لأنه مستوى منخفض جدًا. ولكن يتم تنفيذ HC (و HIP) فوقه ويمكنك أيضًا تنفيذ OpenCL فوق ما إذا كان (pocl يفعل ذلك).

هل ستكون خوارزمية إعادة التشغيل مفيدة هنا؟ http://mozakai.blogspot.ca/2012/05/reloop-all-blocks.html

hughperkins من الجميل أن ترى أن لديك بعض التقدم مع المترجم الخاص بك ، لكنني أعتقد أنه أصبح خارج الموضوع بالنسبة لـ TensorFlow. يجب أن تبدأ العديد من سلاسل المناقشة الصغيرة على صفحة GitHub لمشروع المترجم الخاص بك بدلاً من ذلك. أعتقد أنه سيكون أكثر تركيزًا وإنتاجية.

تم دمج دعم OpenCL / SyCL الأولي بشكل رئيسي باستخدام https://github.com/tensorflow/tensorflow/pull/5267

تهانينا!

@ keryell بالمناسبة ، ماذا حدث لمستودع triSYCL؟ يبدو أنه قد انتهى ولا يمكنني العثور إلا على إشارة إلى Gitlab الخاصة بـ Khronos والتي لا يمكن الوصول إليها للجمهور.

تحرير: لقد وجدت نسختك الخاصة ، فقط النسخة من AMD قد اختفت.

bhack ، هل يدعم opencl-docker في منصة mac؟

alephman ليس لدي منصة OSX لكنني أعتقد أن التكيف قليلاً مع أمر التشغيل يمكن أن ينجح.

bhackalephman : راجع تعليقي حول mac أعلاه ، إذا وجهتني إلى تعليمات الإنشاء ، فسأذهب

olesalscheider : نعم ، تم نقل triSYCL من AMD إلى Xilinx https://github.com/Xilinx/triSYCL لكنك على حق ، الإصدار الموجود على مساحة عمل GitHub يعمل أيضًا على https://github.com/keryell/triSYCL

لم نجرب triSYCL على TensorFlow حتى الآن. هناك بالفعل عمل تكوين بناء كبير يجب القيام به فقط لمحاولة ...

keryell ما هي حالة triSYCL؟

أوشك دعم Intel beignet opencl 2.0 على الانتهاء!
http://phoronix.com/scan.php؟page=news_item&px=Beignet-Birthday-CL2

تم تطويرbhack triSYCL بشكل أساسي في Xilinx الآن. لا تزال تضيف المزيد والمزيد من الميزات. لا يزال برنامج التحويل البرمجي المستندة إلى Clang / LLVM قيد التطوير للحصول على تجربة مصدر واحد كاملة على الجهاز. لكن وضع التوافق OpenCL ، الذي تم تنفيذه بالفعل ، له بعض القيمة أيضًا ، من خلال تبسيط الاتصالات بين المضيف والنواة مع وقت تشغيل SYCL الذي يقوم بعمليات النقل البطيئة وفقًا للتبعيات التي يعبر عنها الموصِّلون.

جهاز Mac الخاص بي متوافق مع OpenCL ، فكيف يمكنني تشغيل Tensorflow الخاص بي باستخدام openCL؟ لقد وجدت للتو أن opencl كان مدعومًا في Tensorflow ، عندما أقوم بتكوين الرموز الجديدة.

hughperkins لا يوجد تعليمات clinfo في جهاز Mac الخاص بي ، فماذا أفعل من أجل ذلك؟ لكن يمكنني تجميع كود الاختبار هنا لـ opencl مع clang وإخراج المعلومات التالية:
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 عبارة عن ثمانية أجيال ، وهو أمر جيد لـ OpenCL 1.2.

hughperkins ، نعم ، يعتبر SYCL 1.2 بديهيًا لـ OpenCL 1.2 و SYCL 2.2 مسبقًا لـ OpenCL 2.2.
لقد قلت "بداهة" لأنه إذا كنت لا تستخدم أي شيء يتطلب وضع توافق OpenCL في SYCL ، فإن SYCL لا يتطلب حقًا OpenCL على الإطلاق. في الواقع ، يعد SYCL نموذجًا عامًا جدًا للحوسبة غير المتجانسة ويمكن تشغيله فوق أي شيء. ولكن بالطبع قد يتطلب التطبيق الحقيقي OpenCL أيضًا.

أهلا،

أنا أتعلم / أعمل مع TensorFlow و Keras في الوقت الحالي وسأكون مهتمًا بالحصول على دعم OpenCL الذي يعمل تحت macOS ... هل هناك بعض الأخبار حول العمل المنجز حول macOS؟

لقد نجحت في تجميع TensorFlow ولكن إذا حاولت التهيئة لـ OpenCL ، سأطلب مني موقع computeCpp 1.2 ، ولا يوجد ComputeCpp لنظام macOS كما يبدو لي.

أهلا. ليس بأي حال من الأحوال خبيرًا في ML / Tensorflow / أو حتى OpenCL ، لكنني مطور رسومات Mac ذو خبرة وأريد بشدة أداء أسرع لـ Tensorflow على الأنظمة ذات وحدة معالجة الرسومات AMD المدمجة باستخدام مكتبات مدمجة واعتماديات بسيطة :)

كيف يمكنني أن أقدم المساعدة؟

بالنظر إلى فشل التجميع الأخير على OS X في travis loghughperkins - يبدو أن تشغيل "xcode-select --install" قد يحل؟ يجب إعادة ربط الدليل / usr / include. واجهت هذه المشكلة بنفسي عند تحديث الإصدار التجريبي من Xcode وواجهت مشكلات في تجميع بعض أكواد C ++.

يبدو أن برنامج التحويل البرمجي XLA (https://www.tensorflow.org/versions/master/resources/xla_prerelease.html) سيوفر إنشاء رمز LLVM من الرسوم البيانية لتدفق البيانات. هذا يعني سهولة الوصول إلى spir-v وبالتالي واجهة برمجة تطبيقات حساب Vulkan. مع إنشاء الكود ، لا أستطيع أن أتخيل أن Google لا توفر توافق Vulkan نظرًا للعدد الكبير من وحدات معالجة الرسومات المدمجة غير المستخدمة التي تعمل على Android.

تضمين التغريدة

بسرعة: أقوم حاليًا بتشغيل Inception v3 على قاعدة كود C ++ / Object-C مخصصة وأقوم بتمرير إطارات الفيديو التي تم فك تشفيرها إلى الشبكة. لا أعرف ما يكفي عن TF لمعرفة احتياجات المستوى المنخفض ، ولكن المستوى العالي: نماذج التحميل ، تشغيل الجلسة ، توقع عمل الأشياء. أعتقد أن هذا يعني التوافق بنسبة 100٪ لنكون صادقين حقًا. أعلم أن ذلك لا يساعد في تحديد الأولويات. كان التعرف على صورة C ++ باستخدام TF / InceptionV3 نقطة البداية.

cuda-on-cl يعمل على Mac: لقد قمت بفحص الريبو ويمكنني المساعدة في تصحيح الأخطاء وتشغيل البنيات على أنظمتي والتحقق من النتائج على مجموعة متنوعة من الأجهزة: لدي إمكانية الوصول إلى AMD Mac Pros مع Dual D700s و Nvidia Mac Laptops و أنظمة سطح المكتب.

شكرا لملاحظاتك التفصيلية. سأراقب الريبو ، وأحاول المتابعة ، وأحاول تقديم أفضل ما يمكنني المساعدة.

هيو ، قد ترغب في إلقاء نظرة على http://chrec.cs.vt.edu/cu2cl/ لمعرفة كيفية تعيين بعض الوظائف.

في شركة StreamComputing التي أعمل بها ، لدينا العديد من وحدات معالجة الرسومات لاختبار البناء والقياس المعياري ، والتي نستخدمها لمشاريع العملاء الخاصة بنا. يمكنني ربط جيثب بجينكينز الخاص بنا للقيام بجولة أسبوعية.

شكرًا لك على الإجابة ، سأعود إلى موضوع العمل هذا الأسبوع بنصوص محددة.

تتعلق حالات الاستخدام الخاصة بي بتحليل المطابقة النصية / النحوية ، باستخدام Gensim و Keras / Tensorflow في تجاربي.

أنا على استعداد لمساعدتك في الاختبار

لدي جهاز كمبيوتر يعمل بنظام Windows وبطاقة AMD
MBP مع بطاقة AMD
ميغابايت مع وحدة معالجة رسومات إنتل مدمجة

مرحبًا hughperkins - سأخوض الاختبار المحدد أعلاه ، هذا المساء ، على AMD R9 390 8GB. حتى الآن حصلت بالفعل على نتيجة مختلفة ؛ قطارات logistic_regression.py ولا تُرجع nan . جيد جدا! إنها segfaults في النهاية ، لذا سأحقق فيما إذا كان البرنامج النصي أو كود cl على خطأ.

أين يمكنني نشر نتائجي ، حيث يمكن أن تكون مفيدة للغاية لك؟
ربما يمكننا الحصول على "نص اختبار" قياسي يولد مجموعة قياسية من النتائج التي يمكن للمتطوعين تقديمها إليك (أو إعدادها على CIs المحلية أو أي شيء آخر)؟

py.test هو حل جيد مثل أي حل آخر ؛ إنه على بعد pip وهذا جزء من عملية تثبيت tensorflow أي حال.

لقد اكتشفت بعض الأشياء المثيرة للاهتمام منذ أن بدأت اختباراتي ، وقد لا تكون قابلة للتصحيح باستخدام إخراج Python وحده ، ولكن:

  • قد تتعطل المكالمات المختلفة لنفس النص البرمجي مبكرًا ، أو قد "تتعطل" (لا يوجد إخراج ، لا تقدم ، لا توجد استجابة لـ Ctrl-C ، يجب أن تكون العملية pkill -9 'd) ، أو قد تتعطل متأخرًا إما في جزء التحقق أو بعد اكتمال البرنامج النصي بنجاح. قد تؤدي الأعطال (segfaults) إلى انهيار Xorg.
  • تختلف النتائج بدون سبب على ما يبدو: يمكنني استدعاء برنامج نصي والحصول عليه segfault ، ثم اتصل به مرة أخرى وسيعمل.
  • يمكن أن تحدث حالات التعليق في أجزاء من التعليمات البرمجية التي كانت تعمل حرفيًا منذ لحظات ، لقد حدث تعليق واحد داخل مجموعة تدريب أو بعدها ، بعد حدوث عدة مئات من الدُفعات بنجاح.

لذا ، قد يكون هناك أشياء لم يتم حلها على جانب وحدة معالجة الرسومات ، وأن هناك حاجة إلى segfault جيد لمسحها؟ لا أعرف الكثير عن طراز GPU أو OpenCL حتى الآن ، لذلك لا يمكنني المساهمة كثيرًا هنا. ولكن ، قد يكون ناتج تصحيح أخطاء GPU ضروريًا لاستكشاف ما يحدث بشكل صحيح.

أيضًا ، اعتقدت أنك كنت مع AMD من جيثب الخاص بك ، ولكن يبدو أنك "عميل مارق" يقوم بعمل CUDA-on-CL بالكامل في وقتك الخاص. شكرا جزيلا لقيادة هذا! هل هناك طريقة يمكنني من خلالها أنا والآخرين المساهمة في جهودك ، ربما عن طريق التمويل الجماعي لوحدة معالجة رسومات الغرافيك؟ أو يمكنك إعداد Patreon ، ويسعدني التسجيل للحصول على مساهمة شهرية في المشروع؟

فيما يتعلق بوحدات معالجة الرسومات AMD ، فنحن شريك لـ AMD. شاهد رسالتي قبل 8 أيام ، والتي ربما فاتتك:

في شركة StreamComputing التي أعمل بها ، لدينا العديد من وحدات معالجة الرسومات لاختبار البناء والقياس المعياري ، والتي نستخدمها لمشاريع العملاء الخاصة بنا. يمكنني ربط جيثب بجينكينز الخاص بنا للقيام بجولة أسبوعية.

أتساءل عما إذا كان لديك إمكانية إعداد خادم CI ، يتم تشغيله على كل التزام؟

لا مشكلة. ربما أحتاج إلى حق الوصول للكتابة إلى المشروع ، حتى يتمكن Jenkins من كتابة ملف السجل في دليل build-log. أنا فقط أرسل لك بريدًا مزعجًا ، حتى نتمكن من المناقشة.

أهلا بكم،

كما ترى على الأرجح ، تم دفع مجموعة من عناصر SYCL إلى TensorFlow. لم ننتهي بعد ، وهناك الكثير لنفعله. لكننا نتقدم للوصول إلى هناك.

إذا كنت مهتمًا بالمساهمة أو مهتمًا فقط بالحالة الحالية ، فتحقق من التفاصيل أدناه.

بنية تحتية
تبرعت Google بجهازين تم إعدادهما لاختبار تفرع benoitsteiner لـ TensorFlow (https://github.com/benoitsteiner/tensorflow-opencl) بشكل دوري

كلاهما يحتوي على وحدات معالجة رسومات AMD:

CL_DEVICE_NAME: هاواي
CL_DRIVER_VERSION: 1912.5 (VM)

و

CL_DEVICE_NAME: فيجي
CL_DRIVER_VERSION: 1912.5 (VM)

نحن في Codeplay نتطلع إلى تكريس آلة (آلات) العام المقبل أيضًا. لتحسين تغطية تنوع جهاز OpenCL.

نحن نبحث عن مساهمين في هذا المجال إذا كان أي شخص مهتمًا بتوفير خادم بناء اختبار للأنظمة الأساسية ذات الصلة التي ندعمها.
حاليا ، المتطلبات هي:
- أوبونتو 14.04
- برامج تشغيل OpenCL التي تدعم SPIR (Intel CPU / GPU أو AMD GPU)

VincentSC ربما يمكنك المساعدة في ذلك؟

الاختبارات
على آلة فيجي (https://ci.tensorflow.org/job/tensorflow-opencl/127/consoleFull) نواجه 164 إخفاقًا.

على آلة هاواي (https://ci.tensorflow.org/job/tensorflow-opencl/129/consoleFull) انخفضنا إلى 56 فشلًا.

نحن نبحث في إصلاح اختبارات التدرج الفاشلة والتحقيق في أصول الإخفاقات الإضافية في آلة فيجي.

ايجن
خلال الأشهر القليلة الماضية ، كنا ننفذ بنشاط الميزات التي تحتاجها TensorFlow بما في ذلك: إعادة التشكيل ، والتقطيع ، والتخفيض الأساسي وما إلى ذلك. حاليًا نحن ننفذ الانكماش. يمكن العثور على تحليل تفصيلي في علامة التبويب Eigen Tensor من https://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid = 0.

TensorFlow
تم تنفيذ الكثير من عمليات المعامل بما في ذلك Abs ، و Floor ، و IsFinite ، و Log ، و Pow ، و Mul ، وما إلى ذلك ، بالإضافة إلى عمليات التنسور مثل إعادة الشكل ، والشكل ، والهوية ، والتعبئة ، إلخ.
يمكن العثور على تحليل تفصيلي في علامة التبويب TensorFlow Kernels https://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid = 1719702219

منظمة
يحتوي الجدول أعلاه على العديد من علامات التبويب التي تصنف جهود المشروع مثل: الخطة الشاملة ، Eigen Tensor ، TensorFlow Kernels ، Models.

إذا كنت ترغب في المشاركة ، فيرجى وضع اسمك بجوار العنصر الذي تعمل عليه أو إضافة أي شيء مهم مفقود.
شكرا،
لوك

هل خارطة الطريق هذه نشطة؟

lukeiwanski نعم ، لا مشكلة. اتصل بنا عبر [email protected]

بعد قراءة كل هذا ، أعتقد أنه لا يوجد حل قوي حتى الآن لاستخدام OpenCL على نظام التشغيل macOS / OS X؟ حاولت تجميع Tensorflow C ++ بدعم OpenCL (والذي أفترض أنه يتطلب ComputeCpp لـ SYCL 1.2 كما أشار أحدهم).

نظرت حولي ولم أستطع تحديد مكان تنزيل مكتبة SYCL أو تجميعها أو إنشائها. هل هو هنا https://www.codeplay.com/ ؟ لست متأكدًا حقًا من كيفية المضي قدمًا ، شكرًا ...

dylib بقدر ما أعرف أنه لا يوجد حتى الآن ComputeCpp لنظام التشغيل macOS. هذا يعني أن OpenCL لنظام التشغيل macOS ليس جاهزًا.

لا يزال يتعذر تشغيله على Ubuntu 16.04 باستخدام بطاقة AMD وبرنامج تشغيل المحفز https://github.com/tensorflow/tensorflow/issues/6497. هل هناك أي طريقة؟

اضطررت إلى إلقاء نظرة على إخراج / usr / local / computecpp / bin / computecpp_info قبل محاولة استخدام TF المترجمة مع دعم OpenCL. في حالتي تظهر

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

يوجد الآن خياران لتشغيل TF على وحدة معالجة الرسومات:
يعمل بشكل جيد على عدد محدود (من البائع) من الأجهزة ، ولكن مملوكة لـ CUDA
سيء العمل على عدد محدود من الأجهزة (بواسطة مطوري برامج الكمبيوتر) وأيضًا أجهزة الكمبيوتر الخاصة
لا يزال لا يدعم OpenCL.

inferrna هناك قسم خاص بـ OpenCL في وثائق TensorFlow الشاملة. سيتم نشر هذا على موقع tensorflow.org قريبًا.

benoitsteiner ما هو الوضع الحالي لدعم التلافيف opencl؟ هل تخطط للاستفادة من النوى الموجودة مباشرة؟ ماذا عن ضرب المصفوفات؟

أي وقت مقدر؟

ماذا عن استخدام 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

هل يمكن تحويل خلفيات XLA الخلفية LLVM IR إلى SPIR-V باستخدام https://github.com/KhronosGroup/SPIRV-LLVM؟

وماذا عن هذا؟ أعتقد أن هذه الحزمة يمكن أن تعمل على Radeon GPU.

https://github.com/RadeonOpenCompute/ROCm

bhack من https://github.com/tensorflow/tensorflow/issues/6449#issuecomment -269245727

lukeiwanski هل ستؤثر XLA أيضًا على جهودك؟

تعد حلول XLA و SYCL مكملة لمواقف مختلفة: تم تصميم SYCL لتوفير إمكانية البرمجة الكاملة وإمكانية التخصيص. تم تصميم XLA لتحسين الأنماط المحددة جيدًا في الرسوم البيانية.

ما أفهمه من XLA هو أنه يحسن بعض الرسوم البيانية TensorFlow الحالية في وقت التشغيل باستخدام مترجم LLVM. يتطلب تمرير تحسينات ليتم تنفيذها في المترجم لكل خوارزمية مستخدمة في الرسم البياني.
نهج SYCL هو النهج الوحيد الذي سيوفر مستوى CUDA من البرمجة - وهو ما يحتاجه المطورون.

مع SYCL ، نهدف إلى توفير الدعم لجميع TensorFlow Ops وتسهيل تطوير العمليات الجديدة.

هذا يعني أن SYCL تتيح لك كتابة عمليات جديدة عالية الأداء بسهولة بالغة ، بينما يمكن لـ XLA تحسين الرسوم البيانية بأكملها إذا كانت تدعم جميع العمليات في الرسم البياني.

هل يمكن تحويل خلفيات XLA الخلفية LLVM IR إلى SPIR-V باستخدام https://github.com/KhronosGroup/SPIRV-LLVM؟

لا أرى أي سبب يجعل ذلك غير ممكن.

lukeiwanski شكرًا ، كنت أتطلع على وجه التحديد إلى https://www.tensorflow.org/versions/master/experimental/xla/developing_new_backend

@ k-hashimoto: نحن نناقش هنا حول نقل TensorFlow إلى OpenCL ، وهو معيار من مجموعة Khronos Group ، وفي الواقع المزيد من OpenCL SYCL ، وهو معيار المصدر الفردي C ++ ما بعد الحداثة من مجموعة Khronos Group.
يبدو ROCm وكأنه حل آخر غير قياسي من بعض البائعين.
إذا كنت مهتمًا بالحلول الخاصة ، فهناك بالفعل إصدار CUDA من TensorFlow يبدو أنه يعمل بشكل جيد. :-)

متفق عليه: استمر في المحادثة / الجهود على OpenCL ، ودع البائعين يطبقون ما يفعلونه فوق هذا المعيار المفتوح.

في 17 يناير 2017 10:01:32 GMT + 00: 00 ، كتب Ronan Keryell [email protected] :

@ k-hashimoto: نحن نناقش هنا حول نقل TensorFlow إلى
OpenCL ، وهو معيار من Khronos Group ، وفي الواقع أكثر من OpenCL SYCL ،
معيار المصدر الفردي C ++ ما بعد الحداثة من مجموعة Khronos Group.
يبدو ROCm وكأنه حل آخر غير قياسي من بعض البائعين.
إذا كنت مهتمًا بالحلول الاحتكارية ، فهناك بالفعل CUDA
نسخة من TensorFlow تبدو تعمل بشكل جيد. :-)

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -273076892

-
مُرسَل من جهازي الذي يعمل بنظام Android مع K-9 Mail. عذرا على الاختصار.

: +1:

👍

: +1:

تم إنشاء هذه الرسالة تلقائيا بواسطة برنامج تسليم البريد.

تعذر تسليم الرسالة التي أرسلتها إلى واحد أو أكثر من الرسائل
المتلقين. هذا خطأ مؤقت. العناوين التالية مؤجلة:

[email protected]
تجاوز المجال biomassiv.es الحد الأقصى لرسائل البريد الإلكتروني لكل ساعة (111/100 (111٪)) المسموح بها. ستتم إعادة محاولة الرسالة لاحقًا

------- هذه نسخة من الرسالة ، متضمنة جميع الرؤوس. ------
تم الاستلام: من github-smtp2-ext6.iad.github.net ([192.30.252.197]: 48606 helo = github-smtp2b-ext-cp1-prd.iad.github.net)
بواسطة chi-server32.websitehostserver.net مع esmtps (TLSv1.2: ECDHE-RSA-AES256-GCM-SHA384: 256)
(مثال 4.87)
(مغلف من [email protected] )
معرف 1cWmiQ-0032as-W9
لـ [email protected] ؛ الخميس ، 26 كانون الثاني (يناير) 2017 10:16:03 - 0600
التاريخ: الأربعاء ، 25 كانون الثاني (يناير) 2017 04:09:21 -0800
توقيع DKIM: v = 1 ؛ أ = rsa-sha256 ؛ ج = استرخاء / استرخاء ؛ د = github.com ؛
ق = pf2014 ؛ ر = 1485346161 ؛
bh = N1Pjga2Q9PtEE8ncEMXBtSJzd3kd6HAkJRnj6H2dDEg = ؛
h = من: الرد إلى : إلى: نسخة إلى: في الرد - إلى: R المراجع: الموضوع : معرف القائمة:
قائمة- أرشيف: List-Post : List-Un Subscribe: From؛
ب = e5r + VKm / UtpLYj0OCnfEPSYlL6a7xCOd9bN + jS3gify2mRv / g4kofW7ZrEeDyeJT +
GvddVV / w5htZFUbHy9 + 92pYUHGEYEn2XrmFqc6ZFVoPqBsPW5Cxk31O3Kvi1cwuSPI
g8J4X / qvl1DT + yKrh1es7CeXkr23c8mFNgWkG5qk =
من: Miguel Ángel [email protected]
الرد على: tensorflow / tensorflow [email protected]
إلى: tensorflow / tensorflow [email protected]
نسخة إلى: [email protected]
معرف الرسالة:
ردا على:
مراجع:
الموضوع: Re: [tensorflow / tensorflow] دعم OpenCL (# 22)
إصدار Mime: 1.0.2
نوع المحتوى: متعدد الأجزاء / بديل ؛
الحدود = "- == _ mimepart_5888957158d12_78b73ff902fe113c148134" ؛
محارف = UTF-8
ترميز نقل المحتوى: 7 بت
الأسبقية: قائمة
X-GitHub-Sender: migpradel
المستلم X-GitHub: الكتلة الحيوية
X-GitHub-Reason: مشترك
معرف القائمة: Tensorflow / Tensorflow
قائمة الأرشيف: https://github.com/tensorflow/tensorflow
قائمة المشاركة: [email protected]
قائمة إلغاء الاشتراك:و
https://github.com/notifications/unsubscribe/AELU4lfFKxIqjh4jaQkUHuRKD7zj_eKCks5rVztxgaJpZM4Gex3i
X- Auto-Response-Suppress: الكل
X-GitHub-Recipient-Address: [email protected]

---- == _ mimepart_5888957158d12_78b73ff902fe113c148134
نوع المحتوى: نص / عادي ؛
محارف = UTF-8
ترميز نقل المحتوى: 7 بت

image

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -275092277
---- == _ mimepart_5888957158d12_78b73ff902fe113c148134
نوع المحتوى: نص / html ؛
محارف = UTF-8
ترميز نقل المحتوى: 7 بت

image

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع .


---- == _ mimepart_5888957158d12_78b73ff902fe113c148134--

جديد هنا. إذا كنت تريد أن تسأل عما إذا كان سيكون هناك دعم OpenCL في Tensorflow في المستقبل ، فهل هذا يعني أنه سيكون هناك دعم لتشغيل Tensorflow على FPGA؟
شكرا لك

atinzad : نعم إذا كان إصدار OpenCL أو SYCL وكود المصدر مدعومًا من بيئة FPGA. ولكن نظرًا لأن TensorFlow ربما يكون الإطار الأكثر تنقلًا بوسائل مختلفة ، فقد يحتوي بالفعل على جزء ما يعمل على FPGA بالفعل في مكان ما ...

ما هي الاختلافات بين جهود تطوير sycl و XLA التي تستهدف SPIR-V بخلاف PTX في رؤية المدى المتوسط؟

يا له من سؤال رائع. ربما - عدد الأشخاص المعنيين؟ سيكون من المثير للاهتمام معرفة!

في 16 فبراير 2017 ، الساعة 1:35 مساءً ، كتب bhack [email protected] :

ما هو الفرق بين جهود تطوير sycl و XLA التي تستهدف SPIR-V بخلاف PTX في رؤية المدى المتوسط؟

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع.

ما هو الفرق بين جهود تطوير sycl و XLA التي تستهدف SPIR-V بخلاف PTX في رؤية المدى المتوسط؟

bhack سيكون هذا نقاشًا رائعًا في قمة TensorFlow Dev بالأمس

هل تسأل عن الموارد المتاحة / نوع المبرمجين اللازمين للمساهمة؟

إذا كان الأمر كذلك ، في نهج OpenCL / SYCL ، يمكن تطوير مبرمجي C ++ / مبرمجي OpenCL C بسرعة والقدرة على المساهمة. يتطلب نهج XLA خبرة مترجم / llvm.

XLA هو مشروع داخلي لشركة Google بالامتداد لديهم المزيد من الموارد المرتبطة به. ولكن ، من ناحية أخرى ، فإن مهمتهم أكبر بكثير أيضًا .. كتابة المترجم ليست مهمة سهلة.

خلاف ذلك ، إذا كنت تسأل عن النموذج:

كما ذكرت سابقًا في https://github.com/tensorflow/tensorflow/issues/22#issuecomment -272908870 ، فإننا نرى كلا المجهودات كوسائل تكميلية ولكل منهما حالات استخدام مختلفة. ما زلت أقف مع هذا البيان.

على سبيل المثال ، ذكرtatatodd في عرضه أن بعض Ops لن يكون XLA هدفًا أبدًا. أعتقد أنه يمكننا سد هذه الفجوة.

الأشياء الأخرى التي يجب مراعاتها هي منصات جديدة. سأستخدم البيئة المحمولة والمدمجة من أجل هذه الحجة حيث تميل الشرائح الجديدة إلى الظهور بشكل متكرر أكثر من وحدات معالجة الرسومات (المبدأ هو نفسه).

إذا كانت أشباه الموصلات تدعم SYCL / OpenCL ، فستحصل على دعم TF خارج الصندوق (قد تكون هناك حاجة لبعض تعديلات الأداء).

إذا كانت البنية غريبة ولا توجد خلفية LLVM لها ، إلا أن XLA تحتاج إلى إضافتها (قد لا يحدث ذلك كثيرًا ولكن لا يزال). ما يحدث في كثير من الأحيان هو أن البنية تتغير قليلاً ومن ثم يجب إضافة ممرات تحسين جديدة أو يجب تعديل واحدة موجودة للحصول على الفائدة. التغيير والتبديل في كود النواة أسهل.

لم أتعمق كثيرًا في XLA لكنني أفترض أن XLA يجب أن تستدعي واجهة برمجة تطبيقات CUDA بطريقة ما لتشغيل كود نواة PTX ، لذلك يجب أن يتم نقلها إلى OpenCL أو Vulkan لتشغيل نواة SPIR-V بدلاً من ذلك - وهذا ما أفترضه ستمر عبر StreamExecutor - إطار عمل آخر للحصول على الألفة - ربما يكون جهدًا كبيرًا.

باختصار ، نحن نقدم منصة موحدة / مستقرة في نظام بيئي مجزأ / مشتت للغاية يمكن لشركات أشباه الموصلات والمطورين استهدافه. حيث أن XLA يجب أن تلتزم بالدعم.

قد يكون benoitsteiner أو drpngx قادرين على إعطاء المزيد من المعرفة الداخلية بـ XLA لأنني أعمل مع الكثير من الافتراضات / الاستنتاجات القائمة على المحادثات.

أوه ، لقد قمت أيضًا بإنشاء قناة Slack لتسهيل الاتصال https://tensorflowopencl.slack.com/shared_invite/MTQzNDQ0NzgzNzAyLTE0ODcyOTE1NjctMDZhM2RkODRlYg

العيد:
رابط Slack لم يعد صالحًا. يرجى الاتصال بي إذا كنت ترغب في الانضمام.

أعتقد أن هذا صحيح وسيعتمد جزئيًا على الاتجاه الذي سيتم توجيه منتجي أشباه الموصلات فيه.
"تصدر هذه الخلفيات الخلفية LLVM IR الضروري لتمثيل حساب XLA HLO بطريقة فعالة ، ثم استدعاء LLVM لإصدار رمز أصلي من LLVM IR." لذلك يمكن تحويل LLVM IR إلى SPIR-V . لكن لهجة Opencl SPIRV تختلف عن Vulkan . يتم دفع Streamexecutor في LLVMallel -lib وفي وصف henline الأصلي ، يبدو أن الخطة الأصلية تغطي opencl.

/ سم مكعب @ dneto0

http://phoronix.com/scan.php؟page=news_item&px=OpenCL-2.0-NVIDIA-Preps
يجب أن تدعم Nvidia قريبًا opencl 2.0 على كل من Linux و Windows ، هذا هو YUGE!

من ناحية الأداء ، من المحتمل أن يكون أبطأ من CUDA.

تذكر أيضًا أن شباب Noveau يعملون بشكل مستقل على Opencl مع SPIR-V . الحالة قديمة بعض الشيء ولكن هناك التزامات جديدة.

Opencl ليس أبطأ بطبيعته من Cuda ، إنه مجرد nvidia يغلق السوق تقريبًا عن طريق شل سائقه opencl.
لكن قيادة nvidia تقترب أخيرًا من نهايتها ، وحتى ممارساتها غير الأخلاقية المانعة للمنافسة لن تنقذها. مع مترجم Cuda التلقائي المثير للإعجاب HIP (https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP)
vega apus و dgpus و ARM القادمة إلى Windows ، Nvidia ليس لها مستقبل ، ولهذا السبب تحتاج الصناعة إلى دعم opencl / syCL / HIP / HSA قريبًا جدًا وبكثافة.

ماذا عن الشريحة 40 من https://autodiff-workshop.github.io/slides/JeffDean.pdf؟

مرحبًا ، هل أخطط أن Tensorflow سيدعم AMD Radeon Instinct الجديد؟ (http://instinct.radeon.com/en-us/)

مرحبًا ، هل هناك أي تقدم في دعم TF-OpenCL لـ FPGAs؟

alexivia https://github.com/iteong/tensorflow/blob/master/tensorflow/stream_executor/platform.h تمت إزالته منذ بضعة أشهر وخريطة طريق Streamexecutor ليست واضحة.

bhack شكرا على الاستجابة السريعة
فهل هذا يعني أنه لا يوجد دعم أم أن العملية الصحيحة غير مضمونة؟
أيضًا ، مما قرأته في هذا الموضوع ، أرى أن الاختبارات تتم بشكل أساسي على وحدات معالجة الرسومات AMD ... هل يقوم أي شخص بتدريب شبكات على وحدات معالجة الرسومات Nvidia باستخدام منفذ OpenCL هذا؟

تمت إعادة تسمية Streamexecutor في LLVM المتوازية libs والآن هو acxxel

هل يستطيع أي عضو في Google شرح الاختلاف وخرائط الطريق بين Streamexecutor و https://reviews.llvm.org/rL285111؟

CC @ zheng-xq

henline و jlebar هما الخبيران للإجابة على الفرق بين streamexecutor و https://reviews.llvm.org/rL285111؟

Axcell و StreamExecutor هما مشروعان منفصلان. لا توجد خطط حالية لدمجهم. أترك الأمر لأفراد TensorFlow ليقولوا ما إذا كانوا يخططون للتبديل أم لا.

لذلك أيضا StreamExecutor و StreamExecutor llvm لم تكن نفس المشاريع؟

صحيح أنهما ليسا نفس المشروع.

في الخميس ، 16 مارس 2017 الساعة 11:06 صباحًا ، كتب bhack [email protected] :

لذلك أيضا 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".

أنا آسف للارتباك وأقدر ردود الفعل .. لقد كانت
عملية التعلم بالتأكيد.

في الخميس ، 16 مارس 2017 الساعة 11:24 صباحًا ، كتب bhack [email protected] :

jlebar https://github.com/jlebar المرة القادمة وحدة إبداعية للتسمية
؛) ولكن ربما لم يكن نقصًا في دافع الإبداع ولكن مجرد
جهد المنبع لأداة داخلية تباعدت عن تلك التي تمت صيانتها
في TF ..

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-287148247 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AAJMh0MMZvdTJ-bUoa71FBrEqHqFpDjvks5rmX5IgaJpZM4Gex3i
.

نعم لا يزال لدي القليل من الالتباس بين StreamExecutor و SyCL في eigen و XLA (الذي يحتوي في الواقع على واجهة CUDA الخلفية فقط ، بخلاف وحدة المعالجة المركزية و opencl في بعض الشرائح)

صدم

هل تحدث أي شخص في Google إلى Apple أو AMD لتسهيل ذلك؟ أعتقد أن AMD ضائعون جدًا لدرجة أنهم لا يعرفون حتى أن المشكلة موجودة ولا يزالون يتساءلون عن سبب امتلاك Nvidia لهذه الحصة السوقية الضخمة. أعتقد أيضًا أن فريق Apple AI سيكون أكثر من سعيد للمساعدة هنا ... إذا لم يكن OpenCL برنامجًا مهجورًا من جانبهم منذ عام 2013 ، والأسوأ من ذلك ، فإن رؤسائهم لن يغضبوا من Google.

ما هو آخر ما في هذا؟

وفقًا لـ TF 1.1 Release Notes Mac ، تم إيقاف دعم GPU (Nvidia فقط). دعونا نأمل أن يساعد هذا في تحسين نهج OpenCL (لست واثقًا جدًا من هذا).

يمكنك أيضًا متابعة حالة العلاقات العامة https://github.com/tensorflow/tensorflow/pull/9117

شكرا! أنا أتابع هذه المشكلة خلال الأشهر الماضية. لست واثقًا من التزام Apple OpenCL ، نظرًا لأنهم عالقون في OpenCL 1.2 منذ عام 2013 (لا تقدم Apple دعم SPIR 1.2 حتى الآن).

إذا كان TensorFlow on OpenCL سيساعدك في عملك ، فأعلمني ، إلى الحد الذي يمكنني فيه المساعدة في تطوير البحث وممارسة التعلم العميق الذي أود مساعدتك فيه. قامت شركتي ببناء نهاية خلفية OpenCL لـ TensorFlow تم ضبطها لمجموعة متنوعة من وحدات معالجة الرسومات كجزء من عملنا في الاستدلال على الجهاز. لقد اختبرنا عائلات GPU الرئيسية للأجهزة المحمولة وسطح المكتب بما في ذلك التكوينات الشائعة على نظامي التشغيل Windows و Mac. إذا كان هناك اهتمام كافٍ ، فقد نقوم بنوع من التوزيع العام. لدينا أيضًا Metal (Apple GPU) و LLVM (CPU) ، جنبًا إلى جنب مع طريقة للقيام بنشر بدون تبعية. الفكرة هنا هي منح كل جهاز دعمًا كبيرًا للتعلم العميق.

choongng - كل هذا يبدو مفيدًا ومفيدًا بشكل لا يصدق. سيستفيد مشروعي الشخصي https://github.com/Synopsis/ بشكل كبير من OpenCL على OS X ، بالإضافة إلى نشر Metal لنظامي iOS وسطح المكتب. إذا كان من الممكن تقديم هذا إلى Tensorflow المناسب ، أعتقد أنه سيكون بمثابة نعمة هائلة لأطنان من المطورين.

شكرا لك.

تضمين التغريدة

إذا نشرت شركتك إصدار OpenCL ، أو أكثر إثارة للاهتمام نسخة معدنية من TensorFlow ، أعتقد أن هذا سيكون خبرًا رائعًا لكثير من الأشخاص ، فأنا بصدد إنشاء eGPU باستخدام بطاقة NVidia للحصول على TensorFlow / Keras قيد التشغيل على MBP لعملي ...

للأشخاص المهتمين ... انتقل إلى مجتمع eGPU.io

تضمين التغريدة

سأكون مهتمًا جدًا برؤية هذا ، لذلك سأكون ممتنًا جدًا منكم لمتابعته! خاصة إذا كانت لا تتطلب برامج التحويل البرمجي ذات المصدر المغلق التي اختارها TF لدعم CL ..

في 26 أبريل 2017 03:33:51 GMT + 01:00 ، كتب Choong Ng [email protected] :

إذا كان TensorFlow على OpenCL سيساعدك في عملك ، فأعلمني بذلك ، إلى
إلى أي مدى يمكنني المساعدة في تطوير البحث وممارسة التعلم العميق
أحب أن أساعد. قامت شركتي ببناء نهاية خلفية OpenCL لـ TensorFlow
مضبوطة لمجموعة متنوعة من وحدات معالجة الرسومات كجزء من عملنا في الاستدلال على الجهاز.
لقد اختبرنا على عائلات GPU المحمولة وسطح المكتب الرئيسية بما في ذلك
التكوينات الشائعة على نظامي التشغيل Windows و Mac. إذا كان هناك ما يكفي من الاهتمام
قد تقوم بنوع من التوزيع العام. لدينا أيضًا Metal (Apple GPU)
و LLVM (CPU) ، جنبًا إلى جنب مع طريقة لنشر التبعية الصفرية. ال
الفكرة هنا هي منح كل جهاز دعمًا كبيرًا للتعلم العميق.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -297220160

-
مُرسَل من جهازي الذي يعمل بنظام Android مع K-9 Mail. عذرا على الاختصار.

أعتقد أنه سيكون ثوريًا ؛)

choongng ربما سيكون من المفيد إذا انضممت إلى هؤلاء الرجال
https://github.com/benoitsteiner/tensorflow-opencl

cathalgarvey ما هو المترجم مفتوح المصدر الذي تقترح استخدامه بعد ذلك؟ من الصعب العثور على حل مفتوح المصدر متوافق مع OpenCL لمعالجة الكثير من الأجهزة في البرية ...
نحتاج إلى تمهيد الحل في مرحلة ما بطريقة ما ...

لم أقل أنه حل سهل. لكن OpenCL ليست هي المشكلة ، هناك. بعد كل شيء ، CUDA هي ملكية كاملة ، أسوأ بكثير حتى من خيار OpenCL الذي اختاره TensorFlow.

بعد كل ما قيل ، هناك خيارات لنظام CL-or-cuda إذا كنت تبدأ من نقطة الصفر ، بما في ذلك أوقات تشغيل البرامج الوسيطة المحمولة أو نظام arrayfire ، إلخ. Tensorflow مرتبط جدًا بـ CUDA.

أجد أنه من المحبط أن يكون الناس على استعداد لكتابة نواة في CUDA لكنهم يرفضون القيام بذلك من أجل CL ، على الرغم من أنها ستصل إلى المزيد من المستخدمين وتنمي بشكل جدي النظام البيئي للسوق. هناك فوائد مباشرة وغير مباشرة لمنصة مفتوحة للجميع ، مما قد يؤدي إلى توفير كبير في التكاليف للجميع على المدى الطويل.

إذا كان SYSCL هو كيف يحدث ذلك في النهاية ، فهذا رائع: فلماذا لا تضع بعض الأسماء الكبيرة أموالًا على توزيع SYSCL مفتوح بدلاً من الشراء في خيارات الملكية الإضافية ، أي نوع من هزيمة الغرض من المعيار المفتوح؟

في 28 أبريل 2017 09:13:06 GMT + 01:00 ، كتب Ronan Keryell [email protected] :

cathalgarvey ما هو المترجم مفتوح المصدر الذي تقترح استخدامه بعد ذلك؟
من الصعب العثور على حل مفتوح المصدر متوافق مع OpenCL
يعالج الكثير من الأجهزة في البرية ...
نحتاج إلى تمهيد الحل في مرحلة ما بطريقة ما ...

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -297936468

-
مُرسَل من جهازي الذي يعمل بنظام Android مع K-9 Mail. عذرا على الاختصار.

ما أريد أن أسأله في هذا السياق هو هذا:

لذا فإن بعض أطر التعلم العميق مثل Tensorflow تستكشف بشكل فاتر إلى حد ما استخدام opencl كبديل لـ CUDA. بالطبع CUDA هي مجرد "اللغة" التي تم تطوير cuDNN عليها ، وهذا (إذا كان فهمي صحيحًا) هو ما تستخدمه بالفعل معظم لغات التعلم العميق. في هذا السياق ، لست متأكدًا من إصدار opencl من cuDNN.

كما تحدثت AMD عن بدائل مفتوحة المصدر لـ CUDA والتي يطورونها باستمرار ويطلقون عليها اسم rocM. يتحدثون أيضًا عن miOpen ليكون مكافئًا لـ cuDNN (مكتبات مجمّعة مصنوعة يدويًا لوظائف التعلم العميق الشائعة) ، والتي لم يتم إصدارها بعد. يعتبر نهج AMD أكثر شمولية إلى حد ما: فنحن لا نقوم فقط بتصدير الحوسبة الثقيلة إلى وحدة معالجة الرسومات.

في هذا السياق ، أنا في حيرة من أمري. كيف تتناسب جهود opencl مثل تلك المذكورة أعلاه معًا؟ بالنسبة لوحدات معالجة الرسومات NVIDIA ، الأمر سهل .... هناك CUDA ، وهناك cuDNN مكتوب بلغة CUDA. بالنسبة لغير NVIDIA / أو AMD في هذه الحالة ، يبدو الأمر أقل وضوحًا. متى يفضل HIP؟ متى يفضل استخدام HCC؟ متى يفضل استخدام أوبنكل؟ أي أفكار ستكون موضع تقدير حقًا!

cathalgarvey هناك الكثير من السياسات وراء كل هذه البنى التحتية الضخمة للبرامج / الأجهزة ... :-(
حتى لو استطعنا أن نحلم بحل نظيف قائم على معايير علمية بحتة ، أعتقد أننا يجب أن نكون واقعيين.
لا تريد Google تغيير الكثير من بنية TensorFlow. هذا هو السبب في أن البنية المستندة إلى OpenCL يجب أن تكون متشابهة جدًا ، وتتطلب C ++ أحادي المصدر مثل "CUDA runtime" بدلاً من حل OpenCL C ذي المصدر المنخفض غير أحادي المصدر. في عالم Khronos ، يُطلق على إصدار OpenCL أحادي المصدر C ++ اسم SYCL.
دعنا نناقش هذا عندما تزور دبلن ، على سبيل المثال ، لأنك تتطلع إلى أن تكون مقيمًا في أيرلندا أيضًا. :-)
في غضون ذلك ، لا تتردد في المساهمة في https://github.com/triSYCL/triSYCL وفروع TensorFlow & Eigen التي تتعامل مع SYCL ...

keryell هل تعرف ما إذا كان XLA أيضًا: GPU : تم تخطيط OpenCL على SyCL؟

مرحبًا benoitsteiner ، بخصوص:

يوجد في قسم خاص بـ OpenCL في وثائق TensorFlow الشاملة. سيتم نشر هذا على موقع tensorflow.org قريبًا.

لقد أجريت بحثًا على موقع tensorflow.org عن OpenCL ولم أتمكن من العثور على أي شيء مهم ، ويبدو للجميع أنه يشير إلى هنا. بعبارة "قريبًا" ، هل تقصد قبل ______؟ (أدخل هنا سخرية مضحكة_).

لقد تمكنت من تجميع الريبو الخاص بك (yay!) ، على الرغم من أنني أعتقد أنه يحتاج إلى شيء آخر لإنشاء عمل Tensorflow OpenCL لنظام التشغيل Mac ؛ حاولت بناء المترجم triSYCL المذكور ولكن للأسف فشلت.

bhack SInce أنا لا أعمل لدى Google ، ليس لدي أي فكرة عن تفاصيل XLA ...

dylib للأسف كل هذا هو العمل قيد التقدم ...

@ keryell نعم أعلم .. كنت أشعر بالفضول فقط إذا تمت مناقشته في بعض الاجتماعات.

OpenCL يختلف اختلافًا جذريًا عن CUDA. ومع ذلك ، فإنني أرى بشكل قاطع أن هذا تم نقله إلى HIP بدلاً من ذلك.
لذا +1 لجميع الذين اقترحوه.
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP

يسمح HIP للمطورين بتحويل كود CUDA إلى C ++ محمول. يمكن تجميع شفرة المصدر نفسها لتعمل على وحدات معالجة الرسومات NVIDIA أو AMD

لا يعرف الكثير عن HIP.
يمكنك العثور على مزيد من المعلومات حول Tensorflow و HIP هنا:
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/37
و
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/45

ملاحظة جانبية:
لا أعتقد أنه يجب علينا القتال / التفاخر بشأن Nvidia vs AMD. هذه شركات محترمة تقدم أجهزة وبرامج مذهلة. يجب أن نركز بدلاً من ذلك على تقديم تدفق التوتر إلى قاعدة مستخدمين أكبر.
يعد استهداف العديد من اللغات من خلال عمليات الربط نقطة انطلاق جيدة بالفعل ، ولكننا نحتاج أيضًا إلى استهداف أكبر عدد ممكن من الأجهزة. (حتى لو كانت الحلول السحابية مذهلة ، فهي ليست الحل دائمًا)

لدينا خبرة مع HIP ، هنا في Stream. اسمحوا لي أن ألقي نظرة.

اتفق على مناقشة "شركتي أفضل". أود معرفة وحدات معالجة الرسومات التي يجب أن يستهدفها TensorFlow. يجب أن تكون عملية ومفيدة. على سبيل المثال ، وحدات معالجة الرسومات Intel أو وحدات معالجة الرسومات المضمنة (Qualcomm ، ARM ، Imagination) ، RaspBerry Pi - نعم أم لا؟

AMD Radeon Vega Frontier Edition

نواصل تحسين منصة البرامج المفتوحة ROCm ومكتبات التعلم الآلي بقوة. نحن ندعم أيضًا أطر عمل ذكاء الآلة المفتوحة مثل Caffe (تم إصدارها في أبريل). في وقت لاحق من هذا الربع ، نخطط لتقديم الدعم لـ Torch ، وجاري العمل على Tensor Flow .

لقد أصدروا بالفعل Caffe ، سيكونون مهتمين جدًا بسماع الآخرين في هذا الموضوع يشاركون تجاربهم في البناء / الاختبار:

https://github.com/ROCmSoftwarePlatform/hipCaffe

لقد بدأت في التثبيت ولكنني واجهت عقبة حيث يتجمد أي شيء يتطلب CL فقط ، حتى clinfo . لست متأكدًا مما إذا كان هذا بسبب بعض مشكلات البرامج ، أو إذا كانت بطاقتي (R9 390) غير مدعومة من ROCm.

في 17 مايو 2017 15:18:32 GMT + 01:00 ، كتب Bryan Li [email protected] :

AMD راديون فيغا فرونتيرالإصدار

نواصل تحسين منصة البرامج المفتوحة ROCm لدينا بقوة
ومكتبات التعلم الآلي. نحن ندعم أيضًا الآلة المفتوحة
أطر عمل ذكاء مثل Caffe (تم إصدارها في أبريل). هذا في وقت لاحق
ربع السنة نخطط لتقديم الدعم لـ Torch ، و Tensor Flow موجود
الاعمال.

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -302103815

-
مُرسَل من جهازي الذي يعمل بنظام Android مع K-9 Mail. عذرا على الاختصار.

cathalgarvey لقد كنت أستخدم فرع Caffe OpenCL في وحدات معالجة الرسومات AMD وهو يعمل بشكل جيد. make run test في جميع الاختبارات باستثناء اختبار واحد

من الجيد سماع؛ هل لي أن أسأل عن إعداد HW / SW الخاص بك؟ على سبيل المثال ، أي بطاقة أنت
باستخدام ، ما هو توزيعة / إصدار Linux ، وما إلى ذلك؟

كان لدي في السابق AMDGPU-pro ، لكنني قمت بإلغاء تثبيته عند تثبيت ROCm.
من الممكن أن يكون هناك شيء موروث يتدخل معي.

-
onetruecathal / @ [email protected]

يوم الأربعاء ، 17 مايو ، 2017 الساعة 3:50 مساءً ، Bryan Li [email protected]
كتب:

cathalgarvey لقد كنت أستخدم فرع Caffe OpenCL في وحدات معالجة الرسومات AMD و
إنه يعمل بشكل جيد. جعل اختبار التشغيل اجتاز جميع الاختبارات باستثناء واحد

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع.

تضمين التغريدة

  • فرع Caffe OpenCL (تم اختباره c61d48746b2df1d237c64abc7416342ce98f3251 )
  • نظام التشغيل: Ubuntu 16.04.2 LTS
  • تم الاختبار على Polaris (RX460) و Fiji (Fury X) و Tonga (W7100)
  • برنامج التشغيل: برنامج تشغيل AMDGPU-Pro لنظام التشغيل Linux 16.40 أو أعلى
  • فيينا 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.

آه؛ كنت أتحدث عن hipCaffe ، وليس فرع OpenCL:

https://github.com/ROCmSoftwarePlatform/hipCaffe

تطلب مني تثبيت ROCm لبناء / اختبار hipCaffe إلغاء التثبيت
AMDGPU-pro ، ربما سأحاول فرع الفانيليا مرة أخرى. إنه سيء
موثقة ، للأسف .. أعتقد أنني سأحاول "صنع" أعمى وأرى.

لذلك ، ما زلت مهتمًا بسماع تجارب الآخرين مع AMD
مكدس ROCm / HIP ؛ إذا كانوا يعملون على شوكة Tensorflow فسيكون ذلك رائعًا ،
بشرط أن تعمل بالفعل على أكثر من 3/4 طراز من بطاقة AMD في
بري.

-
onetruecathal / @ [email protected]

يوم الأربعاء ، 17 مايو 2017 الساعة 4:09 مساءً ، Bryan Li [email protected]
كتب:

تضمين التغريدة

فرع Caffe OpenCL (اختبار الالتزام
c61d48746b2df1d237c64abc7416342ce98f3251)
نظام التشغيل: Ubuntu 16.04.2 LTS
تم الاختبار على Polaris (RX460) و Fiji (Fury X) و Tonga (W7100)
برنامج التشغيل: برنامج تشغيل AMDGPU-Pro لنظام التشغيل Linux 16.40 أو أعلى
فيينا 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 سيئة التنسيق بعض الشيء في الوقت الحالي (نعم ، كل مفترق الطرق). كما أنه لا يبدو أنه يعمل بشكل جيد على مجموعة كبيرة ومتنوعة من الأجهزة حتى الآن ، على عكس فرع OpenCL من Caffe ، على سبيل المثال ...

@ naibaf7 أوافق تمامًا.
بصراحة ، يبدو أنهم يفتقرون حقًا إلى الموارد البشرية ، فهم يعملون على جميع الجبهات.
بالمناسبة: لم أكن أعرف أن ETH لديها معلومات عصبية ؛) لطيفة!

cathalgarvey هل يمكنك توضيح مكدس ROCm / HIP لشخص عادي مثلي. لقد كنت ألعب AMGPU-pro و AMDGPU باستخدام بطاقات Sea Islands الخاصة بي لذا أنا متأكد من أنه يمكنني نشر بعض النتائج المفيدة.

تضمين التغريدة
لقد قاموا برعاية مشروع Caffe OpenCL الأصلي الخاص بي ، وللأسف لم ينسقوا بشكل جيد ، لذلك عمل بحث AMD وشخص مستقل في AMD أيضًا على منافذ OpenCL بشكل متوازٍ - أصبح فريق أبحاث AMD السابق الآن غير فعال ومعظمهم يعمل بالفعل لصالح Tesla ( مشروع سيارة ذاتية القيادة) الآن ... سلسلة أحداث مؤسفة.
ما زلت في تعاون واتصال بهم رغم ذلك. ستكون Vega مثيرة للاهتمام :)

@ naibaf7 لطيف ، أنت محظوظ! أتمنى لو كانت هناك مثل هذه الدراسات عندما كنت في Heig-vd لأستمر في الحصول على درجة الماجستير بالتأكيد.

نعم ... هذا ما كنت أحسبه. هناك الكثير من العمل والموارد البشرية القليلة المتاحة في هذه المجالات.

كل هذه الأشياء تبدو رائعة ، لكن دعنا نعيد تركيز المناقشة على عمل TensorFlow مع OpenCL SYCL وليس فقط الحلول الخاصة بالبائع ... :-)
آمل أن يكون لدى RoC و HiP الآخرين GitHub الخاص بهم لمناقشة قضاياهم الخاصة ...
@ naibaf7 : على الأقل ما زلت في عالم OpenCL. انضم إلى النادي مرة أخرى! :-)

@ keryell أعتقد أن المناقشة حول HIP صحيحة ، إذا كان هناك منفذ HIP لـ Tensorflow في الأعمال. بعد كل شيء ، فإن حل Tensorflow-on-CL الرسمي هو استخدام إطار عمل SYCL مملوك مع نظام أساسي محدود للغاية ودعم kernel ، لذلك فهو ليس أفضل من حلول HIP "الخاصة بالمورد" التي تقدم طريقة جديدة للخروج من CUDA.

قد يكون HIP في الغالب من AMD في الوقت الحالي ، لكن AFAIK هو معيار مفتوح؟ ربما أكون مخطئا. إذا كان الأمر كذلك ، وإذا كان بإمكان AMD توفير منفذ tensorflow-on-HIP ، فسيكون على الفور أكثر انفتاحًا من منفذ tensorflow-on-SYCL الرسمي.

HIP هو مجموعة فرعية من CUDA ، لذا فهو مفتوح مثل CUDA.

حسنا جيد؛ HIP-the-API هي مجموعة فرعية من CUDA-the-API ، ولكن ما لم تكن NVidia جبانة بدرجة كافية لبدء توجيه Oracle ، أشك في أن هذه ستكون مشكلة. كنت أشير إلى وقت التشغيل / المجمعين لـ HIP ، والتي أعتقد أن AMDs مفتوحة.

تحرير : آسف إذا ما ورد أعلاه يبدو وقحا ؛ فقط أحاول توضيح موقفي أعلاه!

cathalgarvey المناقشة صحيحة بوضوح ، لكن ليس هنا ...
أنت على GitHub هنا ، على المسار الصحيح تناقش منفذ TensorFlow & Eigen باستخدام معايير مجموعة Khronos.
هذا ليس Twitter أو جدار Facebook الخاص بك ... :-)
لذا يرجى المساهمة ببعض الالتزامات في هذه المشاريع! :-)

هناك إصدار جديد من دليل الإعداد لتجميع TensorFlow مع ComputeCpp ، وهو تطبيق Codeplay لـ SYCL ، بحيث يمكن استخدام أجهزة OpenCL. سنكون ممتنين لأي تعليقات يمكن أن تقدمها لنا بشأنها. https://www.codeplay.com/products/computesuite/computecpp/guides/how-to-setup-tensorflow-with-computecpp

هل لديك أي فكرة عن معدل النجاح للحصول على هذا العمل على AMD gpus غير المختبَر؟ أنا مهتم بشكل خاص إذا تم اختباره لـ AMD Radeon Pro 460rodburns. سأكون سعيدًا لقضاء بضع ساعات في تشغيل ubuntu على الكمبيوتر المحمول Macbook الخاص بي إذا كان هناك أي أمل في وجود وحدة معالجة رسومات (GPU) غير مختبرة

samhains لم نختبر هذا ولكن يمكنك تجربته. ستحتاج إلى استخدام بعض برامج تشغيل AMD الأقدم مع Ubuntu التي تدعم امتداد SPIR. لم أتمكن بعد من معرفة ما هي السائقين حتى الآن.

samhains إذا فشل مسار codeplay في التسليم ، فلا تفوّت فرصة tf-coriander ، التي أصبحت أخيرًا في حالة استخدام عملي على Ubuntu / Mac.

أنا أختبرها حاليًا على convnets ، و rnns ثنائية الاتجاه ، وما إلى ذلك ويبدو أن كل شيء يعمل بشكل رائع. إنه يعمل على "الفانيليا" OpenCL 1.2 ، لذلك من المفترض أن يتيح Tensorflow على مجموعة كبيرة من الأجهزة القديمة نسبيًا.

تكمن المشكلة ، في الوقت الحالي ، في أنها تستند إلى Tensorflow 0.11.

تضمين التغريدة حاولت اتباع الخطوات المذكورة على الرابط 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: تضمين (ق) غير معلن في القاعدة 'protobufso / //: pyobim / google. ":
في الواقع ، أحصل على نفس الخطأ إذا حاولت تجميع Tensorflow من المصدر. لقد قمت بتجميعها في وقت سابق ، ولست متأكدًا مما تغير بالرغم من ذلك.

rahasayantan ما الذي يتم تضمينه؟ وكذلك هل تحصل عليه عند التحويل البرمجي بدون --config = sycl؟

lukeiwanski : المشكلة كما فهمت هي أن Bazel تحاول تجميع Protobuf وعدم العثور على الدلائل الفرعية أو تنزيلها. لقد أجريت سحبًا باستخدام الوحدة الفرعية العودية التي لا تزال تعاني من نفس المشكلات. ولها نفس المشكلة بدون --config = sycl. في الواقع ، أواجه نفس المشكلة عندما أقوم بعملية سحب من مشروع tensorflow الرئيسي. لا أعتقد أن هذا مرتبط بـ openCL ، فهناك بعض المشكلات المتعلقة بالطريقة التي أفعل بها السحب. عندما أقوم بتنزيل ملف zip الخاص بالمشروع يدويًا من الريبو الخاص بك دون git and compile ، فإنه يتم تجميعه بشكل صحيح ، ولكن بعد ذلك أحصل على خطأ في التجزئة. لقد أثرت بالفعل هذه المشكلة على مشروع GIT الخاص بك ونحن نتحدث هناك ، وسأقدم التحديثات المتعلقة بخطأ التجزئة في هذا الموضوع (لا توجد نقطة تكرار للأشياء). شكرا لأستجابتك.

triSYCL مفتوح المصدر قادم. راجع https://github.com/triSYCL/triSYCL/pull/45

أنا جديد هنا. مهتم جدًا برؤية OpenCL يدعم TF. كيف أحصل على تحديثات من هذا الموضوع؟

emmm ... ممتع ، لكن لماذا؟ أعني لماذا تختار Tensorflow cuda لكن opencl في البداية؟ بعض الأسباب التجارية على ما أظن؟

مرحبًا @ tensorflower-gardener ،

أنشأتhughperkins كزبرة يمكنها تشغيل كود NVIDIA® CUDA ™ على أجهزة OpenCL 1.2. قد ترغب في إلقاء نظرة إذا كان ذلك يناسب حاجتك لتوصيل TF بأجهزة OpenCL 1.2. يرجى ذكر اسمه ومساهمته في حال كنت تخطط لاستخدام عمله.

يبدو أن الآمال في رؤية دعم 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 ، لذلك إذا / عندما يصل إلى تكافؤ الإصدار ، يجب أن تكون قادرًا على استخدام ذلك.

في 22 يونيو 2017 الساعة 11:46:51 بتوقيت وسط أوروبا الصيفي ، كتب dylib [email protected] :

يبدو أن الآمال في رؤية دعم 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

-
مُرسَل من جهازي الذي يعمل بنظام Android مع K-9 Mail. عذرا على الاختصار.

حزين لأنه الآن مع eGPU و n Nvidia 980 Ti بالداخل ، نحصل على سائق يعمل ويعمل Cuda

لم يكن لدي الوقت الآن لتجربة Tensor Flow في تهيئتي حتى الآن.

تم تثبيت webdriver و Cuda على جهاز الكمبيوتر الخاص بي وتعمل عينات Cuda بشكل جيد

https://youtu.be/JN9fDmqf010

cathalgarvey قلت إنك تختبر الأقفال على tf-coriander ، لكن لا يبدو أن الأقفال تعمل بعد. هل يمكنك توضيح ما إذا كنت قد تمكنت من تشغيل مجموعات تحويل على وحدة معالجة الرسومات باستخدام tf-coriander؟

لماذا لم يعد Tensorflow يدعم وحدات معالجة الرسومات على OS X؟ كنت أخطط لاستخدام Tensorflow مع إعداد eGPU عند الطلب.

justinrmiller يزعمون أنهم لا يستطيعون اختباره بعد الآن على نظام التشغيل mac ، وبالتالي قرروا إيقاف الدعم. ومع ذلك ، أجد صعوبة في تصديق ذلك. المضي قدمًا مع إعلان egpus على سييرا العالية ومع برامج تشغيل nvidia الجديدة ، لن يكون هذا هو الحال بعد الآن.

tscholak نعم بالضبط. كنت سأستخدم حاوية egpu الجديدة الخاصة بي للتخلص من صندوق النوافذ الخاص بي إلى الأبد.

مع الأخذ في الاعتبار أنه على الرغم من أن بطاقات Nvidia تعمل في حاويات eGPU ، فإن Apple ستدعم RX580 رسميًا فقط في مجموعة أدوات التطوير الخاصة بها ، لذلك لن تختفي الحاجة إلى OpenCL.

OpenCL على Mac هو 1.2 مما يعني أنه لا يوجد برنامج تشغيل نشط على ما يبدو
تطوير. أعتقد أن إضافة الدعم المعدني إلى TF هي عملية مضنية
(تمكين Eigen ومنفذ الدفق) ولكن يمكن تحقيقه.

يوم الأحد 16 يوليو 2017 الساعة 3:17 مساءً Ferdia McKeogh [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
.

أنا حزين جدًا بشأن التخلي عن دعم GPU لنظام macOS.

ما زلت تبحث عن دعم OpenCL لوحدة معالجة الرسومات على macOS لأن Apple ، من الواضح ، لن تتغير إلى Nvidia GPUs في أي وقت قريب.

Tensorflow هو المحرك المفضل لدي. سيكون استخدام تسريع GPU محليًا على جهاز MacBook Pro أو iMac Pro المستقبلي أمرًا رائعًا.

بالنسبة لشركة Microsoft ، سيكون من المنطقي تخريب Apple ، ولكن نظرًا لأن Google ليس لديها نظام تشغيل سطح مكتب ، فإنهم يؤذون أنفسهم فقط.

بصراحة ، يجب على شخص أكثر ذكاءً مني التفكير في دمج نظام MPS - MPS - تظليل الأداء المعدني لنظام التشغيل Mac OS 10.13 والذي يدعم مجموعة كبيرة من العناصر الأساسية للشبكة العصبية خارج الصندوق. سيسمح ذلك بنشر استنتاج Tensorflow للهاتف المحمول وسطح المكتب و macOS.

لا يمكنك التدرب على بدائيات التفاح كما أفهمها (فهم لا يقدمون أي شيء) ، ولكن مع دعم Tensorflow ، ربما يمكنك ذلك؟ أتخيل أنها ستكون نعمة للأشخاص على منصة Apple.

لا أعتقد أن Google ستوفر هذا داخليًا ، وليس لدي المهارات اللازمة تقريبًا لمحاولة ذلك بنفسي. نشر هذه الفكرة بحيث يكون الأشخاص موهوبين أكثر مما قد أتقبلها.

:)

تهدف Apple فقط إلى بيع أجهزة Apple. تهدف Google إلى توظيف خدمات Google الضخمة.

إذا كنت على استعداد للقيام بـ AI (التعلم) باستخدام جهاز واحد ، مثل كمبيوتر محمول Apple واحد ، فستقوم بـ "التعلم السطحي" بدلاً من "التعلم العميق" ، لذلك من الأفضل أن تتخلى عن القيام بأي شيء سوى البرامج التعليمية. ينتج عن الاستدلال نموذج مدرب لمستخدم واحد ، في جهاز واحد (حتى في هاتف ليس به العديد من الأجهزة متعددة النواة) ، يمكن أن يكون أنيقًا من خلال وحدات معالجة الرسومات ، ولكنه يمكن تنفيذه تمامًا فقط باستخدام وحدات المعالجة المركزية.

على الجانب الآخر ، هناك حاجة ماسة لوحدات معالجة الرسومات إذا كنت ستقدم مجموعات بيانات كبيرة للغاية للتعلم أو ستقدم استنتاجًا مدربًا لمجموعات عملاء متزامنة كبيرة للغاية.

على الرغم من أن القيام بذلك بهذا الحجم ، ليس بهذه السهولة بسبب مشكلات الشبكة. ما عليك سوى إلقاء نظرة على الهندسة المعمارية المادية لـ TPU-Pods. إنه موجود في نقيض الكمبيوتر المحمول (العديد من وحدات معالجة الرسومات لكل خادم متعدد النواة مثقل بالذاكرة ، مع ألياف ضوئية مخصصة للاتصالات بين الخوادم).

لدي جهاز MacBook Pro. إنها محطة جميلة للوصول إلى السحابة :- D

أرى أن TF on Metal يمكن أن يمتد إلى iOS أيضًا. إذا كان أي شخص مهتمًا باستلامه ، فإنني أوصي بإضافة دعم معدني إلى Eigen أولاً (يمكن استخدام OpenCL كمرجع).

rogerpasky بالنسبة للمدرسة ، كان علي استخدام Tensorflow لنماذج التدريب ، وليس فقط لتقييم النموذج. وسأضطر إلى تكرار هذا مرة أخرى في المستقبل القريب. بالنسبة للطلاب مثلي ، فإن التدريب على GPU أمر لا بد منه ، مما يوفر الكثير من الوقت. لا يقتصر الأمر على خدمة عدة مستخدمين متزامنين فقط.

rogerpasky يتعلق الأمر بالقدرة على تطوير النماذج والحلول محليًا على جهاز Mac

rogerpasky أختلف باحترام. بينما تعمل حلول GPU المتعددة المستندة إلى السحابة بشكل رائع لخدمات الإنترنت ، فأنا أستهدف خطوط أنابيب إنتاج الفيديو الاحترافية حيث يتم تشغيل الاستدلال على ساعات وساعات من لقطات HD و 2K و 4K غير المضغوطة ، والتي أ) لا يوجد منزل إنتاج سوف يتم التحميل إلى سحابة ، ب) لا يريدون google أو أي شخص لديه بياناته ، ج) لديهم غرف مليئة بأنظمة متعددة قادرة على GPU (Mac و Windows) محليًا يرغبون في الاستفادة منها ، و د) أثناء الاستدلال على صورة واحدة جيد على وحدة المعالجة المركزية ، تشغيل أفلام كاملة للاستدلال من خلال رسوم بيانية متعددة يرى 100٪ زيادة في الأداء باستخدام شيء مثل MPS vs CPU. نظرًا لأن المجتمع رفض دعم / احتضان المعايير وبدلاً من ذلك يستخدم رمز Nvidia فقط ، فإن حالات الاستخدام في العالم الحقيقي تتعرض لحفر حمامة وهذا عار حقًا.

هذا ليس طلبًا خاملًا من شخص هاوٍ يقوم بتشغيل البرامج التعليمية - الاستدلال GPU مهم مثل دعم عائلات GPU / CPU المتنوعة لأحمال العمل المتنوعة على أجهزة العالم الحقيقي. آمل حقًا أن تأخذ Google هذا الأمر على محمل الجد ، لأنه سيكون من الرائع التمسك بمكتبة واحدة مثل TF ، وهو أمر رائع.

شكرًا لسماعك لي ، فأنا لا أحاول الصراخ ، ولكن لتقديم وجهة نظر بديلة للمجتمع.

pldelisle ، tscholak ، vade من فضلك لا تفهموني خطأ. أحب أن أحصل عليه ، وإذا بحثت في هذا الموضوع ، فقد انضممت إليه بصفتي مؤيدًا ، ولكن بقدر ما كنت أتابعها ، فقد توصلت إلى الاستنتاج الذي كتبته ، ليس فقط لأني أعتقد ذلك (أعتقد أن سوف يذوب MacBook إذا تم تدريبه على آلاف مقاطع الفيديو :- D) ، ولكن مع حقائق الصناعة الفعلية. لا تنتظر حتى يتم حلها في إطار زمني قصير (IMHO ، لن يتم حلها أبدًا لأن Apple و Google يكرهان بعضهما البعض منذ مشكلة iPhone / Android).

rogerpasky كان هناك بالفعل دعم لوحدات معالجة الرسومات nvidia على نظام التشغيل Mac OS. تمت إزالته للتو في 1.2.

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

لقد ألغيت طلبي للحصول على eGPU (Sonnet's) وسأقوم فقط بتشغيل Linux مزدوجًا على منصة الألعاب الخاصة بي ، ولكن هذا أمر سيء أن تتوقف عن دعم شيء كان يستخدمه الناس. كنت أتمنى حقًا القيام بذلك على جهاز Mac الخاص بي باستخدام eGPU (تدريب نموذجي) ، لكن أعتقد أن هذا لن يحدث الآن: https://github.com/lengstrom/fast-style-transfer

rogerpasky Er ، هل تعلم أن CoreML يدعم استيراد نماذج تدفق الموتر عن طريق Keras؟ Apple لا تكره Google ، العمل هو العمل التجاري ، أحد موردي Apple هو Samsung. اقرأ في ذلك للحظة. تعد Google و Apple و Samsung شركات وستفعل ما يربح المال. كملاحظة جانبية. بالمناسبة ، لم يذوب جهاز MacBook Pro الخاص بي من تشغيل الاستدلال على آلاف الأفلام .. أظن أن CUDA كان ملائمًا للغاية للتبني والدعم المستمر من Nvidia وقد أوصلنا إلى ما وصلنا إليه من فرص ضائعة من AMD. لا أعتقد أنه أمر شنيع ، فقط تكلفة إجراء تغيير مقابل دلتا الأداء مقابل تكلفة البقاء في الدورة التدريبية.

أظن أن بعض العبقرية سيأتي للمساعدة في حل المشكلة.

لقد أنشأت مجموعة Google لإجراء مناقشة تعاونية حول جلب التعلم العميق إلى أماكن جديدة مثل OpenCL و Mac و iOS و CoreML و Vulkan وما إلى ذلك. إذا كنت ترغب في المساعدة في تحقيق ذلك ، فيرجى الانضمام ونشر ملاحظة باستخدامك حالة أو أي جزء من المشكلة تعمل عليه. هناك بالفعل أشخاص يعملون بجد على الجهود المبذولة لجلب TF إلى المزيد من المنصات بما في ذلك MIOpen وعمل Codeplay و TF-Coriander ومشروع داخلي في شركتي (Vertex.AI). سيكون من الرائع الحصول على المطورين والمستخدمين في مكان واحد لأن هذه الجهود كلها مرتبطة ارتباطًا وثيقًا.

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

تضمين التغريدة
ReNgo_Sport ههههههههههههههههههههههههههههههههههه _ _ _ _

justinrmiller لدي eGPU على Sierra (Titan Xp في حاوية Sonnet) يشغل Tensorflow 1.2.1 (CUDA 8 ، cuDNN 6) والذي لم يكن مشكلة كبيرة إذا كنت لا تمانع في البناء من الصفر. إذا كان لديك أي مشكلة أعلمني.

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 كيف حصلت على tf 1.2 للبناء مع cuDNN 6؟ هل استخدمت LLVM؟ مجلس التعاون الخليجي؟ تمكنت فقط من الحصول عليه للبناء باستخدام cuDNN 5 ...

لمعلوماتك ، https://machinelearning.apple.com/

tscholak لن أنشره هنا للاحتفاظ بهذا على OpenCL لكني سألخص الخطوات هنا .

choongng لقد انضممت إلى مجموعة Google ولكن يبدو أن الأمر هادئ. لذلك سوف أصرخ هنا ؛-)

  1. التعلم الآلي / الأداء العالي / حوسبة GPU هي سوق تنافسي بشدة. تهيمن NVidia ، سواء أعجبك ذلك أم لا ، على السوق وتحافظ على بطاقاتها وبرامجها قريبة من السترة. إذا كانت لديك ميزانية وموعد نهائي ، فأنت عالق إلى حد ما مع NVidia في الوقت الحالي.

  2. لدي بطاقة AMD قديمة ("بونير") وميزانية صفرية - هاوي. لقد حصلت على caffe مع تطبيق AMD OpenCL 2 الخاص بالملكية على Arch Linux اعتبارًا من الأمس ، وحصلت للتو على مصدر مفتوح من AMD MIOpen يعمل بنفس الطريقة هذا الصباح. سيتيح لي ذلك تدريب بعض النماذج ؛ تبلغ ذروتها Bonaire حوالي 1800 GFLOPS أحادية الدقة. لذلك إذا لم يتم تشغيل TensorFlow مع OpenCL على Bonaire ، فلن أستخدم TensorFlow.

  3. إذا ظهرت الميزانية بطريقة سحرية ، فسوف أشتري وحدة المعالجة المركزية Intel وبطاقة NVidia وتشغيل البرامج الاحتكارية المدعومة من البائع. لقد انتهيت من إجراء ضمان الجودة بدون أجر للبائعين مثل Google و Red Hat و Canonical و AMD.

    لقد استغرق الأمر ثلاثة أشهر (وثلاث توزيعات - Fedora 25 و Ubuntu 16.04 LTS و Arch) للحصول على شيء من وحدة معالجة الرسومات التي أمتلكها لمدة ثلاث سنوات. هناك أخطاء غير مثبتة في متتبع الأخطاء في Fedora تحمل اسمي عليها. الشيء نفسه ينطبق على Ubuntu و Freedesktop.org. معظم الأشخاص الذين يقومون بإصلاحها لا يتقاضون رواتبهم أيضًا ، أو أنهم يتقاضون رواتبهم للقيام بشيء آخر.

    نعم ، وحدات المعالجة المركزية الجديدة من AMD مثيرة للإعجاب ، ونعم ، معظم برامجها مفتوحة المصدر ، لكن الميزانيات والمواعيد النهائية تغير الأمور. الدعم هو المفتاح. الدعم هو كل شيء!

znmeb لم أكن أعرف حتى أنه يمكنك استخدام أجهزة GCN السابقة لـ TF.
مع تاهيتي لدي دعم رمى توزيعة واحدة (ubuntu 14.01.x) لأن برامج تشغيل AMD تعمل فقط مع نواة لينكس الأقدم لـ GCN1. (أحصل على TF + openCL عبر SYCL (لم يتم اختباره في 7970))

حيث أعمل ، يدير قسم البحث والتطوير بأكمله فريقًا صديقًا للبيئة. جميعهم حاصلون على درجات الدكتوراه وجميعهم كتبوا سطرًا واحدًا من cuda (ولا OCL) باستثناء أي منهم. لكن الأدوات هنا لتسريع عبء العمل Keras . أنا من النوع غريب الأطوار مع وحدات معالجة الرسوميات المُعاد تدويرها الخاصة بي والتي تحاول الضغط على حياة ثانية منها.

tl ؛ لن يظهر dr بخلاف دعم الفريق الأخضر إلا إذا ظهرت حصة السوق من AMD GPU.
إنها مشكلة الدجاج والبيض. لدي آمال في vega ... ولكن نعم ... ليس قاتل 1080Ti.

acoye FWIW ، ها هو منشور GitHub الذي جعلني أذهب في نهاية هذا الأسبوع بعد سحقه والبحث على Google منذ أبريل: https://github.com/BVLC/caffe/issues/5804#issuecomment-318789942 . راجع أيضًا https://github.com/cdeterman/gpuR/issues/77#issuecomment-318814154 . كانت هذه هي مشكلتي الأصلية - محاولة استخدام Bonaire لتسريع الجبر الخطي على R.

تضمين التغريدة
يمكنك الانتقال إلى أحدث توزيعات Linux واستخدام نواة مجمعة مخصصة حديثة مثل 4.11 / 4.12 مع تمكين برامج تشغيل AMDGPU وتعطيل RADEON ومع تعيين CONFIG_DRM_AMDGPU_SI=Y و / أو CONFIG_DRM_AMDGPU_CIK=Y في تكوين kernel ، بالإضافة إلى برنامج AMD الثابت لـ 7970 (تاهيتي) في initramfs => ستعمل أحدث AMDGPU-PRO OpenCL على أي بطاقات GCN. انس أمر FGLRX (على توزيعات Linux الأقدم) و Clover عبر برامج تشغيل RADEON ، كلاهما دون المستوى.
انس أمر بطاقات GCN السابقة أيضًا. لقد اختبرتهم باستخدام OpenCL على Windows لـ Caffe ، فالأداء لا يستحق بذل جهد لمثل هذه البطاقات القديمة. نظرًا لأن جميع بطاقات AMD بعد عام 2012 يجب أن تكون GCN على أي حال.

@ naibaf7 قضيت بضع ساعات أمس أحاول تشغيل مكدس AMD مفتوح المصدر. لقد حصلت على MIOpen وتبعياته ولكن hcc لا يزال ينقصني بعض البتات. قد أحتاج إلى إنشاء نواة مخصصة للحصول على كل شيء. لا أهتم كثيرًا بنقل كود CUDA أو تشغيل C ++ المترجمة على وحدة معالجة الرسومات - أريد أن أقوم بتحليل الأرقام عليها. ؛-)

لقد رأيت أيضًا شيئًا ما على موقع الويب الخاص بهم حول البرمجة في المجمّع - وقد أكون مهتمًا به ، لأنه من السهل الانتقال من المجمع إلى FORTH. ؛-)

znmeb نعم ، أحاول أيضًا الحصول على بعض عناصر MIOpen و TensorFlow التي تعمل على RX 480 الخاص بي ، لكنني لا أرغب في تدمير جهاز التطوير الرئيسي الخاص بي ، لذلك بدلاً من ذلك ، أستخدم المحاكاة الافتراضية IOMMU وأستخدم جهازًا ظاهريًا Ubuntu 16.04 يمكنه استخدام RX 480. تعد برامج تشغيل AMD صديقة للغاية للمحاكاة الافتراضية (على عكس برامج تشغيل nVidia المصممة لبطاقات الألعاب - فقط برامج تشغيل Quadro تفعل ذلك).

znmeb كل ما عليك فعله هو sudo apt-get install rocm miopen-hip

adityaatluri إنه موجود في مستودع مستخدم Arch ولكنه لا يتم تثبيته - لا يتم تثبيته من مصدر GitHub أيضًا. يبدو أنه شيء بسيط - لا يمكنه العثور على بعض التبعيات.

znmeb هل يمكنك إنشاء مشكلة هنا (https://github.com/RadeonOpenCompute/ROCm/issues) حتى نتمكن من مناقشتها هناك؟ شكرا!

adityaatluri بالتأكيد - أنا ذاهب لتناول العشاء ولكني سأقدمها عندما أعود

ebrevdo هل من طريقة لاستخدام وحدة معالجة الرسومات Tensorflow في نظام Mac مع معالج AMD؟

تعمل شركتي على التعلم العميق OpenCL لفترة من الوقت ولدينا بعض النتائج المبكرة لإظهارها. نحن نركز على Keras في المدى القريب ، لكننا قمنا أيضًا ببناء دعم TensorFlow التجريبي (للغاية) وسنعيد النظر في ذلك بعد الإصدار الأولي. مزيد من التفاصيل هنا بما في ذلك أرقام الإنتاجية الأولية على AMD: http://vertex.ai/blog/bringing-deep-learning-to-opencl

بارد!

nitpick صغير: AFAIK ، MIOpen ليس خاصًا بـ AMD ، حيث يمكن ربطه بـ OpenCL وكذلك بـ ROCm. ربما يكون الأخير أسرع ، لكنه لا يزال ؛ تعد MIOpen خطوة كبيرة إلى الأمام لشريحة "Open Source Neural Networks On GPU" ، وتستحق AMD مصداقية كبيرة لها إذا كانت تعمل بشكل جيد على OpenCL.

14 أغسطس ، 2017 5:19 مساءً ، كتب "Choong Ng":
تعمل شركتي على التعلم العميق 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 مدعومة حتى الآن؟

استخدام مصدر مغلق دقيق لا يعمل إلا على تركيبة واحدة قديمة جدًا من Kernel / OS (لغة البرمجة): نعم

باستخدام نسخة قديمة من Tensorflow وبدون دعم لبعض اللاخطية حتى الآن (tf-coriander): نعم.

حقا: ليس رسميا. على الرغم من أن AMD تنتقل إلى HIP ، لذلك أتوقع حدوث تقدم في غضون 3 أشهر أو نحو ذلك. تعمل الأطر الأخرى بالفعل بشكل جيد بسبب جهودها.

في 18 أغسطس 2017 ، الساعة 02:09:55 بتوقيت غرينتش + 01:00 ، كتب abrad1212 [email protected] :

انتظر ، لقد كنت أقرأ هذا الموضوع / المشكلة لمدة 10 دقائق الآن. حصلت في منتصف الطريق
من خلال وتخطيت الباقي. هل وحدات معالجة الرسومات AMD مدعومة حتى الآن؟

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -323233294

-
مُرسَل من جهازي الذي يعمل بنظام Android مع K-9 Mail. عذرا على الاختصار.

FWIW أعتقد أن الإصدارات الأخيرة من PyGpu يمكنها استخدام CUDA أو OpenCL. لديّ جميع البرامج المثبتة على صندوق آرتش الخاص بي ، لكنني لم أختبرها بعد.

@ abrad1212 نعم ، هذه المشكلة موجودة منذ فترة حتى الآن. الجهود هائلة والكثير من الناس يحاولون "تشغيله" كما ذكر cathalgarvey .

قليلا من التحديث من جانبنا. يجب أن تكون قادرًا على استخدام ComputeCpp 0.3.0 في حزمة برامج التشغيل AMDGPU-pro لـ Ubuntu 16.04 ، يمكن العثور على الإرشادات هنا: http://deep-beta.co.uk/tensorflow-1-3-on-ubuntu-16 -04 لتر /

بالإضافة إلى ذلك ، نحن نركز الآن على تحسينات الأداء لنماذج مختلفة - هناك الكثير لنفعله ولكننا نحقق ذلك.

lukeiwanski ما هو أسلوبك في المقارنة المعيارية؟ نقوم بضبط الوقت على النماذج المضمنة مع Keras والتطبيع ضد TF + cuDNN + K80 لأن هذا تكوين شائع ومحسّن جيدًا. منهجيتنا مشابهة لمنهجية ماكس وولف (http://minimaxir.com/2017/06/keras-cntk/) ، إنها ليست برمجية كثيرة ولكننا سنكون سعداء بمشاركتها. لدينا بعض أرقام الإنتاجية على موقعنا على الويب (http://vertex.ai) ، الكود الخاص بنا أسرع قليلاً جدًا من TF 1.2 في استنتاج Xception وسيكون من المثير للاهتمام مقارنة المزيد من الأساليب جنبًا إلى جنب.

هل توجد أي حلول للويندوز؟ أود تثبيت Ubuntu على جهاز الكمبيوتر الخاص بي ولكن ليس لدي حاليًا مساحة كافية للقيام بذلك.

أوبونتو 14.04.2018
فرع tensorflow الرئيسي
بناء دعم opencl ، وتثبيت فقط opencl intel cpu runtime.
بيثون 2.7
اتبع https://developer.codeplay.com/computecppce/latest/getting-started-with-tensflow دليل
قم بتنفيذ python classify_image.py
يبدو أنه لم يستدعي سائق opencl. (لقد أضفت غلاف OpenCl icd الخاص بي ، لم أر أي شيء)
هل هناك حاجة لتكوين إضافة في كود بايثون؟
مثل sess.graph.device ('/ cpu0')

ولكن إذا استخدمت دليل Eigen skcl ، فيمكن تشغيله على وحدة المعالجة المركزية بدعم OpenCL. (أيضًا رمز الدليل هذا قديم قليلاً ، بحاجة إلى بعض التعديل)
https://developer.codeplay.com/computecppce/latest/getting-started-with-eigen

يمكن لأي شخص المساعدة في التحقق من كيفية تشغيل واجهة tensorflow python بدعم OpenCL.

ولن يؤدي إنشاء Tensorflow باستخدام مجموعة الخيارات هذه إلى إنشاء برنامج Tensorflow الثنائي. --config = سيكل
فقط قم ببناء Tensorflow في هذا الأمر:
bazel build -c opt / tensorflow / tools / pip_ package: build_pip_package

ربما أقوم ببناء نسيت --config = sycl
سأحاول بناء الأمر والتحقق مما إذا كان يمكنه استدعاء مكتبة OpenCL. بعد الحصول على النتيجة ، سوف أنشر هنا.
bazel build -c opt tensorflow / tools / pip_ package: build_pip_package

@ joe8086 إذا قمت بتعديل إنشاء جلسة tf مع ما يلي فسيظهر سجل في الجهاز ، فهل هذا يذكر SYCL في أي مكان؟
tf.Session (config = tf.ConfigProto (log_device_placement = True))

بالنسبة إلى دليل Eigen ، هل لديك أي ملاحظات محددة حيث تكون قديمة؟

rodburns شكرا.
خطئي هو إنشاء خيار تكوين tensorflow Miss --config = sycl
بعد إضافة هذا الخيار مع رمز الفرع هذا https://github.com/lukeiwanski/tensorflow.git
أستطيع أن أرى tensorflow يعمل مع OpenCL backend.

بالنسبة إلى دليل Eigen ، يكون الخطأ الرئيسي في:
1 ، لا تعطي الملف الصحيح.
2 ، للصفيف ، Tensor ، TensorMap لا تعطي معلمة الهيكل الصحيحة.
3 ، ل static_cast لا تعطي نوع البيانات.

إضافة المزيد من المعلومات التي قد تعطي بعض المساعدة لموضوع المناقشة هذا.
1 ، لا يمكن لتدفق التوتر الرئيسي بناء تدفق موتر مع تكوين = سيكل صحيح.
2 ، مع CPU OpenCL ، تكون السرعة حوالي 4x ~ 8x مرات تنفق من تنفيذ وحدة المعالجة المركزية العادية في بيئتي.

الوقت بيثون classify_image.py
2017-09-07 16: 56: 29.076054: I tensorflow / core / platform / cpu_feature_guard.cc: 137] تدعم وحدة المعالجة المركزية الخاصة بك التعليمات التي تفيد بأن TensorFlow الثنائي لم يتم تجميعه لاستخدامه: SSE4.1 SSE4.2 AVX
2017-09-07 16: 56: 29.077967: W ./tensorflow/core/common_runtime/sycl/sycl_device.h:49] لم يتم العثور على OpenCL GPU المدعوم بواسطة ComputeCpp ، محاولة OpenCL CPU
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] المعرف: 0 ، النوع: CPU ، الاسم: Intel (R) Core (TM) i7-6700HQ CPU @ 2.60 جيجاهرتز ، البائع: Intel (R) Corporation ، الملف الشخصي: FULL_PROFILE
2017-09-07 16: 56: 30.213375: W ./tensorflow/core/framework/op_def_util.cc:333] تم إهمال Op BatchNormWithGlobalNormalization. سيتوقف عن العمل في الإصدار 9. من GraphDef. استخدم tf.nn.batch_normalization ().
الباندا العملاقة ، الباندا ، الدب الباندا ، الدب الراعي ، Ailuropoda melanoleuca (الدرجة = 0.89107)
إندري ، إندريس ، إندري إندري ، إندري بريفيكاوداتوس (الدرجة = 0.00779)
الباندا الصغرى ، الباندا الحمراء ، الباندا ، القط الدب ، القط الدب ، Ailurus fulgens (الدرجة = 0.00296)
تفاح الكاسترد (الدرجة = 0.00147)
إيرث ستار (الدرجة = 0.00117)

1 دقيقة حقيقية
المستخدم 2m8.980s
1 شهر 20.024 ثانية

يا رفاق ، لن أقرأ هذا الموضوع بأكمله ، لكن إذا تمكن أحدهم من الإجابة على سؤالي فسيكون ذلك رائعًا! هل يمكنني استخدام Tensorflow مع وحدة معالجة رسومات AMD حتى الآن. إذا كان الأمر كذلك في أي نظام تشغيل ، وهل يمكنني القيام بذلك باستخدام RX Vega؟ شكرا!

@ M3L0NM4N Hmmm ... لم أتابع الموضوع ولكن يبدو أنه من المحتمل أن يكون هناك كود OpenCL قابل للاختبار الآن ، على الأقل على CPU OpenCL. لديّ وحدة معالجة رسومات AMD أقدم ("Bonaire") ولدي OpenCL يعمل على كل من GPU و CPU ، لذا يمكنني اختبار ذلك. قد ألتقطها خلال عطلة نهاية الأسبوع ؛ أريد حقًا OpenCL TensorFlow على وحدة معالجة الرسومات الخاصة بي.

tf- الكزبرة يعمل https://github.com/hughperkins/tf-coriander

أي دعم tensorflow 1.3 gpu / opencl موجود على macOS؟

آخر الأخبار: لقد نجحت في بناء TensorFlow 1.3.1 باستخدام OpenCL من مصدر GitHub. هناك عدد غير قليل من الأجزاء المفقودة في الوثائق ، ولم أحاول تشغيل أي شيء في وحدة معالجة الرسومات حتى الآن ، لكنها على الأقل تعمل مع وحدة المعالجة المركزية غير OpenCL. راجع للشغل ، ليس لدي وحدة المعالجة المركزية OpenCL مثبتة ، فقط GPU OpenCL.

هل لدى أي شخص أي حالات اختبار لـ TensorFlow باستخدام وحدة معالجة رسومات OpenCL؟ سأضطر إلى بناء واحدة لنفسي في النهاية ولكني كنت آمل في إجراء فحص سريع.

znmeb نعم ، هناك تطبيق اختبار في المشكلة أبلغت عنه. https://github.com/hughperkins/tf-coriander/issues/64

هل يمكن أن تخبرني إذا كان يعمل في حالتك؟

unoexperto نعم - إنه يعمل (لا يتعطل) ولكن لا يوجد ما يشير إلى ما إذا كان قد عثر على OpenCL أم لا.

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

أعتقد أن أفضل إجراء هنا هو تقديم مشكلة منفصلة لطلب التوثيق ، لأنه من الواضح (عند تشغيل ./configure build from source) أن هناك كود OpenCL. هذه هي الطريقة التي وجدتها ، على أي حال.

znmeb أشك في أنه عثر على جهاز GPU في حالتك لأنه قام بطباعة معلومات تصحيح الأخطاء في البداية حول اختيار جهاز GPU. ربما يمكنك إعادة التحويل البرمجي باستخدام printf المضافة لوحدة التحكم في مكان ما في tensorflow/core/common_runtime/gpu/gpu_device.cc .

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. المملكة المتحدة / Tensorflow-1-3-on-ubuntu-16-04-lts /

rodburns Clinfo و clpeak كلاهما قيد التشغيل. لم أفعل هذا مؤخرًا ، ولكن عندما أقوم ببناء كافيه من المصدر وإجراء الاختبارات ، فإنه بالتأكيد يضرب وحدة معالجة الرسومات. لذلك أنا متأكد من أن برامج تشغيل / مكتبات OpenCL / GPU تعمل.

أنا على Arch Linux - kernel هو LTS - linux-lts 4.9.52-1. إذا كان الأمر مهمًا ، فإن "Bonaire" تبلغ ذروتها حوالي 1.7 TFLOPS في وضع 32 بت وهي في عائلة "Sea Island" من وحدات معالجة الرسومات AMD.

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

هل يقوم شخص ما بجمع سجلات الاختبار؟ تقول أن جهازي لم يتم اختباره ، لذا سأختبره. ؛-)

من المستحيل بالنسبة لي إنشاء TensorFlow لـ Sycl / OpenCL!

التكوين:
نظام التشغيل Ubuntu 16.04.0
Tensorflow R1.3
OpenCL 2.0
ComputeCpp CE 0.3.2 (computecpp_info موافق)
بطاقة رسومات Intel HD Graphics 620
بازل 0.5.4

تعليمات التثبيت (OpenCL Intel / ComputeCpp build):
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 *)')

تستغرق نماذج التدريب على وحدة المعالجة المركزية الخاصة بي وقتًا طويلاً ، وأحتاج حقًا إلى تسريع 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/
ستكون جميع التغييرات في المنبع لتدفق التوتر بعد أن تكون تغييرات Eigen المذكورة سابقًا في مكانها.

امل ان يساعد.

lukeiwanski هل تدعم الشوكة فقط AMD R9 Nano / AMD FirePro GPU؟

lukeiwanski هل هناك حالة اختبار يمكنني استخدامها للتحقق من أنني أستخدم وحدة معالجة الرسومات؟ يمكنني مراقبته بـ radeontop لكني أرغب بشيء يستخدم TensorFlow نفسه.

ZixuanLiang لا ، ليس فقط ..
نقوم حاليًا باختبار AMD (R9 380 ، R9 Nano ، FirePro). نحن نعلم أن Intel GPU تكشف بعض أخطاء برنامج التشغيل ، ولكن هناك إصلاحات قادمة. وقد أعلنا عن Renesas R-Car ونتوقع المزيد لمتابعة.

أعتقد أن Xilinx تقوم بنقل الدعم لـ triSYCL https://github.com/tensorflow/tensorflow/pull/12882 - لذا FPG's (؟) - يجب أن تعرف 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 شكرًا لك سأحاول على AMD GPU

lukeiwanski يبدو أن البناء والاختبار يعملان على بونير الخاص بي. أنا أستخدم Python 3.6 ، والتعليمات تستخدم Python 2.7. هل أحتاج إلى استخدام 2.7 أم سيعمل 3.6؟

znmeb متابعة https://github.com/tensorflow/tensorflow/issues/6533#issuecomment -273852647 يبدو أن Python 3.6 يجب أن يعمل - لم أجربها على الرغم من

lukeiwanski هل هذا إصدار ComputeCpp يمكنه بناء TF في الوقت الحالي؟
لقد جربت إصدارات مختلفة بين 0.3.2 و 0.1.4 ولم ينجح أي منها. انتهى بهم الأمر جميعًا مع خطأ "التحميل الزائد المتعدد لـ 'global_ptr' إلى نفس التوقيع".
راجع للشغل ، لا يمكنني العثور على ملف TensorDeviceSycl.h في مصادر TF ، هل هذا ملف تمت إعادة تسميته؟ هل من الممكن تطبيق التصحيح على المصادر الحالية؟

شكرا مقدما.

يمكن لـ eLvErDe ComputeCpp 0.3.2 الإنشاء: https://github.com/lukeiwanski/tensorflow/tree/dev/amd_gpu

يفتقد Upstream تصحيحًا لـ Eigen يقوم بإصلاحه .. راجع https://github.com/tensorflow/tensorflow/issues/22#issuecomment -334154564

هل لديك أي فكرة عن كيفية حقن رقعة Eigen أثناء بناء bazel؟ ربما يجب أن نتصادم في مكان ما بإصدار 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 ولكن سأكون مستعدًا لتمكينه بمجرد دعمه بشكل صحيح. ربما سأقوم بتحديث الحزم مقابل فرعك لأغراض الاختبار ، لكن هذا يكفي لليوم ؛)

لدي حوالي عشرة أنواع مختلفة من وحدات معالجة الرسومات AMD في منصات التعدين الخاصة بي. (من 7970 إلى RX 480 يعمل بنظام أوبونتو 16.04 و amdgpu-pro). اسمحوا لي أن أعرف إذا كان بإمكاني المساهمة عن طريق اختبار أي شيء.

اسمحوا لي أن أعرف إذا كان بإمكاني المساهمة عن طريق اختبار أي شيء.
ماذا عن https://github.com/ROCmSoftwarePlatform/hipCaffe
https://github.com/ROCmSoftwarePlatform/hipeigen

في الثلاثاء 17 أكتوبر 2017 الساعة 10:54 صباحًا ، كتب slundell [email protected] :

لدي حوالي عشرة أنواع مختلفة من وحدات معالجة الرسومات AMD في منصات التعدين الخاصة بي. (من
7970 إلى RX 480 تشغيل أوبونتو 16.04 و amdgpu-pro). اسمحوا لي أن أعرف إذا كنت أستطيع
المساهمة عن طريق اختبار أي شيء.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-337309059 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AA6MNxXJ-G3nCQUA9RucrJ8y4vs5NPtLks5stOnbgaJpZM4Gex3i
.

lukeiwanski هل ستدعم الشوكة وحدات معالجة الرسومات AMD على نظام macOS أيضًا؟

أهلا،
كنت أقوم بإنشاء واجهات برمجة تطبيقات tensorflow على Ubuntu16.04 x64 لجهاز Android الخاص بي مع تمكين GPU (Mali-T720) ،

معلومات نظام التشغيل الخاص بي:
نظام التشغيل Ubuntu 16.04 x64
وحدة معالجة الرسومات للكمبيوتر: NVIDIA 1080Ti
كودا 8.0
CUDNN 5.1 (على الرغم من أنني لا أستخدم cuda أو cudnn للبناء)
بازل 0.5.2
ComputeCpp CE 0.3.2

بناء بلدي هو:
"
bazel build -c opt --config = sycl //tensorflow/contrib/android:libtensorflow_cc.so --cxxopt = "-
std = c ++ 11 "--cxxopt =" - DTENSORFLOW_DISABLE_META "- overbose_failures -
crosstool_top = // external: android / crosstool --host_crosstool_top = @ bazel_tools // tools / cpp: toolchain -
وحدة المعالجة المركزية = 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 / workspace / source / computeCppForSYCL1.2 \
HOST_CXX_COMPILER = / usr / bin / g ++ \
HOST_C_COMPILER = / usr / bin / gcc \
LD_LIBRARY_PATH = / home / e0024 / workspace / source / 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 / workspace / bazel / output: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / الألعاب: / usr / local / games: / snap / bin \
الأشخاص ذوي الإعاقة = / proc / self / cwd \
PYTHON_BIN_PATH = / home / e0024 / workspace / Anaconda2 / bin / python \
PYTHON_LIB_PATH = / home / e0024 / workspace / Anaconda2 / lib / python2.7 / site -pack \
TF_NEED_CUDA = 0 \
TF_NEED_OPENCL = 1 \
external / bazel_tools / tools / cpp / link_dynamic_library.sh لا يتم تجاهل تجاهل خارجي / 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 / _Ulocal_Uconfig_Usycl_S_Ssycl_Csyclrt___Uexternal_Slocal_Uconfig_Usycl_Ssycl_Slib "، -Lbazel خارج / ذراع ينكس androideabi-4.9-v7a-جنو-libstdcpp التقيد / بن / _solib_armeabi-v7a / _Ulocal_Uconfig_Usycl_S_Ssycl_Csyclrt___Uexternal_Slocal_Uconfig_Usycl_Ssycl_Slib -Wl،، كلها-أرشيف بازل خارج / الذراع -لينكس-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / tensorflow / c / libc_api.a -Wl،-no-whole-archive -Wl،-all-archive bazel-out / arm-linux-androideabi- 4.9-v7a-gnu-libstdcpp-opt / bin / tensorflow / core / libandroid_tensorflow_lib.lo -Wl،-no-whole-archive -Wl،-all-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،-all-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،-all-archive bazel-out / arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / tensorflow / core / libprotos_all_cc.a -Wl، -no-whole -أرشيف -Wl ،-all-archive bazel-out / arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / external / protobuf / libprotobuf.a -Wl،-no-whole-archive -Wl، -all-archive bazel-out / arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt / bin / external / protobuf / libprotobuf_lite.a -Wl،-no-whole- archive -lComputeCpp خارجي / androidndk / ndk / المصادر / 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 ++. -llog -lm -z defs -s -Wl، - gc -ections '-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 / منصات / android-14 / arch-arm'): com.google.devtools.build.lib.shell.BadExitStatusException: تم إنهاء العملية باستخدام الحالة 1.
خارجي / 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_Uconfig_Usycl_S_Ssycl_Uconfig_Usycl_S_Ssycl_Uconfig_Usycl_S_Sig_Uconfig_Usycl_S_Ss لـ ComputeCpp
خارجي / 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 حالة خروج واحدة
الهدف //tensorflow/contrib/android:libtensorflow.so فشل في البناء
INFO: الوقت المنقضي: 617.736 ثانية ، المسار الحرج: 54.66 ثانية

uhm .... أريد إنشاء واجهات برمجة تطبيقات tensorflow في قوس الذراع مع تمكين GPU (Mali-T720) ،
نقدر إذا ترك شخص ما بعض الخبرات أو الاقتراحات هنا. شكرا لك.

تعال إلى حديثي الأسبوع المقبل في Arm TechCon ، @ laMia482 ! http://schedule.armtechcon.com/session/running-tensorflow-machine-learning-on-arm-embedded-hardware/850230

ستحتاج إلى سائقين ماليين مع دعم SPIR-V ، والذي ربما لا يتوفر بسهولة حتى الآن. وستحتاج إلى وقت تشغيل ComputeCpp لنظام Android مع دعم Arm CPU ودعم SPIR-V ، وهو أيضًا غير متوفر (حتى الآن). لذلك ، عليك أن تكون مجرد مريض قليل الشدة.

نحن (Vertex.AI) قمنا للتو بفتح PlaidML المصدر ، وهو مكدس التعلم العميق الخاص بنا مع دعم لتشغيل Keras على OpenCL. دعم TensorFlow قادم ، وسيرحب بالمساعدة هناك. ونعم ، دعم Mac في الطريق (أيضًا لنظام Windows). http://vertex.ai/blog/announcing-plaidmlggaabe _

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 أعتقد أنه سيكون من الأنسب إثارة مشكلة في مستودع plaidml بدلاً من هنا ، لأن هذه المشكلة تتعلق بدعم OpenCL في tensorflow. بالإضافة إلى ذلك ، من خلال النظر إلى تعليمات التثبيت ، قد يكون أمر تثبيت النقطة غير صحيح.

شكرًا لك andrewrichards على انتباهك وخطابك في الجلسة.

ولكن في الوقت الحالي بالنسبة لي (طالب دراسات عليا) ، لإنشاء تطبيق باستخدام Tensorflow على جهاز Android وأريد تفعيل GPU (Mali-T720) ، ما هو مطلوب للحصول على سائق Mali مع دعم SPIP-V ووقت تشغيل ComputeCpp لنظام Android مع Arm CPU دعم ودعم SPIR-V.

منذ أن قمت بتنزيل ComputeCpp (Ubuntu16.04 x64 مع bin / doc / include / lib /) على الصفحة الرئيسية لـ CodePlay ، قمت أمس بتشغيل:
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 ، لذلك أعتقد أنني ربما أحتاج إلى ComputeCpp لنظام Android مع دعم Arm CPU ودعم SPIR-V ، لكن لم أجد أي كود مصدر لإنشاء Android ComputeCpp ، هناك عينات فقط في github.

وقد قلت إن ComputeCpp لنظام Android غير متوفر الآن ، فهل هناك أي خطة لدعم جهاز Android أو كيف يمكنني الحصول عليه إذا كان مدعومًا.

لمستخدمي AMD gpu و linux ، أصدرت AMD مؤخرًا منفذ HIP لتينسورفلو هنا . أنت قد تكون مهتم.

لم أختبره ، رغم ذلك.

يمكنني اختباره - ترقبوا. يبدو أنه فشل CI بالرغم من ذلك.

في الواقع إنها فاشلة. ما زلت في مرحلة مبكرة ، على ما أعتقد.

لقد اختبرت ذلك ، وحصلت على segfault في مثال 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 - تأكد من تثبيت rocm 1.6.4 base.

bensander شكرًا ، سأقوم بالترقية.

bensander أي شيء آخر أحتاجه من مكدس AMD؟ كل ما لدي الآن هو مكتبة opencl الخاصة بـ AMD التي تستخدم برنامج تشغيل "amdgpu" مفتوح المصدر.

masahi - إذا قمت بتثبيت rocm و rocm-libs (على سبيل المثال "apt-get install rocm rocm-libs") فهذه هي كل ما تحتاج إليه. يحتوي ملف rocm_docs الموجود في repot على تعليمات كاملة بما في ذلك النتائج المتوقعة.

bensander كيف أعرف ما إذا كنت أقوم بتشغيل rocm 1.6.4 بشكل صحيح (وليس 1.6.3)؟

masahi مجرد تخمين: يجب أن تطرح السؤال عن مكان أكثر صلة بمشكلتك ، مثل مشروع AMD أو RoCM بدلاً من هنا ...

@ keryell صحيح ، لقد خرجت عن الموضوع. أتوقف هنا.
على أي حال ، لم أستطع الحصول على تدفق hiptensorflow على نظامي. سأحاول لاحقًا مع تثبيت Ubuntu النظيف.

masahi - فقط افتح مشكلة هناك وسنساعدك في الإعداد.

مرحبًا ، أريد فقط أن أذكر أنني تمكنت من الحصول على عمل hiptensorflow ، وذلك بفضل bensander وغيرهم من الأشخاص في AMD. يمكنني تشغيل جميع الأمثلة في دليل البدء السريع.

شكرا

بالنسبة لأولئك الذين يرغبون في تجربة TensorFlow على أجهزة AMD باستخدام ROCm ، كتبت مدونة تصف كيفية تشغيل أجهزة الكمبيوتر المحمولة Fast.ai باستخدام AMD Fury Nano.
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- تم الإصدار

منفذ Tensorflow إلى وحدة معالجة الرسومات AMD:
https://github.com/ROCmSoftwarePlatform/hiptensorflow/blob/hip/README.ROCm.md

انه يعمل بشكل رائع بالنسبة لي. إعداد الجهاز الخاص بي:
وحدة معالجة الرسومات: AMD Radeon RX 480
وحدة المعالجة المركزية: Intel Xeon 2603 v3.0
ميغابايت: supermicro x10srl-f

المفتاح هو اللوحة الأم ويجب أن تدعم وحدة المعالجة المركزية PCIe v3

أداؤها مشابه لـ Nvidia 980Ti

لا يمكنني حتى الحصول على برامج تشغيل AMD "المدعومة" للعمل على تثبيت Ubuntu 16.04 LTS "المدعوم". التقادم المخطط؟

znmeb ، ما هو AMD GPU الخاص بك؟ إذا كان لديك وحدات معالجة رسومات مزدوجة ، فقم بتعطيل وحدة معالجة الرسومات غير المدعومة من BIOS.

تعذرت قراءة الموضوع بالكامل ... ما هو الوضع الحالي لـ Tensorflow على OpenCL على نظام MacOS (sierra +)؟ على وجه التحديد ، لديّ وحدة معالجة رسومات Intell Iris وكنت آمل إذا كان بإمكاني البناء من مصدر دعم Tf + Open CL له.
أيضًا ، يبدو أن tf corrainder يعمل بشكل جيد ، في الإصدار 1.2.

@ varun19299 FWIW هناك Intel SDK لـ OpenCL - لقد حصلت عليه على جهاز الكمبيوتر المحمول القديم Sandy Bridge ولكنني متأكد من أنه سيعمل على جهازك. https://software.intel.com/en-us/intel-opencl

هل هذا حاليًا في حالة قابلة للاستخدام على أنظمة لينكس غير ubuntu؟ صفحة خارطة الطريق ببساطة روابط هنا.

pfc هل ما يمكن استخدامه حاليًا على Linux بخلاف Ubuntu؟ TensorFlow باستخدام OpenCL بشكل عام؟ أو TensorFlow باستخدام OpenCL على وحدة معالجة رسومات AMD؟ سأفترض الخيار الأخير ، لأنه السبب الوحيد الذي يجعلك ترغب في تشغيل TensorFlow باستخدام OpenCL. بالنسبة لوحدة معالجة الرسومات NVidia ، ستستخدم برامج تشغيل / مكتبات NVidia وبالنسبة لوحدة المعالجة المركزية فقط ، لا يوجد شيء تربحه من OpenCL.

لقد عملت هذا منذ بضعة أسابيع على Arch Linux ، باستخدام مكتبة ComputeCpp SYCL المسجلة الملكية ووحدة معالجة الرسومات AMD "Bonaire" (هندسة جزر البحر). هناك إصدار جديد من ComputeCpp أحتاج إلى اختباره ولكني أعتقد أنه سيعمل.

اتضح أن مكتبات AMDGPU Pro المملوكة لك تحتاجها لجعل هذا العمل لا يعمل على Ubuntu 16.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 للحصول على التفاصيل. لم أتمكن من جعل AMD OpenCL يعمل على Ubuntu.

هناك نسخة تجريبية من AMD من TensorFlow تستخدم مترجمًا لترجمة كود CUDA إلى كود OpenCL لكنني لم أختبر ذلك أيضًا. في حالة عدم وجود برنامج تشغيل مدعوم ، لا فائدة من ذلك.

https://github.com/ROCmSoftwarePlatform/hiptensorflow/tree/hip/rocm_docs هي الطريقة المدعومة رسميًا لتشغيل تدفق الموتر على أجهزة AMD.

bensander هل يعمل وقت تشغيل ROCm على Ubuntu 16.04.3؟ لم أتمكن من تشغيله.

ملاحظة: هل لديك أي فكرة عما إذا / متى سيعمل إعداد AMDGPU-Pro على Ubuntu 16.04.3؟ أحتاج ذلك لمشروع آخر.

حسنًا ، أنا لا (ولن) أستمتع بـ Ubuntu في أي مكان ولكن لدي CentOS 7 w / repos و GTX1080TI فيه ، يعمل على تشغيل kernel 4.14.x وأحدث برنامج تشغيل Nvidia beta ، لذلك يمكنني المساعدة في اختباره هناك في وقت ما اليوم إذا كان ذلك يساعد؟

-
سام ماكليود

في 7 ديسمبر 2017 ، الساعة 07:28 ، كتب إم. إدوارد (إد) Borasky [email protected] :

bensander هل يعمل وقت تشغيل ROCm على Ubuntu 16.04.3؟ لم أتمكن من تشغيله.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع.

sammcj لماذا قد تقوم بتشغيل NVidia GPU مع OpenCL عندما تكون هناك مكتبات CUDA جيدة تمامًا لها؟

فقط للمساعدة في اختباره لك!

لا تقلق إذا لم تكن بحاجة إلى اختبار يدوي ، فقط اعتقدت أنني سأعرضه. لم أجرب هذا الجهاز حتى مع cuda TBH ، لقد جربته فقط على MacOS حيث لا يمكنني استخدام OpenCL من خلال Docker في الوقت الحالي.

-
سام ماكليود

في 7 ديسمبر 2017 ، الساعة 08:16 ، كتب إم. إدوارد (إد) Borasky [email protected] :

sammcj لماذا قد تقوم بتشغيل NVidia GPU مع OpenCL عندما تكون هناك مكتبات CUDA جيدة تمامًا لها؟

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع.

znmeb كنت سأحاول ComputeCpp SYCL ، لكنهم لا يقدمون سوى مثبت ubuntu (أنا أيضًا في القوس) ونص تثبيت aur معطل. من الجيد أن نسمع أنه يمكن أن يعمل. إذا شعرت باليأس بدرجة كافية ، فقد أجربها.
bensander يبدو هذا بالضبط ما أحتاجه للحصول على دعم ADM ، لكنني أشعر بالقلق من حقيقة أن هذا الرمز لم يتم تحويله إلى TF وأن رمزه تم تحديثه آخر مرة منذ أكثر من شهرين نظرًا لأن الكود الخاص بي يستهدف TF 1.4. 0
يبدو في الوقت الحالي أن Tensorflow يربطك أساسًا بـ Nvidia ، على الأقل بالنسبة لنا نحن المبرمجين "الفانين". لا يساعد نقص الوثائق / خارطة الطريق المحدثة. لا أمانع في المساعدة بأي شكل من الأشكال ولكني لم أحقق نجاحًا كبيرًا في عمل الأشياء حتى الآن.

pfc حصلت على ComputeCpp SYCL يعمل على Arch - كان هناك كرة تار ثنائية على موقع الويب الخاص بهم عندما فعلت ذلك.

في هذا الخبر عن إصدار SYCL 1.2.1
https://www.roboticstomorrow.com/news/2017/12/06/the-khronos-group-releases-finalized-sycl-121-/11107/
انها تقول :
_ تتضمن المواصفات الجديدة الخبرة الكبيرة المكتسبة من ثلاثة تطبيقات منفصلة وردود فعل من مطوري أطر التعلم الآلي مثل TensorFlow ، والتي تدعم الآن SYCL جنبًا إلى جنب مع الواجهة الخلفية لمسرع CUDA الأصلي.

هل هذا يعني أنه من الممكن الآن تشغيل TensorFlow "بسهولة" على وحدة معالجة الرسومات AMD التي تدعم OpenCL 1.2 الذي تم إنشاء SYCL عليه؟

"بسهولة" بمعنى أن بعض البرامج / المشغلات / المكتبات منخفضة المستوى لأجهزة AMD هي حيث توجد معظم العناصر المعطلة ، وليس في الأجهزة أو TensorFlow أو معايير OpenCL أو SYCL. ؛-) إذا كنت قد حصلت على برامج تشغيل AMD GPU وتعمل مكتبات OpenCL ، فلديك TensorFlow على وحدات معالجة رسومات AMD.

إعداد عملي لـ AMD Bonaire (هندسة جزر البحر):

قوس Linux مع تحميل وحدة kernel amdgpu ووحدة kernel radeon في القائمة السوداء
حزمة مستودع مستخدم Arch opencl-amd
مكتبة ComputeCpp
تم إنشاء TensorFlow من المصدر على محطة العمل الخاصة بي باستخدام مفترق lukeiwanski :

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

أنا مندهش قليلاً مما قلته "إذا كان لديك برامج تشغيل AMD GPU وتعمل مكتبات OpenCL ، فلديك TensorFlow على وحدات معالجة رسومات AMD". لقد فهمت أن الإصدار "الرسمي" من TensorFlow لم يكن يعمل على OpenCL (CUDA فقط). يبدو أنني أصبحت في حيرة من أمري.
كنت سعيدًا جدًا بالعثور على مشروع PlaidML الذي يسمح على الأقل بتشغيل بعض أكواد Keras على iMac مع AMD Redeon HD 6970. (https://groups.google.com/forum/#!topic/plaidml-dev/ksFMgxjgKrM ) AFAIK لقد جربت هذا الإطار أيضًا.
سأقوم بتشغيل TensorFlow على Ubuntu VirtualBox حيث كان Tensorflow قيد التشغيل بالفعل (وحدة المعالجة المركزية فقط).

PALYGAP لا أعتقد أن VirtualBox يصدر OpenCL من مضيف Mac إلى ضيف Linux ، ولا يعمل Ubuntu 16.04.3 الآن. ليس لدي جهاز Mac لذلك ليس لدي أي طريقة لاختبار الأشياء.

هل نجح أي شخص في تجربة العمل TensorFlow على AMD عبر OpenCL ونجح؟

mohnkhan لدي عمل lukeiwanski fork (Arch Linux) - راجع https://github.com/tensorflow/tensorflow/issues/22#issuecomment-349877056 . أنا في انتظار المزيد من أعمال AMDGPU-Pro قبل أن أنشر منشور مدونة - راجع https://github.com/corngood/archlinux-amdgpu/pull/54 .

znmeb شكرا لك على المدخلات

mohnkhan BTW ، تقوم AMD ببناء مسار بديل مفتوح المصدر بالكامل - ترجمة كود CUDA إلى كود OpenCL باستخدام سلسلة أدوات مترجم. لست متأكدًا من حالة ذلك بالنسبة للبطاقات القديمة مثل البطاقات الخاصة بي.

إذا كنت ستكتب مقالًا ، فأعتقد أنه لن يضر أن تشرح أيضًا (استغرق 3 ساعات للحصول على الصورة كاملة):

  • TF لديها في الواقع SYCL 1.2 الخلفية. لا * الفعلي * opencl.
  • في المقابل ، لديك تطبيقان للمعيار ( تبدو trisycl رائعة ، لكنها محدودة في أجهزة الصراف الآلي)
  • في النهاية ، ComputeCpp 'hooks' SPIR / SPIR-V (بالإضافة إلى PTX ، ولكن هذه قصة أخرى حقًا)

وهذا ما يجعلك في النهاية مباشرة إلى OpenCL 1.2 المتوق إلى الدم (w / cl_khr_spir ext)

HIP بدلاً من ذلك هو خلفية أخرى ، يجلس مقابل SYCL ، ويستهدف ROCm فقط وحصريًا (أو حسنًا ، lol ، حتى في المقابل cuda إذا كان لديك nvidia gpu .. ولكن هذه مرة أخرى قصة أخرى)

تقوم AMD ببناء مسار بديل مفتوح المصدر بالكامل - ترجمة كود CUDA إلى كود OpenCL باستخدام سلسلة أدوات مترجم.

لا. أنت تتحدث عن HIP ، و .. هذا في الواقع ، ما تقوم في النهاية بتحويل الكود الخاص بك إليه . وهو ليس OpenCL.
ثم يعمل HIP على ROCm كما كنت أقول ...
ROCm وهو أيضًا ما يُشغل OpenCL نيابةً عنك (على البطاقات المدعومة ) ، ولكن من فضلك أشدد على الجميع لملاحظة كيف يتم توجيه العلاقات فقط من ROCm ، وليس "الطبقات الفرعية الداخلية" أبدًا

ربما يكون ما تفكر فيه هو الكزبرة .

لست متأكدًا من حالة ذلك بالنسبة للبطاقات القديمة مثل البطاقات الخاصة بي.

تم تلخيصها هنا : AMDGPU-PRO كامل التكوين ، برنامج تشغيل amdgpu-pro-opencl فقط كما تفعل الآن ... أو الاستمرار في الانتظار حتى نهاية العقد حتى يتمكن شخص ما من استخدام البرسيم في النهاية.

أيضًا ، fglrx ... ولكن إذا كان من الصعب التوصية بذلك لبطاقات gcn المسبقة ، أعتقد أنه من الأفضل رسم حجاب.

تضمين التغريدة

  1. لست مهتمًا ببطاقات GCN السابقة. Mine a Sea Islands وأنا لا أخطط للحصول على أي شيء أقدم. ثم مرة أخرى ، لا أخطط للحصول على وحدة معالجة رسومات AMD أخرى أيضًا. ؛-)
  2. لا أعرف ما إذا كانت ROCm ستعمل على محطة العمل الخاصة بي - لا يوجد جهاز اختبار أجهزة مفتوح المصدر يمكنه أن يعطيني إجابة بنعم أو لا. لقد فتحت مشكلة لذلك ولم أتلق أي رد.
  3. SPIR-V هو هدف مترجم - ألقيت نظرة عليه ورفعت يدي ، وليس لدي ميزانية لتوظيف كاتب مترجم.

لذلك يترك ذلك SYCL ... أو أرفع يدي الأخرى ويفعل كل شيء باستخدام Keras ، التي تحتوي على نهايات خلفية TensorFlow أو Theano (التي يتم تجميدها) أو CNTK أو PlaidML. من وجهة نظر الاقتصاد الهندسي البحت ، تعتبر Keras / PlaidML فائزًا كبيرًا بشرط أن أحصل على TensorBoard بطريقة ما.

mirh شكرا على الملخص الجيد مع جميع الروابط. أعتقد أنك لم تضيع 3 ساعات الخاصة بك ... :-)

لا أعرف ما إذا كانت ROCm ستعمل على محطة العمل الخاصة بي - لا يوجد جهاز اختبار أجهزة مفتوح المصدر يمكنه أن يعطيني إجابة بنعم أو لا. لقد فتحت مشكلة لذلك ولم أتلق أي رد.

كما أخبرتك عدة مرات ، لا ، لن تنجح.
يفتقر gpus من الجيل الثالث لـ GCN ببساطة إلى الأجهزة اللازمة لـ ROCm لأداء أو حتى العمل على الإطلاق.

SPIR (-V) .. لست متأكدًا مما تتحدث عنه. ليس من وظيفتك أن تهتم بذلك. Computecpp يصنعه من "أوامر" SYCL ، وبعد ذلك يكون كل عمل سائق (opencl).

لديك ما أسميه مؤقتًا amdgpu-pro-opencl-only ، ولست متأكدًا من المشكلة إذن.
تحرير: سيكون من الرائع أيضًا أن يكون لديك نوع من الوقت المتوقع لوصول كود Luke للهبوط

znmeb والجميع

لدي (L) Ubuntu 17.10 بما في ذلك. kernel 4.14.x وأجزاء مكتبة OpenCL من برنامج تشغيل AMDGPU Pro 17.40 قيد التشغيل ويمكنهما تشغيل تطبيقات OpenCL مثل Clinfo أو Boinc (على سبيل المثال EngimaHome ، Milkyway @ Home) بدون مشكلة على AMD A12-9800E APU.

يمكنني أيضًا إجراء ترجمة ناجحة واستخدام إصدار وحدة المعالجة المركزية Tensorflow (الإصدار 1.4.1 حاليًا). لكنني فشلت في تجميع إصدار OpenCL من Tensorflow بنجاح. أستخدم computecpp 0.5 (الإصدار الحالي الذي يمكنني تنزيله دون الحاجة إلى التسجيل) جنبًا إلى جنب مع Vanilla Tensorflow 1.4.1 ومع فرع "dev / amd_gpu" من مفترق lukeiwanski .

لذا ، هل يمكن إرضاء شخص ما قام بتجميع إصدار OpenCL بنجاح من Tensorflow بتقديم بعض المعلومات عن إصدار مكتبة computecpp وأي فرع من أي tensorflow git يستخدمه؟

شكرا لك

AlphasCodes ليس لدي أي شيء يعمل على Ubuntu - كل الأشياء التي أعمل بها موجودة على Arch. لديّ الجهاز مزدوج التمهيد مع Ubuntu 16.04.3 لكن مكتبات AMD المملوكة لم تعمل هناك بعد. بقدر ما أعرف أنهم غير مدعومين في 17.10 ، ولكن إذا كنت قد حصلت على قطعة OpenCL تعمل على 17.10 ، فقد أضيف تمهيدًا ثالثًا - لدي مساحة كبيرة على القرص. ؛-)

ما نوع الأخطاء التي تحصل عليها؟ إذا كانت أخطاء إنشاء ، فقد يكون لديك عدم توافق 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 ،

يجب علينا حقًا إغلاق هذه المشكلة ، نظرًا لأن TensorFlow ، كما أشارmirh ، يستخدم SYCL وليس OpenCL. ربما يجب أن نفتح واحدة أخرى ، "TensorFlow على بطاقات AMD" ؟؟

لا ، هذا شرعي تمامًا.
تريد تشغيل Tensorflow في النهاية على أجهزة opencl ، هذا هو الهدف. شرعي ونهاية.
إن القول بأنه كان يستخدم SYCL في الواقع كان مجرد أداة فنية صنعتها ، لأن كل هذه الاختصارات للتكنولوجيات العشوائية السحرية كانت تجعلني أشعر بالجنون.
تحرير: أود أيضًا أن أشكر جميع اللاعبين في البرمجة على عملهم الفظيع

إذا كنت تريد شيئًا مصنوعًا خصيصًا لـ AMD ، فإنني أوصي بالتحقق من تدفق hiptensorflow الخاص بهم. على الرغم من ROCm فقط. ورجاء ، دعنا نترك هذه الحجة وراءنا.

حسنًا ، لا أعرف ما إذا كان لدي وقت كافٍ للقيام بالبناء مرة أخرى وتقديم أخطاء الترجمة حتى نهاية الأسبوع. لكني أضفت وثائقي الحالية إلى مستودع جيثب الجديد الخاص بي.

راجع https://github.com/AlphasCodes/DeepLearning للحصول على التفاصيل (إعداد الأجهزة / البرامج الخاصة بي + إعداد AMD OpenCL + إعداد Tensorflow).

mirh لتوضيح "اختصارات التقنيات العشوائية السحرية [...] تجعل [أنت] مجنونًا":

في عالم مجموعة Khronos ، OpenCL هي واجهة برمجة التطبيقات ذات المصدر الفردي منخفضة المستوى و SYCL هي اللغة المضمنة ذات المصدر الفردي عالي المستوى (DSeL). من المتوقع أن يتم إنشاء SYCL فوق OpenCL ، لذلك من خلال الانتقال عند استخدام SYCL ، غالبًا ما تستخدم OpenCL.

نظرًا لأن TensorFlow يستخدم Eigen الذي يستخدم منهج C ++ أحادي المصدر مع CUDA أحادي المصدر ، عندما تم نقله لاحقًا إلى OpenCL ، تم اختيار SYCL لأنه الطريقة القياسية لمجموعة Khronos للحصول على C ++ أحادي المصدر .

ولكن إذا كنت تفكر في CUDA ، فهي أكثر دقة.

يستخدم الجميع تقريبًا الإصدار عالي المستوى أحادي المصدر من CUDA والذي يُسمى فعليًا "CUDA Runtime API". هذا يشبه إلى حد ما SYCL.
ولكن هناك بالفعل إصدار أقل شهرة من CUDA منخفض المستوى وغير أحادي المصدر يسمى "CUDA Driver API" ، على غرار OpenCL ، ويستخدم على سبيل المثال بواسطة تنفيذ "CUDA Runtime API" نفسه.

نظرًا لأنه نوع من الأسئلة الشائعة ، فقد أوضحت قليلاً https://en.wikipedia.org/wiki/SYCL و https://en.wikipedia.org/wiki/CUDA

ComputeCpp وهو تطبيق SYCL الذي تستخدمه مع TensorFlow لا يدعم Ubuntu 17.10. ستحتاج إلى الالتزام بـ Ubuntu 16.04 وهو LTS الحالي. التعليمات والمتطلبات المسبقة موجودة هنا https://developer.codeplay.com/computecppce/latest/getting-started-with-tensflow

جانبا ، لا يعني دعم OpenCL لـ TensorFlow دعم جهاز AMD فقط. يعمل تكامل SYCL أيضًا على تمكين أجهزة OpenCL الأخرى. كجزء من العمل الذي نقوم به مع TensorFlow ، سيتوفر دعم ARM و Intel GPU عند توفر أحدث برامج التشغيل من هذه الشركات. نحن نعمل أيضًا على تمكين دعم معالجات التسريع Renesas أيضًا لمنصة R-Car.

@ rodburns شكرا! لدي هذا العمل على Arch Linux (4.14.4 kernel) مع مكتبة opencl-amd من مستودع مستخدم Arch. البطاقة هي بونير (GCN 2.0). سأجري الاختبارات على تلك الصفحة للتحقق من أنها تفعل ما ينبغي لها.

GCN الجيل الثاني (المعروف أيضًا باسم 1.1) إن وجد ، 2.0 غير موجود.
(يجب أن ينحني ليكون متحذلق جدا)

نجاح!

أحدث فرع "dev / amd_gpu" في lukeiwanski fork إصلاح مشكلة تجميع Tensorflow OpenCL الخاصة بي. أفترض أنها كانت التزامات SysCL 1.2.1 ذات الصلة.

لقد نجحت في تجميع إصدار Tensorflow OpenCL ويمكنني استخدامه. راجع مستندات إعداد Tensorflow الخاصة بي للحصول على التفاصيل.

لقد أضفت أيضًا صفحة معايير حيث يمكنك العثور على بعض معايير الإعداد الخاصة بي في ظل إعدادات Tensorflow المختلفة (بدون وحدة المعالجة المركزية المحسّنة ، وحدة المعالجة المركزية المحسّنة ، OpenCL) في المستقبل.

يعمل الإصدار 17.50 من برنامج تشغيل AMDGPU Pro أيضًا بالنسبة لي. لقد قمت بتحديث مستند إعداد AMD OpenCL ذي الصلة.

شكرا لجميع المساهمين.

لقد أجريت بعض المعايير ويبدو أن iGPU أبطأ من خيوط المعالجة المركزية الأربعة المتاحة باستثناء معيار matmul_bench.py .

إن تهيئة تشغيل OpenCL Tensorflow هو أيضًا أبطأ بكثير من تشغيل OpenCL Tensorflow لوحدة المعالجة المركزية فقط. شيء مثل 5 ثوانٍ لوحدة المعالجة المركزية مقابل 1-2 دقيقة لـ OpenCL.

يمكن لأي شخص تأكيد هذه النتائج؟

حسنًا ، لقد فعلت المزيد من استكشاف الأخطاء وإصلاحها.

  • لقد استخدمت مثال Tensorflow MNIST ، راجع التحقق من مستند إعداد Tensorflow
  • لقد استخدمت "sudo cat / sys / kernel / debug / دراي / 0 / amdgpu_pm_info" للتحقق / مشاهدة ساعة / تحميل iGPU و "أعلى" للتحقق من حمل وحدة المعالجة المركزية
  • استغرقت مرحلة التهيئة حتى الخطوة 0 حوالي 6 دقائق ، وكان تحميل iGPU حوالي 0٪ ، وساعة iGPU عند 300 ميجاهرتز (الحد الأدنى للساعة المتاحة) وكان استخدام وحدة المعالجة المركزية لعملية Python حوالي 200٪ (= 2 مؤشر ترابط)
  • بدءًا من الخطوة 0 ، كان حمل iGPU حوالي 90٪ ، وتم تبديل ساعة iGPU دائمًا من 654 ميجاهرتز - 720 ميجاهرتز - 800 ميجاهرتز - 900 ميجاهرتز (الحد الأقصى للساعة المتاحة) والعودة ، كان استخدام وحدة المعالجة المركزية لعملية Python حوالي 100 ٪ (= 1 وحدة المعالجة المركزية مسلك)

ما زلت أحاول تجميع الأشياء على Arch.

ما استخدمته أمس .
بعد 14 ساعة (نعم ، البطاطس الخاصة بي بطيئة جدًا) حصلت على هذا الثنائي ، إذا كنت تريد المحاولة.

لقد حاولت اكتشاف ما يحدث ولكن للأسف لم أتمكن من ذلك. سأكون ممتنًا إذا كان بإمكان أي شخص يعرف ما يلي مساعدتي في السرعة!

تتعلق معظم المناقشة أعلاه بتشغيل Tensorflow مع تسريع OpenCL على رقائق AMD. هل أنا محق في قول هذا؟ إذا كنت أرغب في الحصول على Tensorflow متسارع من GPU باستخدام بطاقة الرسومات المدمجة (Intel HD 5000) التي تدعم opencl ، فما هو أسلوبي؟

شكرا مقدما!

znmeb مرحبا إد ، شكرا على الرد. لقد قمت بتنزيل OpenCL وتشغيله على نظامي. لكن سؤالي كان - كيف يمكنني تجميع Tensorflow لاستخدام مكتبات OpenCL بالفعل؟

AlphaCodes شكرا لنشر نتائجك. فيما يتعلق بوقت التهيئة ، فإن الطريقة التي يعمل بها OpenCL هي أن الكود يتم تجميعه قبل التنفيذ ، وبالتالي فإن وقت بدء التشغيل هو عملية الترجمة.

brainwave بالنسبة لأجهزة Intel ، يوجد مؤشر ترابط مع mirh هنا يشرح كيفية إزالة القيود حول الأجهزة قيد التشغيل. لقد رأينا مشكلات في برامج تشغيل Intel وهذا هو سبب تقييد أنواع هذه الأجهزة ، لكننا نأمل أن تكون برامج التشغيل المحدثة متاحة قريبًا لأجهزة Intel التي تعمل على تحسين الدعم. في غضون ذلك ، يمكنك إعادة تجميع TensorFlow مع التغيير لاختبار أجهزة Intel الخاصة بك. نحن نبحث في إزالة قيود الجهاز في قاعدة البيانات.

AlphasCodes Guys ، أعتذر عن سؤال ساذج ربما ولكن لماذا هذا البناء AMD GPU فقط؟ أليس من المفترض أن يكون OpenCL قياسيًا؟ هل أفهم بشكل صحيح أنه لن يعمل على Intel Carbon X1 مع برامج تشغيل OpenCL 2.0 المثبتة؟

إذا قرأت المشكلة التي تم ربطها مرتين ، فسترى أنه لا يوجد شيء بخصوص amd gpu.
تم استبعاد Intel حاليًا ، لكن لا علاقة لها بالرغبة في إجبار المستخدمين ، وهناك حل مؤقت - ناقش هناك إذا كان هناك أي شيء.

عندما أستخدم فرع amd_gpu مع دفتر ملاحظات jupyter ، يبدو أن هناك خيطًا متبقيًا. لا يزال python يستخدم 100٪ من وحدة المعالجة المركزية ، حتى بعد انتهاء الحساب. إعادة تشغيل النواة تنتهي من الخيط الضال. هل اختبر أي شخص آخر هذا؟

تضمين التغريدة
عذرًا ، لا يمكنني المساعدة في Intel OpenCL لأن لدي فقط أجهزة AMD OpenCL.

تضمين التغريدة
أنا لا أستخدم Jupyter حتى الآن. أستخدم قذيفة bash عادية وبيئة Python 3 الافتراضية ( انظر إعداد Python 3 + Tensorflow الخاص بي ). لكن لا يمكنني إعادة إنتاج المشكلة. لا يوجد استخدام لوحدة المعالجة المركزية من خلال عملية بايثون بعد اكتمال الحساب.

تضمين التغريدة
شكرا على المعلومه. هل من الممكن تسريع وقت الترجمة الأولي؟ على سبيل المثال ، استخدام كل خيوط وحدة المعالجة المركزية المتاحة بدلاً من 50٪ فقط.

تضمين التغريدة
بالنسبة إلى Intel GPU (Gen9) في نظام Linux ، فقد رأينا أداء DNN أفضل بشكل ملحوظ مع تطبيق Beignet مفتوح المصدر من Intel مقارنةً بالمصدر المغلق عند قياس الأداء باستخدام شبكات الرؤية المشتركة على PlaidML. Beignet أسهل أيضًا في التثبيت وهو لطيف.

هل يدعم Intel Graphics HD615 (وحدة المعالجة المركزية من الجيل السابع) على Ubuntu17.10؟

يعمل برنامج opencl dirver SRB5.0 لنظام linux64 بشكل جيد على ubuntu17.10.

ولم يتم تحديثه منذ فترة طويلة:
https://bitbucket.org/mehdi_goli/opencl/branch/IntelGPU

من أجل حب الله ، ألا يمكنك قراءة منشورتين (اثنتين!) أعلاه؟
ناقش نقص دعم Intel gpu (أو amd cpu) هنا https://github.com/codeplaysoftware/computecpp-sdk/issues/78

znmeb هو هدف للاستفادة الكاملة من موارد الحوسبة المختلفة (مثل وحدة المعالجة المركزية ، وحدة معالجة الرسومات ، DSP ، أي معالج مساعد آخر).
في الواقع ، يعتمد ذلك على دعم بائعي الأجهزة: dirver و OS.
كما أعلم ، لا يمكنك تمكين كل من Intel GPU و nvida GPU للفيديو خلال نفس الوقت ، بسبب القيود المفروضة على برنامج تشغيل الفيديو. (قد تتمكن من التبديل بينهما).
ومع ذلك ، يمكن لـ opencl استخدامها في نفس الوقت. كلاهما "أجهزة" فيه.

choongng من المثير للاهتمام معرفة ذلك ، لقد قمنا ببعض الأعمال للمساعدة في تمكين Beignet ولكن يبدو أن النشاط في هذا المشروع كان هادئًا بعض الشيء.

znmeb نعم ، ربما لن يكون أداء أي GPU أفضل بكثير في مشكلة صغيرة ، ويسعدك أنك تحرز بعض التقدم رغم ذلك!

يمكن استخدامunoexperto ComputeCpp مع TensorFlow بواسطة أي جهاز يدعم تعليمات SPIR OpenCL الوسيطة التي تتضمن وحدات معالجة رسومات Intel ، ولكن كما في الخيط هنا ، قمنا بمنع تشغيله عمدًا لأننا لم نعتقد أن برامج التشغيل الحالية كانت تعمل في الوقت الحالي . يمكنك إزالة هذا التقييد لأنه يبدو أن بعض المستخدمين قد جعلوه يعمل مع برامج تشغيل Intel مختلفة. نحن نعمل أيضًا على تمكين ذلك لمعالجات ARM و Renesas التي تحتوي على برامج تشغيل OpenCL.

@ sxpc722 يجب أن يعمل ذلك بعد ذلك. بالمناسبة ، الجهاز الجديد هو Windows 10 ولا أخطط لتشغيله المزدوج مع Linux حتى أضطر إلى القيام بذلك! لقد سئمت من مطاردة أخطاء السائق والمكتبة للبائعين (أنظر إليك ، AMD). في الواقع ، قد أضع قسم Windows على محطة العمل الخاصة بي لنفس سبب AMD. ؛-)

لقد مرت 14 يومًا بدون أي نشاط وهذه المشكلة لها متنازل له. يرجى تحديث التسمية و / أو الحالة وفقًا لذلك.

أداء Tensorflow AMD OpenCL بطيء جدًا وفقًا لاختباراتي. لذلك أجريت بعض الاختبارات الأساسية باستخدام إطار عمل آخر للتعليم العميق. ستجد الإعداد والمعايير الخاصة بي على صفحة GitHub الخاصة بي هنا .

قصة طويلة قصيرة. يعتبر إطار عمل التعلم العميق الآخر أسرع بنحو 10 مرات من Tensorflow AMD OpenCL حاليًا.

AlphasCodesznmeb أعلم أن فريق TF يفضل الاحتفاظ بسلاسل TF فقط ، يسعدنا استضافة محادثة خاصة بـ PlaidML في مشروع PlaidML. ومع ذلك ، نأمل أن ندعم في النهاية TensorFlow نفسه بالإضافة إلى الأنظمة الأساسية غير التابعة لـ OpenCL (على سبيل المثال ، Apple's Metal لـ iOS الموجود حاليًا في نموذج أولي).

https://github.com/plaidml/plaidml

choongng شكرًا على المعلومات التي قمت بتحريرها رسالتي وفقًا لذلك.

znmeb يجب أن يكون AMD A12-9800E iGPU هو GCN v3.

السبب الرئيسي والوحيد بالنسبة لي للقيام بالمعايير / الاختبارات هو العثور على إجابة لسؤالي "البقاء مع AMD أو التبديل إلى Nvidia من أجل مغامرة التعلم العميق الخاصة بي".

والجواب هو. يعجبني حقًا نهج AMD مفتوح المصدر ، لكن من المحتمل أن أتحول إلى Nvidia بسبب عاملين. أولاً ، تعد مجموعة برامج التعلم العميق (مثل Tensorflow) أكثر نضجًا لـ Nvidia. ثانيًا ، تقدم بطاقة الرسوميات لاحتياجاتي الخاصة جدًا (يجب أن تتناسب مع علبة Dan A4 SFX ويجب أن تكون صامتة جدًا / تقريبًا بلا ضوضاء تحت الحمل الكامل لساعات) محدودة للغاية أو حتى غير موجودة على جانب AMD.

هل تدعم Intel GPUs؟ أعتقد أن جهاز Iris Pro الخاص بي يمكنه تسريع التدريب طويل العمر قليلاً.

ناقش نقص دعم Intel gpu (أو amd cpu) هنا codeplaysoftware / computecpp-sdk # 78

https://github.com/codeplaysoftware/computecpp-sdk/issues/82

مجرد محاولة لفهم حالة هذه القضية. هل أنا محق في القول إن هذا الريبو:

https://github.com/lukeiwanski/tensorflow

... تم إنشاؤه باستخدام ComputeCpp ، هل الخيار الأفضل حاليًا لبناء Tensorflow مع دعم AMD GPU العام؟ وإذا كان الأمر كذلك ، فهل هناك أي دليل معياري على أن هذا الإصدار يوفر تسريعًا على وحدة المعالجة المركزية؟

يعتمد على ما تقصده بـ "دعم AMD GPU العام". إذا كنت تقصد dGPU أو APU قديمًا حقًا ، فأنا لا أعرف. ولكن إذا كان لديك أحدث (الجيل الثاني من GCN أو أحدث) ، فإن hipTensorFlow (v1.0.1) يعمل على ROCm يعمل بشكل جيد.

@ briansp2020 آه نعم لقد رأيت عمل AMD على ROCm. لسوء الحظ ، فهم يدعمون Linux فقط على الرغم من ذلك ، ولا يبدو أن دعم أي نظام تشغيل آخر موجود على خارطة الطريق الخاصة بهم. آمل في شيء يدعم Windows.

mjmax هل هناك أي حزمة tensorflow تسريع GPU متاحة لنظام التشغيل Windows؟ اعتقدت ، إذا كنت تريد Deeplearning مع GPU ، فإن Linux كان الخيار الوحيد. إذا تم نقل TensorFlow إلى OpenCL ، فهل سيسهل ذلك النقل إلى Windows؟ لست متأكدًا من سبب عدم توفر TensorFlow على النوافذ مع تسريع GPU عندما يتم دعم CUDA هناك.

أعتقد أن هذا خارج الموضوع الآن ، ولكن إذا كان أي شخص يعرف TensorFlow و / أو PyTorch للنوافذ التي يتم تسريعها بواسطة GPU ، أود أن أعرف عنها أيضًا ...

@ briansp2020 على حد علمي ، يدعم Tensorflow بالفعل تسريع Nvidia GPU على Windows.

CL tensofrflow هو بالفعل فوضى على نظام التشغيل Linux ، لا تتوقع أي شيء قريبًا.
إذا كنت تريد تسريع الأشياء هناك ، فهناك فقط plaidML.
(ومن فضلك ، لدينا 500 تعليق بالفعل .. فلنحاول النشر فقط إذا كان ذلك ضروريًا حقًا)

لا يعمل mirh OpenCL Caffe على نظام التشغيل Windows. من المؤكد أنها ليست TensorFlow من حيث الميزات ، ولكنها قوية جدًا للبرامج التي يجب نشرها في كل مكان.

ماذا عن استبدال منفذ openCL بمنفذ HIP المدعوم من AMD؟

https://github.com/ROCmSoftwarePlatform/hiptensorflow

هاها! LifeIsStrange الحياة غريبة جدًا في الواقع ... هل تعمل لصالح فريق التسويق HiP من AMD؟ :-)
الرجاء إلقاء نظرة على موضوع هذه المشكلة: "دعم OpenCL".

هذا يعني أنه يتعلق بمعيار Khronos https://en.wikipedia.org/wiki/OpenCL (يظهر معيار SYCL الآخر من مجموعة عمل OpenCL Khronos في نهاية قسم "نظرة عامة").

بالطبع هناك عالم خارج هذه القضية ، لكنه ... خارج ! :-)

يرجى محاولة عدم زيادة إنتروبيا الكون بشكل غير معتاد عن طريق نشر بعض المشاركات العشوائية في هذه المناقشة الطويلة جدًا بالفعل ... :-)
هذا التعليق ينطبق على بعض الملصقات الأخرى هنا ، ليس فقط أنت بالمناسبة.
هذه مشكلة GitHub لحل مشكلة تقنية : تشغيل TensorFlow على الأجهزة التي تدعم معيار OpenCL ، وليس صفحة FaceBook حول كيفية إعجاب الأشخاص بالأداة A أو B.
ولكن لا تتردد في إرسال بعض التزامات git المتعلقة بهذه المشكلة التي يمكننا الاطلاع عليها ...

هناك مفترق من TensorFlow يدعم OpenCL https://github.com/hughperkins/tf-coriander

وبالطبع عمل benoitsteiner https://github.com/benoitsteiner/tensorflow-opencl

IMHO ، إنه لأمر مثير للسخرية أن TF السائد لم يدمج عملهم.

هل التركيز هنا على تشغيله كـ lomg-as-it-OpenCL ، أم جعله يعمل بشكل أسرع في الواقع؟ أفضل عدم وجود حرب مقدسة ، ولكن التركيز على جعلها تعمل بسرعة على العديد من وحدات معالجة الرسومات. ينصب تركيز LifeIsStrange على جعله يعمل على وحدات معالجة الرسومات AMD ومن ثم يكون HIP منطقيًا. بالنسبة للآخرين ، ينصب التركيز على جعله يعمل على وحدات معالجة الرسومات Intel أو Android ، ومن ثم يكون OpenCL أكثر منطقية. تعد لغات وحدة معالجة الرسومات في حالة من الفوضى ، لذا يرجى الحفاظ على التطبيق العملي ،

إذا قرأت بعض التعليقات هنا ، فإن الأداء يمثل مشكلة في منافذ OpenCL. لكن لسوء الحظ لا أستطيع رؤية العديد من المعايير حولها. هل هناك معايير أكثر من هذا؟ https://github.com/AlphasCodes/DeepLearning/blob/master/Tensorflow_Benchmarks.md

كما أفهمها ، فإن قياس الأداء يكون صعبًا إذا قارنت CUDA بـ OpenCL ، لأنه يتعين عليك استخدام أجهزة مختلفة. يُزعم أن nVidia تعمدت / سمحت بتطبيق OpenCL الخاص بها إلى حد ما ، لذا فإن قياس الأداء على نفس الجهاز سيؤدي دائمًا إلى ظهور CUDA بشكل رائع.

في 12 فبراير 2018 14:26:11 GMT + 00:00 ، كتب VincentSC [email protected] :

هل التركيز هنا على تشغيل مثل lomg-as-it-OpenCL ، أو
جعله في الواقع يعمل بشكل أسرع؟ أفضل عدم وجود حرب مقدسة ، لكن
التركيز على جعله يعمل بسرعة على العديد من وحدات معالجة الرسومات. LifeIsStrange
ينصب التركيز على جعله يعمل على وحدات معالجة الرسومات AMD ومن ثم يعمل HIP بشكل جيد
إحساس. بالنسبة للآخرين ، ينصب التركيز على جعله يعمل على وحدات معالجة الرسومات Intel أو
Android ، ثم OpenCL أكثر منطقية. لغات GPU هي أ
فوضى ، لذا يرجى الحفاظ على العملية ،

إذا قرأت بعض التعليقات هنا ، فإن الأداء يمثل مشكلة في
منافذ OpenCL. لكن لسوء الحظ لا أستطيع رؤية العديد من المعايير حولها.
هل هناك معايير أكثر من هذا؟
https://github.com/AlphasCodes/DeepLearning/blob/master/Tensorflow_Benchmarks.md

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub:
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -364936498

-
مُرسَل من جهازي الذي يعمل بنظام Android مع K-9 Mail. عذرا على الاختصار.

مقارنة رقمين فقط لا توجد معلومات - من يهتم إذا كان OpenCL على NVidia يعمل بنصف السرعة إذا كان يعمل بسرعة 4x على وحدات معالجة الرسومات الأخرى؟

أعتقد أننا سنحتاج إلى هذه المعايير:

  1. CUDA على NV GPUs (المعايير المرجعية)
  2. https://github.com/hughperkins/tf-coriander على وحدات معالجة الرسومات AMD و Nvidia و Intel
  3. https://github.com/benoitsteiner/tensorflow-opencl على وحدات معالجة الرسومات AMD و Nvidia و Intel
  4. https://github.com/lukeiwanski/tensorflow على وحدات معالجة الرسومات AMD و Nvidia و Intel

من السهل العثور على المعايير المرجعية. لدينا بعض وحدات معالجة الرسومات المتطورة هنا ، لذلك لا تحتاج إلا إلى مكان لوضع الأرقام فيه (مع روابط إلى مستندات البناء).

دعم OpenCL يجب أن يصبح صحيحًا.

cuda محدودة للغاية ، ولا تريد nvidia مشاركتها.
يعمل cuda فقط لـ Nv gpus.
هذا طريق مسدود لـ TensorFlow ،
إذا ظهر "TensorFlow" آخر ولكن دعم أكثر من TensorFlow.
إذا كان TensorFlow لا يزال يدعم cuda في windows فقط.
عليك أن تدرك أن TensorFlow ليس الخيار الوحيد.

لماذا يعد OpenCL أفضل من HIP؟ أعتقد أن OpenCL قد فشلت في اكتساب قوة دفع ودعم OpenCL في هذا الوقت من المحتمل أن يكون ذا إنتاجية عكسية وخصم من الموارد للمجتمع / الصناعة بأكملها. أفضل رؤية TensorFlow يدعم HIP مباشرة والسماح للمجمع / الأداة / المكتبة بالعناية بقابلية النقل.

أليس من الأفضل أن يدعم البرنامج لغة / نموذج برمجة واحد؟

يجب أن يدعم البرنامج ما يجب أن يدعمه لتغطية كل حالة استخدام.
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 . شكرا لك.

من مصلحة Google دعم OpenCL ،
من خلال امتلاك جهاز معين (شركة / علامة تجارية / بائع) معين باعتباره تبعية لبرنامجك ، فإنك تفرض نفسك على دفع المزيد مقابل الأجهزة ، وتقلل المنافسة في السوق من التكاليف.
لطالما كانت Google تدور حول الأجهزة السلعية منذ البداية والتي كانت ولا تزال حاسمة لنجاح Google (هيمنة السوق) ، مع انخفاض تكاليف تشغيل مركز البيانات ، وتمكين العروض الثورية السخية للخدمات المجانية بشكل أساسي مثل Gmail (مساحة التخزين) وصور Google (التخزين) مسافة ووضع العلامات التلقائي).

wesamco لا ، ليس بالضرورة في مصلحة Google. إنهم يصنعون أجهزتهم الخاصة - شيء يسمى "TensorBoard" ، IIRC. يمكنهم تجاوز OpenCL و CUDA / CUDnn وجعل اللوحة تشغل كود TensorFlow الخام.

كود TensorFlow الخام.

لا يوجد شيء من هذا القبيل - إنه ليس مثل الطعام غير المعالج. تحتاج TPUs إلى مكتبة DNN الخاصة بها والتي تتعامل مع الأنواع المختلفة من المكالمات.

يبدو أن الوقت قد حان لضغط المناقشة أعلاه في قائمة واحدة مرة أخرى:

  • يعمل CodePlay على خلفية SYCL
  • هيو بيركنز يعمل على tf الكزبرة
  • AMD تعمل على HIP الخلفية
  • يدعم PlaidML فقط وحدات المعالجة المركزية في الوقت الحالي.
  • حالة دعم Intel GPU غير واضحة.

لذا اختر المشروع الذي يعجبك وابدأ في دعمه. ربما يمكن لكل مجموعة تقديم تحديث عن حالة مشروعهم؟

افهم أن OpenCL قد تم تحويله من لغة كاملة إلى تعريف اللغة / مواصفات الأجهزة التي يتم تمثيلها في SPIRV (kernels) ، والتي يمكن تشغيلها بعد ذلك على منصة مثل OpenCL-drivers وفيما بعد أيضًا على Vulkan-drivers (المنصات). لذلك من خلال دعم SYCL ، فإنك تدعم أيضًا OpenCL.

تلخيص مثالي ، لكن plaidml يعمل على gpus أيضًا.
إنها فقط في الوقت الحالي هي الواجهة الخلفية لـ keras ، وليس Tensorflow. لذا فهي نوعا ما OT هناك.

أهلا بكم،
VincentSC شكرًا على التلخيص الرائع للجهود المختلفة!

لذا اختر المشروع الذي يعجبك وابدأ في دعمه. ربما يمكن لكل مجموعة تقديم تحديث عن حالة مشروعهم؟

يدعم نهج SYCL مجموعة متنوعة من الأنظمة الأساسية / الأجهزة الآن. تلك التي يمكنني ذكرها هي:

  • تتوفر الإرشادات لوحدات معالجة الرسومات AMD (سلسلة FirePro W8100 و R9 Nano و R9 380) هنا أو هنا
  • تعليمات ARM Mali (HiKey 960) متوفرة هنا
  • Intel GPU (سلسلة SkyLake) مع برنامج تشغيل Intel NEO OpenCL

عندما يتعلق الأمر بـ AMD ، في الوقت الحالي ، تستخدم وحدات معالجة الرسومات المذكورة أعلاه برامج تشغيل AMDGPU-Pro 17.40-xxx مع تمكين OpenCL القديم.
لا أرى أي سبب واضح لعدم نجاح المسلسلات الأخرى (مع افتراض أن SPIR / SPIR-V مدعومة)

النظام الأساسي الرئيسي الذي نركز عليه هو Linux - ومع ذلك ، لدينا جهود مستمرة لتمكين Windows في المستقبل. ليس لدينا أي خطط لدعم OSX في المستقبل القريب. اعرف وجه حزين.

ينصب تركيزنا على تحسين أداء شبكات CNN. الأداء الحالي غير مُحسَّن ولا قريب من المكان الذي نراه في النهاية. ومع ذلك ، فإننا نتفوق بالفعل على أداء وحدة المعالجة المركزية لمعظم الطرز على أهداف مختلفة.

من أجل تسريع دورة التطوير وتقليل وقت التجميع الكلي لـ TensorFlow (بالإضافة إلى تحسين قابلية النقل) ، فإننا نعمل على مكتبات Eigen و BLAS و DNN.
تهدف هذه المكتبات إلى حل مشكلة الأداء بالإضافة إلى بناء نظام بيئي للمكتبات المحمولة التي يمكن دمجها بسهولة مع المشاريع المعقدة مثل TensorFlow.

أدناه ، انظر الرسوم البيانية للأداء التي يمكننا مشاركتها في الوقت الحاضر. تم أخذها من مفترقتي https://github.com/lukeiwanski/tensorflow/tree/dev/amd_gpu في 271093b21cc5ca38e8699e154b5cada96bd7ac0d.
المعيار المستخدم هو https://github.com/tensorflow/benchmarks

cpuvssycl
تم تسوية الرسم البياني لنتائج Intel i7-4790K.

نحن نعمل ببطء على إدخال التغييرات على Eigen بمجرد حدوث ذلك ، فسوف نتبعه مع TensorFlow.

امل ان يساعد،
لوك

للاستدلال على التعلم العميق على الأجهزة المحمولة مع دعم GPU / OpenCL ، يمكنك التحقق من MACE ، المحسّن لوحدات معالجة الرسومات Adreno و Mali و PowerVR. فيما يلي بعض النتائج المعيارية .

keryellbenoitsteiner ، ما هو إصدار Tensorflow و trisycl المطلوب للتكامل. أواجه مشكلة في إنشاء Tensorflow (1.9) مع أحدث إصدار من trisycl.

لسوء الحظ ، يستخدم أحدث TensorFlow ميزات أكثر تقدمًا مما يمكن لـ triSYCL الحالي التعامل معه ، لذلك عليك استخدام ComputeCpp ، حاليًا تطبيق SYCL الوحيد المتوافق تمامًا ...

Tensorflow مدعوم من Google Brain ، ولدى Google شراكة مع nVidia ، أعتقد أننا لن نتوقع من Tensorflow دعم OpenCL
هناك حاجة إلى جهود مجتمع OpenCL الكبيرة

دعم OpenCL من فضلك!

OpenCL أكثر ملاءمة لنا أيضًا.

تضمين التغريدة لا يمكنني شراء جهاز مزود ببطاقة رسومات NVIDIA.

إلى جانب المنشورتين أعلاه ، أود أن أضيف الآن أن وحدات معالجة الرسومات Vega الخاصة بـ AMD (بما في ذلك تلك الموجودة داخل Raven Ridge APUs) يمكنها تنفيذ FP16 بمعدل ضعف FLOPS ، لذلك إذا كان بإمكان TF دعمها (من خلال OpenCL) فإنها ستساعد الأشخاص بالفعل ميزانية أقل. سيكون أيضًا الكثير من هؤلاء الأشخاص طلابًا ، وإذا جعلناهم يستخدمون TF كنقطة انطلاق لرحلة DNN الخاصة بهم ، فمن المحتمل أن يلتزموا بـ TF على الطريق ، وحتى يخبرون الآخرين عن TF ؛ إنها طريقة رائعة للمساعدة في توسيع هذا المشروع.

أعتقد أن هذا الموضوع لا معنى له في الغالب بالنسبة للمطورين (الكثير من الضوضاء - وسأضيف المزيد ؛-) لكنني أعتقد أن العديد من التعليقات تفتقد إلى الهدف:
إذا كنت ترغب في تشغيل Tensorflow باستخدام بطاقات AMD ، فإن OpenCL ليس ما تبحث عنه - يرجى التوجه إلى https://github.com/ROCmSoftwarePlatform/ وتثبيت حزمة ROCm. تعتمد إستراتيجية AFAIK AMD الحالية على ROCm بدلاً من OpenCL لـ Tensorflow / pytorch .

كان OpenCL العام يتطلب الكثير من الصيانة / لم يقدم مزايا أداء كافية لتكون جديرة بالاهتمام لشركة AMD. لذلك فإن هذه التذكرة مثيرة للاهتمام فقط إذا كنت تقوم بتشغيل (على سبيل المثال) منصة ARM التي تستخدم OpenCL فقط.

(إخلاء المسئولية: مجرد شخص خارجي ، ليس هناك ما هو داخلي حقيقي في تطوير Tensorflow ، لذلك ربما تكون المعلومات الواردة أعلاه خاطئة تمامًا ومضللة. لا تتردد في مهاجمتي إذا كنت تعرف أفضل.)

مجرد فكرة ، ماذا عن llvm مع إلغاء تحميل GPU الجديد؟ هذا من شأنه أن يضع مستوى رائعًا من التجريد بين الكود المحدد لـ Tensorflow و cuda.

ماذا عن قراءة 10 منشورات فقط أعلاه ولاحظت أن هناك بالفعل مفترق بواسطة lukeiwanski / codeplaysoftware التي يمكنك تجربتها؟
(كما أعتني بقبعاتي على xiaomi للمساهمة مرة واحدة في نوع جاد من الجهود مفتوحة المصدر)

FelixSchwarz فقط لكي تدرك أن ROCm تستخدم OpenCL ، فهو برنامج تشغيل OpenCL الخاص بمساحة مستخدمي AMD على Linux (ولهذا السبب لا يدعم نظام التشغيل windows) ، لذلك إذا لم تكن على دراية بكيفية عمل النظام البيئي لبرنامج تشغيل AMD على نظام Linux ، فلديهم برامج التشغيل الجانبية للنواة AMDGPU و AMDKFD (التي يتم دمجها الآن في AMDGPU) ثم هناك برامج تشغيل مساحة المستخدمين RadeonSI (لـ OpenGL) RadV / AMDVLK (لـ Vulkan) و ROCm (لـ OpenCL).

انطلاقًا من ديناميكيات هذا الخطأ وغيره من المتشعبات ، فإن Google ليس لديها أي اهتمام بهذا الأمر ولن تنفذ ذلك أبدًا في المستودع الرسمي. سأصوت لإغلاق هذه القضية (أو قفلها) على الإطلاق لعدم إعطاء أي آمال كاذبة للجميع.

يجب أن تكون المشكلة هنا على الأقل للإشارة إلى جميع الأشخاص الذين سيفعلون ذلك
فتحه مرة أخرى حتما.

في يوم السبت ، 15 سبتمبر 2018 ، 09:45 كتب أنطون كوتشكوبإخطارات @github.com:

انطلاقًا من ديناميكيات هذا الخطأ والشوكات الأخرى ، فإن Google لديها صفر
الاهتمام بهذا ولن ينفذ هذا أبدًا في المسؤول
مخزن. سأصوت لإغلاق هذه القضية (أو قفلها) على الإطلاق
لا تعطي أي آمال كاذبة للجميع.

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-421535747 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AB1qNyDrfbiQ4h3kQyqObEfpK3O0FqRGks5ubKIBgaJpZM4Gex3i
.

هناك TensorRT يدعم Movidius Pi Hat. وهذا Movidius Pi Hat هو "AIY ​​Vision Kit" من Google بقيمة 45 دولارًا. روابط جوجل إلى الهدف لشرائه.

هذا ليس له أي علاقة بـ CUDA أو Nvidia؟ يقول أنه يستخدم شريحة إنتل. في جوهرها ، ربما الشريحة هي FPGA؟ أي شخص يعرف أي شيء أكثر عن ذلك؟

أعرف القليل عن وحدة Movidius الكبيرة - إنها استنتاج فقط وهي تعمل إما TensorFlow أو Caffe التي تم تجميعها مسبقًا. IIRC كلهم ​​في وضع 16 بت.

شريحة Movidius نفسها أقوى بكثير ولكن عليك أن تكون شريكًا مؤهلًا للحصول على SDK.

هل هناك أي تحديث؟ هذه القضية عمرها أكثر من 3 سنوات.

نعم ، هناك فقط إلقاء نظرة على آخر مجموعة من المشاركات.

@ filips123 لا ، لا توجد تحديثات ولن تكون أبدًا في المستقبل المنظور - احتمالية ذلك أقل من احتمال حدوث غزو فضائي وإيجاد طريقة للسفر عبر الزمن.

تعمل مبادرة إنتل PlaidML بشكل جيد إلى حد معقول ، وتستحق التحقق منها.
https://github.com/plaidml/plaidml
يعمل على opencl OR metal على mac. إنه يعمل مع Macbook Pro AMD gpus ، وهو ما كنت أبحث عنه.
في غضون ذلك ، هل يمكنكم المساعدة في التصويت لصالح دعم Pytorch في PlaidML؟ https://github.com/plaidml/plaidml/issues/63

من المؤكد أن PlaidML جميل ومدهش (أنا ، على سبيل المثال ، يمكنني بطريقة ما الحصول على أداء أكبر على وحدة معالجة الرسومات nvidia على opencl مقارنةً بـ tf's cuda نفسها) ..
لكنها خلفية لـ keras؟ في الاستبدال الكامل لـ Tensorflow ، والذي تعرفه ، هل هذا هو الريبو الذي نناقش هذا فيه؟
(بقدر ما يبدو أنني فهمت أن أحدث إصدارات tf يمكنها تصدير النماذج مباشرة إلى keras؟ لذلك هناك ذلك ..)

على أي حال ، للمرة الرابعة ، إذا كنت تريد حلاً حديثًا على opencl ولا يزال هناك شيء ما قيد التطوير ( وأيضًا الشيء الذي يحتوي على فرص فعلية ليتم دمجها هنا ليوم واحد حقيقي) ، فهناك فقط حزمة codeplay.
تكرارا:
https://developer.codeplay.com/computecppce/latest/tensorflow-overview
https://github.com/Rbiessy/tensorflow/tree/dev/amd_gpu

من المؤكد أن PlaidML جميل ومدهش (أنا ، على سبيل المثال ، يمكنني بطريقة ما الحصول على أداء أكبر على وحدة معالجة الرسومات nvidia على opencl مقارنةً بـ tf's cuda نفسها) ..
لكنها خلفية لـ keras؟ في الاستبدال الكامل لـ Tensorflow ، والذي تعرفه ، هل هذا هو الريبو الذي نناقش هذا فيه؟
(بقدر ما يبدو أنني فهمت أن أحدث إصدارات tf يمكنها تصدير النماذج مباشرة إلى keras؟ لذلك هناك ذلك ..)

على أي حال ، للمرة الرابعة ، إذا كنت تريد حلاً حديثًا على opencl ولا يزال هناك شيء ما قيد التطوير (_وأيضًا _ الشيء الذي يحتوي على فرص فعلية للدمج هنا ليوم واحد حقيقي) ، فهناك فقط حزمة codeplay.
تكرارا:
https://developer.codeplay.com/computecppce/latest/tensorflow-overview
https://github.com/Rbiessy/tensorflow/tree/dev/amd_gpu

اعتذاري ، لم أدرك عدم وجود دعم Tensorflow. اعتقد عقلي المفترض أن keras gpu support == دعم tensorflow.

plaidML رائع للغاية. يعمل على كراس.
بالطبع اضطررت إلى نقل بعض كود tf إلى keras النقي للعمل على plaidML backend (على سبيل المثال tf.image.ssim)
لكن النتيجة - يعمل الرمز الخاص بي على بطاقات NVIDIA و AMD.

كما تعد plaidML جنة للباحثين. يقوم تلقائيًا بإنشاء التدرج اللوني لأي وظيفة ستكتبها على لغة "Tile" وستعمل على وحدة معالجة الرسومات (GPU) لديك بسرعة 80٪ من Tensorflow.

لذلك لا أستطيع أن أفهم لماذا لا يزال باحثو ML يستخدمون PyTorch؟ دعنا نعزز علوم التعلم الآلي باستخدام plaidML من إنتل؟

iperov هل تريد أن تعرف لماذا لا يستخدم أحد عمليًا PlaidML؟

  1. إنه يعمل ببطء شديد على تطبيقات OpenCL الخاصة بـ AMD مقارنةً بخلفية CUDA الخاصة بـ Tensorflow ، لذلك هناك ما لا يقل عن نصف سبب استخدامه. الأداء سيء للغاية لدرجة أن استخدام Tensorflow مع وحدات المعالجة المركزية يعد تنافسيًا أو حتى يتفوق تمامًا على أجهزتهم باستخدام PlaidML؟

  2. لا أحد مهتم بالحفاظ على لغة برمجة Tile المتخصصة الخاصة به والتي لا يقوم بها سوى شخص مثل أستاذ الرياضيات البحتة ، لذا فإن جودة كود PlaidML تنخفض تمامًا ولن يرغب أي مبرمج جاد في عقله الصحيح في التعامل مع كود ذكي للغاية ...

  3. يرتبط هذا إلى حد كبير بالمركز الثاني ولكن منذ أن اشترت إنتل Vertex.AI ، لم يعد يهتموا بـ PlaidML بعد الآن. يقدم حل Intel للتعلم الآلي المعجل بحوسبة GPU مترجمًا جديدًا مخصصًا للتعلم العميق يُعرف الآن باسم nGraph لاستهداف Tensorflow أو PyTorch أو أطر التعلم العميق الأخرى كواجهة خلفية لهم. لا يوجد سبب يدعوهم لمواصلة تطوير PlaidML بعد الآن كوسيط لهم عندما يكون لديهم nGraph ...

يستخدم الأشخاص PyTorch لأسباب أخرى مثل قابلية الصيانة أو ميزات أخرى لتلخيصها ، فإن PlaidML هي أداة Intel وربما لا يعتزمون لعبها في أي دور في الأجزاء النهائية من خططهم. تستند الواجهة الخلفية الحالية لـ Intel GPU الخاصة بـ nGraph إلى OpenCL 2.1 التي تمتلك Intel فقط تطبيقًا متوافقًا ، لذا فإن Intel موجودة فقط للبحث عن نفسها بدلاً من مجرد تحسين التعلم الآلي. عندما تنتقل Intel إلى مزيد من تطوير nGraph ، لا يمكنني رؤيتها تستمر في الاعتماد على الواجهة الخلفية لوحدة معالجة الرسومات الخاصة بها على OpenCL 2.1 وحدها نظرًا لأن العديد من أطر التعلم العميق تحتوي على نوى مقولبة لا تتوافق مع نماذج برمجة المصدر المنفصل OpenCL أو Metal أو Vulkan ، لذا فمن المحتمل فقط لأغراض التجريب. من المحتمل أن تكون الواجهة الخلفية النهائية لوحدة معالجة الرسومات من Intel إما مستندة إلى SYCL 2.2 أو أي شيء آخر مختلف تمامًا مثل OpenMP وربما يجلبون حلًا خاصًا بالمورد ...

أما بالنسبة لـ AMD ، فمن يهتم؟ OpenCL غير ذي صلة بهم وقد أظهروا أخيرًا بعض النتائج مع عملهم على HIP ...

iperov هل تريد أن تعرف لماذا لا يستخدم أحد عمليًا PlaidML؟

  1. إنه يعمل ببطء شديد على تطبيقات OpenCL الخاصة بـ AMD مقارنةً بخلفية CUDA الخاصة بـ Tensorflow ، لذلك هناك ما لا يقل عن نصف سبب استخدامه. الأداء سيء للغاية لدرجة أن استخدام Tensorflow مع وحدات المعالجة المركزية يعد تنافسيًا أو حتى يتفوق تمامًا على أجهزتهم باستخدام PlaidML؟
  2. لا أحد مهتم بالحفاظ على لغة برمجة Tile المتخصصة الخاصة به والتي لا يقوم بها سوى شخص مثل أستاذ الرياضيات البحتة ، لذا فإن جودة كود PlaidML تنخفض تمامًا ولن يرغب أي مبرمج جاد في عقله الصحيح في التعامل مع كود ذكي للغاية ...
  3. يرتبط هذا إلى حد كبير بالمركز الثاني ولكن منذ أن اشترت إنتل Vertex.AI ، لم يعد يهتموا بـ PlaidML بعد الآن. يقدم حل Intel للتعلم الآلي المعجل بحوسبة GPU مترجمًا جديدًا مخصصًا للتعلم العميق يُعرف الآن باسم nGraph لاستهداف Tensorflow أو PyTorch أو أطر التعلم العميق الأخرى كواجهة خلفية لهم. لا يوجد سبب يدعوهم لمواصلة تطوير PlaidML بعد الآن كوسيط لهم عندما يكون لديهم nGraph ...

يستخدم الأشخاص PyTorch لأسباب أخرى مثل قابلية الصيانة أو ميزات أخرى لتلخيصها ، فإن PlaidML هي أداة Intel وربما لا يعتزمون لعبها في أي دور في الأجزاء النهائية من خططهم. تستند الواجهة الخلفية الحالية لـ Intel GPU الخاصة بـ nGraph إلى OpenCL 2.1 التي تمتلك Intel فقط تطبيقًا متوافقًا ، لذا فإن Intel موجودة فقط للبحث عن نفسها بدلاً من مجرد تحسين التعلم الآلي. عندما تنتقل Intel إلى مزيد من تطوير nGraph ، لا يمكنني رؤيتها تستمر في الاعتماد على الواجهة الخلفية لوحدة معالجة الرسومات الخاصة بها على OpenCL 2.1 وحدها نظرًا لأن العديد من أطر التعلم العميق تحتوي على نوى مقولبة لا تتوافق مع نماذج برمجة المصدر المنفصل OpenCL أو Metal أو Vulkan ، لذا فمن المحتمل فقط لأغراض التجريب. من المحتمل أن تكون الواجهة الخلفية النهائية لوحدة معالجة الرسومات من Intel إما مستندة إلى SYCL 2.2 أو أي شيء آخر مختلف تمامًا مثل OpenMP وربما يجلبون حلًا خاصًا بالمورد ...

أما بالنسبة لـ AMD ، فمن يهتم؟ OpenCL غير ذي صلة بهم وقد أظهروا أخيرًا بعض النتائج مع عملهم على HIP ...

ماذا عن كل GPU داخل جهاز الذراع مثل الهواتف المحمولة و Raspberry pi odroid وغيرها؟
انهم لا يدعمون opencl؟
يجب أن تهتم Google بإدراج tensorflow على وحدة معالجة الرسومات (gpu) على نظام Android.
تعمل أكبر مكتبات تدريب الشبكة العصبية على Nvidia gpu فقط ، فهي تجعل Nvidia gpu أكثر تكلفة وأكثر تكلفة (لأنها تشتريه من قبل الأشخاص والشركات فقط للتدريب المهني على الشبكة العصبية) ، ثم ستخسر Google المزيد من الأموال بهذه الطريقة.

Degerz من أي كوكب أتيت؟
كيف يمكنك مقارنة tf-CPU و AMD GPU؟
AMD GPU على plaidML x30 أسرع من tf-CPU

  1. إنه يعمل ببطء شديد على تطبيقات OpenCL الخاصة بـ AMD مقارنةً بخلفية CUDA الخاصة بـ Tensorflow ، لذلك هناك ما لا يقل عن نصف سبب استخدامه

في اختبارات التزييف العميق ، أبطأ OpenCL بنسبة 20٪ فقط ، ولكن في بعض الشبكات المصغرة ، يكون OpenCL أسرع بنسبة 20٪.

يحتوي مشروعي DeepFaceLab على العديد من المستخدمين الذين ينتظرون دعم AMD. كم عدد الأشخاص الذين كانوا سعداء عندما تم تدريب التزييف العميق أخيرًا على بطاقات AMD.
كما أن plaidML هي الواجهة الخلفية الوحيدة لأجهزة keras التي تدعم AMD / IntelHD خارج الصندوق.
إذا ظهرت واجهة AMD خلفية جديدة لـ keras ، فسيتحول مشروعي بالطبع إليها.
ليس لدى PyTorch مستقبل.

ما يجب الحفاظ عليه في plaidML؟ العمليات قابلة للتفاضل تلقائيًا ، فلا يوجد شيء يجب الحفاظ عليه.

لغة برمجة المربعات التي يمكن أن يلفق بها فقط شخص مثل أستاذ الرياضيات البحت

اخترع أساتذة الرياضيات التعلم الآلي ، أليس كذلك؟

talregev ماذا عن ARM أو Broadcom؟ من المحتمل أن الأول يحتوي على تطبيق OpenCL الفرعي والأخير لا يوفر حتى برامج تشغيل OpenCL رسميًا! لا تقع على عاتق Google مسؤولية إنشاء وصيانة مجموعة حوسبة كفؤة لبائعي الأجهزة ...

iperov أنت تدرك أن تدريب الشبكات العصبية على تضمين طبقات على PlaidML أمر مؤلم ، أليس كذلك؟ يحتوي PlaidML أيضًا على مجموعة من القيود الأخرى مثل عدم كونه مناسبًا تمامًا لـ DenseNets أو حقيقة أن الرسوم البيانية الحسابية ثابتة وهل يعمل PlaidML بشكل جيد مع RNNs؟

أما بالنسبة لمشروعك فلا تقلق بشأنه. ستنتقل إلى شيء أفضل مثل Tensorflow نظرًا لأن AMD ستقدم قريبًا واجهة GPU خلفية أصلية لها بمجرد تحديث MIOpen وهي مكتبة GPU المسرَّعة للأولويات للشبكات العصبية العميقة المشابهة لمكتبة cuDNN الخاصة بمنافسهم والتي سيترك كلاهما PlaidML في الغبار من حيث الأداء. من يهتم بوحدات Intel iGPU على أي حال؟ إذا كانت إنتل ملتزمة حقًا بتقديم تعلم عميق عالي الأداء على أجهزة الرسومات المنفصلة المستقبلية الخاصة بها ، فستقدم خيارًا لمصدر واحدًا تمامًا مثل الخيارات الأخرى (AMD / HIP و Nvidia / CUDA) قبلها ...

ليس لدى PyTorch مستقبل.

الحسد كثيرا؟ PyTorch أكثر شعبية من PlaidML بمقدار 10x تقريبًا ، ويتم تنفيذ أحدث التقنيات في DL بسهولة على PyTorch ، والعديد من المساهمين المختلفين ويتم تطويرها بشكل نشط بواسطة Facebook طوال الوقت ، بينما لم تساهم Intel في PlaidML في ما يقرب من شهر؟

ما يجب الحفاظ عليه في plaidML؟ العمليات قابلة للتفاضل تلقائيًا ، فلا يوجد شيء يجب الحفاظ عليه.

لذا أعتبر أن PlaidML لا ينبغي أن يتلقى أي إصلاحات جديدة أو ميزات جديدة في المستقبل من الآن فصاعدًا؟ إذا كنت لا ترى قيمة في تحسين الكود ، فلا فائدة من إقناعك بالاعتراف بعيوب PlaidML الصارخة ...

اخترع أساتذة الرياضيات التعلم الآلي ، أليس كذلك؟

لا يعني ذلك أننا يجب أن نتعامل مع أي لغة برمجة يصنعونها خاصة في حالة Tile حيث يتم تفضيل الأناقة بوضوح على سهولة القراءة. لا عجب في سبب خوف العديد من المساهمين المحتملين من المساهمة ...

يا يسوع ، أتمنى لكم يا رفاق STFU والعودة إلى العمل بدلاً من ذلك. سأضطر إلى إلغاء الاشتراك في التذكرة لأنه لا يطاق لتلقي رسائل بريد إلكتروني مع حروب اللهب. لا تقوم جهات الصيانة السيئة جدًا بكتم صوت مؤشر الترابط.

gunancaisq هل يمكنك فعل شيء حيال ذلك من فضلك؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات