Monday 25 December 2017

تتحرك من المتوسط - opencl


العمل من خلال الأمثلة وشفرة المصدر من فيكستارس. على وجه التحديد، إيم محاولة بت الأخيرة من التعليمات البرمجية في الفصل 5 (اثنين من المتوسطات المتحركة - ويعرف أيضا باسم الصليب الذهبي): رمز متاح هنا: سوء نشر المثال المحدد أدناه. ولكن القصور هو أنه من خلال إعداد قائمة انتظار الأمر كما يلي: كوماندكويو كلكريتكوماندكيو (السياق، ديفيسيد، كليكوتفوردوردكسمودينابل، أمبريت) النتائج في كوماندكويو غير صحيح (كليرور). لذلك، لا تتم معالجة بيانات العودة بشكل صحيح. أي. كل الأصفار. ومع ذلك، إذا قمت بإعداد التعليمات البرمجية لحساب متوسط ​​متحرك واحد فقط، بدون كليكيوتفورديركسيكمودينابل ثم الأمور تعمل. في المقابل، يبدو رمز فيكستارس قبل هذا الفصل على ما يرام. إم العمل على العلامة التجارية الجديدة ماك بوك برو (الشبكية) التي لديها رقاقة نفيديا. لذا أنا أتساءل عما إذا كان لها بعض المسألة مع تنفيذ نفيديا أو بعض الجوانب الأخرى. وبغض النظر عن ذلك، سدادة المعرض بالنسبة لي كما ما تحاول في نهاية المطاف القيام به هو النار قبالة متعددة (متطابقة) العمليات مع كل معلمات مختلفة، في الأساس نفس الشيء هذا المثال هو محاولة القيام به من خلال حساب اثنين من الأسهم سعر يتحرك المتوسطات في وقت واحد. مقتطفات الشفرة أدناه. وأضاف إيف وظيفة الطباعة التصحيح لمصدرها. لذلك أرى ما يلي كما ينفذ برنامجي: مع بقية البيانات كونها جميع الأصفار كذلك. إيم تجميع مع: غك - O2 - c movaveragevec4p. c غك moveaveragevec4p. o - o movaveragevec4p - framework أوبينكل ---- (هوست كود) moveaveragevec4p. c ---- ---- (أوبينكل كيرنيل كود) moveaveragevec4.cl - --- وأنا أعلم أن هذا يمكن تحقيقه مع دفعة كما في: ولكن أنا حقا ترغب في تجنب استخدام دفعة. لقد غوغلد ولم يتم العثور على أي أمثلة مناسبة أو مقروءة. أساسا أريد أن تتبع المتوسط ​​المتحرك لتيار مستمر من تيار من أرقام النقطة العائمة باستخدام أحدث 1000 أرقام كعينة البيانات. ما هي أسهل طريقة لتحقيق ذلك أنا جربت باستخدام صفيف دائري، المتوسط ​​المتحرك الأسي ومتوسط ​​متحرك أكثر بساطة وجدت أن النتائج من مجموعة دائرية تناسب احتياجاتي أفضل. سأل 12 يونيو 12 في 4:38 إذا احتياجاتك بسيطة، قد حاولت مجرد استخدام المتوسط ​​المتحرك الأسي. ببساطة، يمكنك إجراء متغير تراكم، وكما التعليمات البرمجية الخاصة بك ينظر في كل عينة، التعليمات البرمجية بتحديث تراكم مع القيمة الجديدة. يمكنك اختيار ألفا ثابت ما بين 0 و 1، وحساب هذا: تحتاج فقط إلى العثور على قيمة ألفا حيث تأثير عينة معينة يستمر فقط لحوالي 1000 عينة. هم، إم لا فعلا متأكد من أن هذا هو مناسب لك، والآن أن إيف وضعه هنا. المشكلة هي أن 1000 هو نافذة طويلة جدا لمتوسط ​​متحرك أسي إم غير متأكد من وجود ألفا التي من شأنها أن تنتشر المتوسط ​​على آخر 1000 أرقام، دون تدفق في حساب العائمة. ولكن إذا كنت تريد متوسط ​​أصغر، مثل 30 أرقام أو نحو ذلك، وهذا هو وسيلة سهلة جدا وسريعة للقيام بذلك. أجاب يونيو 12 12 في 4:44 1 على مشاركتك. ويمكن أن يسمح المتوسط ​​المتحرك الأسي للألفا بأن يكون متغيرا. لذلك يسمح هذا باستخدامها لحساب متوسطات قاعدة الوقت (على سبيل المثال وحدات البايت في الثانية). إذا كان الوقت منذ آخر تحديث تراكم هو أكثر من 1 ثانية، يمكنك السماح ألفا يكون 1.0. خلاف ذلك، يمكنك السماح ألفا يكون (أوسيكس منذ last1000000 الماضي). ندش ج 12 يونيو في 6:21 أساسا أريد أن تتبع المتوسط ​​المتحرك لتيار مستمر من تيار من أرقام النقطة العائمة باستخدام أحدث 1000 أرقام كعينة البيانات. لاحظ أن أدناه يقوم بتحديث المجموع كعناصر كما أددريبلاسد، وتجنب مكلفة O (N) اجتياز لحساب المجموع - اللازمة للمتوسط ​​- عند الطلب. يتم إجراء إجمالي معلمة مختلفة من T لدعم على سبيل المثال. باستخدام طويلة طويلة عندما يبلغ مجموعها 1000 ثانية s، إنت لشار s، أو ضعف إلى مجموع تعويم s. هذا هو معيب بعض الشيء في أن الأمثلة يمكن أن تذهب الماضي إنتماكس - إذا كنت تهتم يمكنك استخدام طويلة غير موقعة. أو استخدام عضو بيانات بول إضافية لتسجيل عندما يتم تعبئة الحاوية لأول مرة في حين ركوب الدراجات نامبلز حول مجموعة (أفضل ثم تسميته شيء حميدة مثل بوس). أجاب 12 يونيو 12 في 5:19 واحد يفترض أن المشغل كوتفويد (عينة T) هو في الواقع كوتيفويد أوبيراتورلتلت (عينة T) كوت. نداش أوبليس يونيو 8 14 في 11:52 أوبليس أهه. رصدت جيدا. في الواقع كنت أعني أن يكون عاملا باطلا () (عينة T) ولكن بالطبع يمكنك استخدام أي تدوين كنت أحب. سوف إصلاح، وذلك بفضل. نداش توني D يونيو 14 14 في 14: 27 لدي مشكلة البرمجة وتريد حل باستخدام أوبينكل. المشكلة هي حساب المتوسط ​​المتحرك من المصفوفات على سبيل المثال: لدي 1000 المصفوفات: A، B، C، D. (على سبيل المثال كل مصفوفة لها حجم 4x4 أو أكبر) أريد حساب المتوسط ​​المتحرك من هذه المصفوفة 1000 (على سبيل المثال اتخاذ ويندو size5) النتيجة أريد هو هل يمكن حل هذا النوع من المشكلة باستخدام أوبينكل شكرا جزيلا للمساعدة أوبنكل. 1 نعم، فإنه يمكن تنفيذها باستخدام OpenCL. Although هناك بعض الاقتراحات التي قد تساعدك على كتابة أعلى code. i الأداء سيحاول تنفيذها بنفسي إذا كان لي الوقت. 1. إذا كنت غير قادر على أن تناسب في صفائف من حجم يساوي نافذتك في لدز فإنه لن يكون فكرة جيدة لاستخدام لدز على الإطلاق. كما في هذه الحالة سوف تستخدم عنصر واحد مرة واحدة فقط. 2.Refer إلى الفصل 4 من دليل البرمجة أوبينكل لمعرفة ما يمكن أن تساعدك على تحسين الأداء الخاص بك. نمط الوصول إلى الذاكرة كونها الأكثر أهمية إذا الذاكرة العالمية يجب أن تستخدم.

No comments:

Post a Comment