در دنیای محاسبات امروزی، دادههایی که دارای روابط مکانی هستند، اغلب با استفاده از آرایههای چندبعدی یا ساختارهای تانسوری نمایش داده میشوند. برای نمونه، یک ویدئو را میتوان بهعنوان یک آرایهی چندبعدی در نظر گرفت و هر فریم از آن را با یک برچسب زمانی که موقعیت آن را نسبت به ابتدای ویدئو مشخص میکند، شناسایی کرد. با این حال، زبانهای برنامهنویسی فعلی توانایی ذاتی برای مرتبطسازی این فرادادههای موقعیتی با آرایهها را ندارند. این نقص، بار سنگین مدیریت موقعیتها را بر دوش کاربر میاندازد و در حوزههایی که آرایههای متعددی با روابط مکانی پیچیده وجود دارند، بهسرعت به کاری طاقتفرسا تبدیل میشود. این مسئله زمانی پیچیدهتر میشود که روشهای گوناگونی برای نمایش دادهها وجود داشته باشد، مانند استفاده از تصاویر فرافکنیشده، جایگشتها، ریزسازی و درشتسازی.
یکی از بارزترین حوزههایی که با چنین دادههای ناهمگون و مکانی دستوپنجه نرم میکند، فشردهسازی مبتنی بر بلوک است. این روش هسته اصلی استانداردهای معروف تصویر و ویدئو مانند JPEG، H.264، H.265 و H.266 را تشکیل میدهد. در این رویکرد، واحد پایه داده، یعنی بلوک، میتواند از یک ویدئوی کامل تا یک پیکسل منفرد را نمایش دهد. تمام این بلوکها باید موقعیت خود را نسبت به سایر بلوکها در برنامه حفظ کنند و این موقعیتها نقش کلیدی در فرایندهای پیشبینی، تبدیل و آنتروپیکدینگ ایفا میکنند. فقدان پشتیبانی مناسب از دادههای مکانی باعث میشود که هر پیادهسازی از صفر شروع شود و این امر به ناسازگاریهای گسترده در نحوه نمایش و دسترسی به دادهها منجر میشود، بهگونهای که حتی در یک پیادهسازی واحد نیز ممکن است از چندین نمایش متفاوت برای دادههای مشابه استفاده شود.
این رساله نگاهی عمیق و انتقادی به ارتباط بین موقعیت و تانسورها دارد و یک چارچوب انتزاعی بنیادین به نام «انتزاع تانسور جهانی» یا UniTe ارائه میدهد. UniTe بهطور ریاضی توصیف میکند که معنیِ همراهکردن موقعیت با یک تانسور چیست و چگونه میتوان روابط مکانی میان چندین تانسور را در یک برنامه واحد کمّیسازی کرد. این انتزاع، یک زبان مشترک برای توصیف موقعیت فراهم میآورد و به برنامهنویسان امکان میدهد تا بدون درگیرشدن با جزئیات پیادهسازی پایینسطح، از قدرت روابط مکانی بهرهمند شوند. UniTe با ارائهٔ مفاهیمی مانند فضاهای مرجع، نگاشتهای نقطهای و ساختار درختی، امکان تعریف موقعیتها را بهصورتی مستقل از نحوهٔ نمایش داده فراهم میکند و این موقعیتها را در برابر تغییراتی مانند جابهجایی محورها، تغییر ابعاد، تغییر مبدأ و تغییر چگالی نقاط، پایدار میسازد.
اگرچه UniTe به حوزه خاصی محدود نشده است، این پژوهش به طور عملی به کاربرد آن در فشردهسازی مبتنی بر بلوک میپردازد. پیادهسازی اولیه بهصورت یک کتابخانه، نشان میدهد که محاسبهی روابط مکانی و اندیسهای آرایه در عمیقترین سطوح حلقههای محاسباتی، سربار قابل توجهی ایجاد میکند. این سربار عملکردی، یک چالش جدی برای کاربرد عملی این انتزاع محسوب میشود. در واقع، کتابخانهای که بر اساس UniTe ساخته شده بود، در بدترین حالت تا ۶۵ برابر کندتر از کدهای دستنویس و بهینهشدهی سی اجرا میشد. این افت شدید عملکرد، عمدتاً ناشی از محاسبات اضافی برای تعیین اندیسهای واقعی در آرایههای زیرین و همچنین تخصیص مکرر حافظه برای ایجاد نماها (Views) در سطوح درونی حلقهها بود.
برای غلبه بر این مانع عملکردی، این رساله دو زبان خاصدامنه به نامهای CoLa و SHiM را معرفی میکند. این زبانها که بر پایهٔ UniTe ساخته شدهاند، همراه با کامپایلرهای اختصاصی خود، نشان میدهند که نه تنها میتوان سربار را حذف کرد، بلکه میتوان به عملکردی همتراز با کدهای دستنویس سی نیز دست یافت. CoLa که درون زبان پایتون تعبیه شده است، با استفاده از بهینهسازیهای سطح کامپایلر مانند حذف نماهای زائد و انتشار مقادیر ثابت موقعیت، موفق میشود تعداد تخصیصهای حافظه را تا بیش از ۱۴ هزار برابر کاهش دهد. از سوی دیگر، SHiM که درون زبان سیپلاسپلاس پیادهسازی شده، با بهرهگیری از تکنیکهای پیشرفتهٔ تولید کد مرحلهای (Staging)، تمام عملیاتهای مربوط به موقعیت را در کد تولیدی درونخطی (Inline) میکند. این امر به کامپایلر پشتیبان (مانند کلنگ) اجازه میدهد تا بهراحتی بهینهسازیهای لازم مانند حذف عبارتهای اضافی، جایگزینی تقسیمها با شیفتهای بیتی و حذف عملیاتهای شرطی را اعمال کند و در نتیجه کدی با کارایی حداکثری تولید شود.
این زبانهای خاصدامنه، روشی بصری و قدرتمند برای نمایش و استفاده از دادههای مکانی در اختیار برنامهنویسان قرار میدهند. آنها پیچیدگیهای مربوط به مدیریت موقعیت را پنهان میکنند و اجازه میدهند که توسعهدهندگان بر روی منطق اصلی الگوریتمهای فشردهسازی متمرکز شوند، نه بر روی جزئیات طاقتفرسای نمایهگذاری و ردیابی فراداده. به عنوان مثال، در استاندارد H.264، پیشبینی درونقاب (Intra-Prediction) نیازمند دسترسی به پیکسلهای سطر بالایی و ستون چپِ بلوک جاری است که در استاندارد با اندیسهای منفی نشان داده میشود. در کدهای دستنویس، این دسترسیها معمولاً با ترکیبی از محاسبهگر آدرس و اندیسگذاری آرایههای خطی پیادهسازی میشوند که خوانایی کد را به شدت کاهش میدهد. اما در SHiM، این دسترسیها بهصورت مستقیم و با همان اندیسهای منفی استاندارد نوشته میشوند، بدون آنکه نیازی به نگرانی دربارهٔ محاسبات زیرین باشد.
کاربرد عملی این چارچوب انتزاعی و پیادهسازیهای آن، در چندین نمونهٔ واقعی از کدهای فشردهسازی JPEG و H.264 به اثبات رسیده است. آزمایشهای عملکردی نشان میدهد که هر دو زبان CoLa و SHiM قادرند به عملکردی در سطح مراجع استاندارد که با دقت تمام بهصورت دستی بهینهسازی شدهاند، دست یابند. این دستاورد مهمی است، زیرا نشان میدهد که با طراحی صحیح میتوان بین سادگی استفاده و کارایی بالا آشتی برقرار کرد. علاوه بر این، این زبانها بهگونهای طراحی شدهاند که با ویژگیهای عمومی زبانهای میزبان خود (پایتون و سیپلاسپلاس) سازگار هستند و برنامهنویسان میتوانند از تمام امکانات این زبانها مانند حلقهها، شرطها و توابع کتابخانهای برای پیادهسازی بخشهای غیرمرتبط با موقعیت، مانند خروجی بیتاستریم، استفاده کنند.
فراتر از فشردهسازی، مفاهیم ارائهشده در UniTe و UniTeX پتانسیل کاربرد در حوزههای دیگری را نیز دارند که با دادههای مکانی سروکار دارند. برای نمونه، در روشهای مشبندی سازگار با ریزسازی (Adaptive Mesh Refinement) که در شبیهسازیهای علمی کاربرد گستردهای دارند، دادهها در سطوح مختلف با چگالیهای متفاوت نمایش داده میشوند و UniTe میتواند بهعنوان چارچوبی برای مدیریت این سلسلهمراتب و ارتباطات مکانی بین آنها عمل کند. همچنین در سیستمهای اطلاعات جغرافیایی (GIS)، محاسبهٔ آمارهای مکانی مانند جمع یا میانگین دادهها در یک ناحیهٔ مشخص، نیازمند یافتن دادههای متناظر با موقعیتهای تعریفشده توسط یک لایهٔ پوشش است که این نیز بهخوبی توسط مفاهیم هممکانی (Colocation) در UniTeX قابل مدلسازی است.
به طور کلی، این پژوهش گامی اساسی در جهت ارائهٔ پشتیبانی زبان برنامهنویسی برای حوزهٔ فشردهسازی مبتنی بر بلوک و سایر حوزههای مرتبط با دادههای مکانی برمیدارد. این کار نشان میدهد که با طراحی یک انتزاع مناسب و پیادهسازی هوشمندانهی آن، میتوان هم به سادگی و هم به کارایی بالا دست یافت. دستاوردهای این رساله، راه را برای ساخت نسل جدیدی از ابزارها و کتابخانههایی هموار میکند که میتوانند پیچیدگیهای فزایندهٔ استانداردهای آینده را مدیریت کنند و بار سنگین مدیریت دادههای مکانی را از دوش برنامهنویسان بردارند. با گسترش روزافزون دادههای چندرسانهای و نیاز به الگوریتمهای فشردهسازی پیشرفتهتر، اهمیت چنین چارچوبهای انتزاعی و ابزارهای پشتیبان بیش از پیش احساس خواهد شد.
| پیشگفتار | ۵ |
| فصل ۱: درآمدی بر مسئله | ۱۵ |
| فصل ۲: طراحی رمزگذارها | ۲۳ |
| فصل ۳: درک روابط مکانی | ۳۷ |
| فصل ۴: صورتبندی انتزاع تانسور جهانی (UniTe) | ۴۵ |
| فصل ۵: گسترش UniTe: معرفی UniTeX | ۵۹ |
| فصل ۶: کاربرد UniTeX در JPEG و H.264 | ۶۷ |
| فصل ۷: ملاحظات پیادهسازی | ۷۹ |
| فصل ۸: معرفی CoLa | ۸۹ |
| فصل ۹: معرفی SHiM | ۱۰۷ |
| فصل ۱۰: کارهای مرتبط | ۱۲۱ |
| فصل ۱۱: نتیجهگیری و کارهای آینده | ۱۲۷ |
| فهرست منابع | ۱۳۱ |
🔍 چگونه یک دادهٔ ساده، پیچیدهترین مسئلهٔ برنامهنویسی شد؟
تصور کنید یک فیلم را در رایانهتان باز میکنید. سیستم با هزاران فریم، پیکسلها، و بلوکهای داده سروکار دارد. اما چیزی که این فریمها را به هم مرتبط میکند، «موقعیت» آنهاست: فریم شماره ۱۰۰، دقیقاً کجای ویدئو قرار دارد؟ این سؤال بهظاهر ساده، در دنیای برنامهنویسی به معمایی پیچیده تبدیل میشود؛ چون بیشتر زبانها نمیدانند «موقعیت» را با داده همراه کنند. نتیجه؟ کدهایی که خواندن و نوشتن آنها طاقتفرساست.
📦 فشردهسازی مبتنی بر بلوک؛ قربانی اصلی بیموقعیتی
استانداردهایی مثل JPEG و H.264 بر پایهٔ «بلوکهای داده» کار میکنند. هر بلوک باید بداند همسایهاش کیست، بالاییاش کجاست، و در کل تصویر چه جایگاهی دارد. اما زبانهای رایج، این «آگاهی مکانی» را در اختیار برنامهنویس نمیگذارند. در نتیجه، هر پیادهسازی از صفر، روش خودش را برای ردگیری موقعیت ابداع میکند و این یعنی آشفتگی، باگهای نمایهگذاری، و کدهای مبهم.
«فقدان پشتیبانی از دادههای مکانی، بار مدیریت موقعیت را بر دوش کاربر میاندازد و در حوزههایی با آرایههای متعدد، به کاری طاقتفرسا تبدیل میشود.» — برگرفته از چکیدهٔ رساله
🧩 راهحلی به نام «انتزاع تانسور جهانی»
پژوهشگران با ارائهٔ چارچوب UniTe، گام بزرگی برداشتهاند: زبانی ریاضی که به هر تانسور (آرایهٔ چندبعدی) امکان میدهد «موقعیت» خود را بهصورتی استاندارد توصیف کند. این چارچوب نه تنها موقعیت را حفظ میکند، بلکه اجازه میدهد روابط پیچیدهای مثل «هممکانی» یا «دسترسی به همسایهها» را به سادگی بیان کنیم.
⚡ از تئوری تا عمل؛ وقتی کتابخانه کند از آب درمیآید
پیادهسازی اولیهٔ UniTe بهصورت کتابخانه، با سربار سنگینی مواجه شد؛ تا ۶۵ برابر کندتر از کد دستنویس سی. علت؟ محاسبات اضافی برای اندیسگذاری و تخصیص مکرر نماها (View) در حلقههای درونی. اینجا بود که محققان به سراغ زبانهای خاصدامنه (DSL) رفتند.
🚀 دو زبان، یک هدف: سرعت همتراز با دستنویس
CoLa (درون پایتون) و SHiM (درون سیپلاسپلاس) دو DSL هستند که سربار UniTe را حذف میکنند. CoLa با بهینهسازیهای کامپایلری، تعداد تخصیص حافظه را تا ۱۴ هزار برابر کاهش میدهد. SHiM نیز با تولید کد مرحلهای، همهٔ عملیاتهای موقعیتی را درونخطی میکند تا کامپایلر کلنگ بهراحتی آنها را بهینه کند. نتیجه؟ عملکردی همتراز با کدهای مرجع، اما با خوانایی بسیار بالاتر.
🌐 فراتر از فشردهسازی؛ کاربرد در شبیهسازی و GIS
مفاهیم UniTe فقط به فشردهسازی محدود نمیشوند. در شبیهسازیهای علمی با مشبندی سازگار (AMR) و در سیستمهای اطلاعات جغرافیایی (GIS) نیز نیاز به مدیریت موقعیت دادهها حیاتی است. این چارچوب میتواند به زبانی مشترک برای تمام حوزههای دادهمکانی تبدیل شود.