سؤال

أنا جديد إلى حد ما على Opencl ، لذا يرجى تحمل معي.

في التكرار الأول للرمز الخاص بي ، استخدمت مخازن الذاكرة الأساسية لمجموعات البيانات الكبيرة وأعلنتها عالمية. ومع ذلك ، بعد أن أتطلع إلى تحسين التوقيت ، أردت استخدام ذاكرة الملمس لهذا الغرض. في إصدار CUDA ، نستخدم CudabindTexture و Tex1DFetch للحصول على البيانات الخاصة بصفيف تعويم كبير 1D. من فهمي للمواصفات ، فإن ذاكرة الملمس هي نفس الشيء مثل ذاكرة الصورة. ومع ذلك ، نظرًا لوجود كائنات صورة ثنائية الأبعاد وثلاثي الأبعاد مع أقصى ارتفاعات وعرضها ، أواجه بعض المشكلات. صفيف بلدي أكبر من الحد الأقصى للارتفاع/العرض ، ولكن ليس الحد الأقصى للارتفاع * الحد الأقصى عرض. هل يجب أن أقوم بتحويل صفيف 1D الخاص بي إلى 2D؟ أو هل هناك طريقة أفضل للقيام بذلك؟

أم أنا خارج تماما؟

لقد قرأت http://forums.nvidia.com/index.php؟showtopic=151743 و http://forums.nvidia.com/index.php؟showtopic=150454 لكنهم لم يكونوا قاطعين تمامًا فيما إذا كانت ذاكرة الملمس المشار إليها في أفضل الممارسات ودليل البرمجة كانت في الواقع كائنات صورة.

شكرا وأي مساعدة/اقتراحات موضع ترحيب كبير!

هل كانت مفيدة؟

المحلول

لقد وجدت أفضل إجابة كرد على مشاركتي في منتدى Nvidia هنا.

نصائح أخرى

صفيف بلدي أكبر من الحد الأقصى للارتفاع/العرض ، ولكن ليس الحد الأقصى للارتفاع * الحد الأقصى عرض. هل يجب أن أقوم بتحويل صفيف 1D الخاص بي إلى 2D؟

نعم ، تحتوي أجهزة الملمس على قيود على أقصى قيم الفهرس. إذا تجاوزت هذه القيم ، فستحتاج إلى تحويل إلى استخدام قيم فهرس متعددة.

ومع ذلك ، لا يعني أن التحويل إلى الوصول إلى الملمس سيؤدي إلى تسريع برنامجك.

OpenCl 1.2 يدعم القوام 1D. المشكلة هي NVIDIA تدعم OPENCL 1.1 فقط على عكس AMD أو Intel ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top