تقنية

مصفوفة CSR: هل قلة القيم تكفي لتوفير الذاكرة؟

حساب حمولة القيم والفهارس والمؤشرات في تمثيل CSR مقابل التمثيل الكثيف
رسم حسابي مؤلف تحت فرض أحجام عناصر ثابتة.

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

الخلاصة السريعة

لا؛ أضف حمولة الفهارس والمؤشرات، ثم قارن بالتمثيل الكثيف تحت أحجام عناصر معلنة وحدود حساب واضحة.

  • يوثق تمثيل CSR ثلاث مصفوفات: data للقيم، وindices لفهارس الأعمدة، وindptr لتحديد حدود كل صف. [1]
  • نفترض جدولا 4×5 ، وقيمة من 8 بايتات وفهرسا أو مؤشرا من 4. حمولة القيم في التمثيل الكثيف 20×8=160 بايتا.
  • مع 6 خانات و 5 مؤشرات نحصل على 48+24+20=92 بايتا؛ مع 16 خانة نحصل على 128+64+20=212 بايتا. إذن المخزون الأقل من 20 لا يضمن حمولة أقل.
  • هذه حمولة المصفوفات المعلنة فقط، دون وصف الكائنات أو مساحات العمل أو ذاكرة الجهاز؛ لم نقس السرعة أو ندع أن أحد التمثيلين أنسب لكل مهمة.

ما الذي نخزنه بجانب القيم؟

يصف توثيق CSR القيم في data، وفهارس الأعمدة في indices، وحدود كل صف عبر indptr. [1]

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

نفترض 8 بايتات للقيمة و 4 لكل فهرس ومؤشر. هذه أحجام اخترناها للمقارنة، وليست ضمانا لأحجام كل مصفوفة في كل بيئة. إذا تغير أحدها نعيد الحساب، ولا نحفظ النتيجة 92 بوصفها خاصية ثابتة لاسم CSR.

كم تكلف حمولة جدول كثيف؟

شكل الجدول أربعة صفوف وخمسة أعمدة، أي 20 موضعا. في التمثيل الكثيف المعلن نخزن قيمة لكل موضع، بما فيه الصفر. عند 8 بايتات للقيمة تصبح حمولة هذه القيم 20×8=160 بايتا.

هذا مرجع للمقارنة في تمريننا. لا يشمل وصف الشكل أو معلومات النوع أو الكائن الحامل للمصفوفة. نستخدم الحد نفسه في الجانبين: نحسب حمولة المصفوفات التي أعلنّاها، ولا نجمع إجمالي العملية في جانب ونقارن بحمولة القيم فقط في الآخر.

متى تتجاوز الفهارس ما وفرته الأصفار؟

نفترض أولا 6 خانات مخزنة موزعة على الصفوف. حمولة قيمها 6×8=48 بايتا، وفهارسها 6×4=24 ، ومؤشراتها 5×4=20. المجموع 92 ، وهو أقل من 160 بفارق 68 بايتا وفق فرضنا.

نفترض تمثيلا آخر للشكل نفسه فيه 16 خانة. تصبح حمولة القيم 128 ، والفهارس 64 ، والمؤشرات 20 ؛ المجموع 212 ، أي أكثر من 160 بمقدار 52. عدد الخانات 16 أقل من 20 ، لكن البيانات الإضافية قلبت مقارنة الحمولة.

صيغة هذا العقد هي 12 مضروبة في عدد الخانات، ثم إضافة 20. عند 11 خانة تصبح 152 ، وعند 12 تصبح 164. هذه حدود حسابنا المحدد، وليست عتبة عامة لاختيار التناثر في أي برنامج.

التمثيل المعلنالقيم: بايتالفهارس: بايتالمؤشرات: بايتالمجموع: بايت
كثيف؛ 20 قيمة160لا نضيف مصفوفةلا نضيف مصفوفة160
CSR؛ 6 خانات48242092
CSR؛ 16 خانة1286420212

ما حدود الرقم الذي حسبناه؟

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

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

المصادر ومتابعة القراءة

  1. SciPy: CSR representation (يفتح في نافذة جديدة)docs.scipy.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.