payamvha/North_RAG huggingface dataset:
این رمان به مرور آنچه پس از انقلاب تونس روی داده‌است، می‌پردازد. داستانی در مورد ناامیدی به دنبال انقلاب‌های ناتمام عرب‌ها. همان‌طور که در این رمان توسط شخصیت‌هایی چون لیلا که اهل تونس، ساسان که اهل مصر و نظر که اهل سوریه است، گفته می‌شود: «اینها انقلاب نیستند، اینها فقط شایعات را فریاد می‌زنند». طرح کلی داستان این گونه است که لیلا از کشور سوئیس به خانه پدری‌اش در تونس می‌آید تا در مورد روابط و گذشته خود فکر کند. در این میان سفری را آغاز می‌کند تا به‌طور واقعی کشور وطن خود را بشناسد. چون تنها چیزهایی که او
کشور وطن خود را بشناسد. چون تنها چیزهایی که او از کشورش می‌داند داستانهای استعاره‌ای دریانوردان در مورد وطن و انقلاب است که پدر ماهیگیرش برای او تعریف کرده‌است. بخشی از متن کتاب این است: اگر او می‌توانست تصویری ساده از زندگی خود ترسیم کند، البته اگر به این اندازه آگاه بود، می‌دید که همه آن فقط رنج و عذاب بوده‌است. هر رنجی مسیر متفاوتی را به تصویر می‌کشد و معانی خاصی را بیان می‌کند که او از آن بی‌خبر بود… هر رنجی برای پیدا کردن راه خود مجبور به جستجوی رنج بعدی می‌شد… در این میان به دنبال راهی برای خلاصی
بعدی می‌شد… در این میان به دنبال راهی برای خلاصی می‌گشت و همواره می‌پرسید: کدام اتفاق مانند گردبادی ستون‌های زندگی یکنواخت او را لرزاند؟... درست هنگامی که انگیزه‌ای برای ادامه پیدا می‌کرد، همه چیز در نظرش پوچ می‌شد. مانند ماهیگیری که ماهی‌ای را صید می‌کند و سپس آنها را به دریا انداخته و منتظر یک ماهی بزرگتر می‌شود…. این کتاب در سال ۲۰۱۸ توسط ناشر «کیان للنشر والتوزیع» به زبان عربی در ۴۳۱ صفحه به چاپ رسیده‌است.
آزمون کلینگ یک آزمون شیمیایی برای تشخیص وجود اسید لاکتیک در شیره معده است. روش آزمون. دو قطره آهن(III) کلرید به لوله آزمایش حاوی آب مقطر اضافه می‌شود که بعد از مخلوط کردن به دو قسمت تقسیم می‌شود. یک میلی لیتر شیره معده در یک لوله آزمایش و همان حجم آب مقطر در لوله آزمایش دیگر اضافه می‌شود، که به عنوان نمونه کنترلی عمل می‌کند. لوله آزمایش با شیره معده در صورت وجود اسید لاکتیک به دلیل تشکیل فریک لاکتات، زرد رنگ می‌شود.
کارسون دالی (زادهٔ ۲۲ ژوئن ۱۹۷۳)، مجری تلویزیون، مجری رادیو و تهیه‌کننده آمریکایی است. او در سال ۲۰۰۲ با پیوستن به شبکه ان‌بی‌سی توانست به نقش‌های برجسته‌ای همچون مجری‌گری مسابقه خوانندگی آوا و برنامه امروز برسد. وی در فیلم "جو دِرْت" و "جوسی و پوسی‌کت" نقش‌آفرینی کرد.
باغ خواجه روستایی در بخش درح از توابع شهرستان سربیشه واقع در استان خراسان جنوبی می‌باشد. براساس سرشماری مرکز آمار ایران در سال ۱۳۸۵، جمعیت آن ۹۸ نفر (۲۷خانوار) بوده‌است. فاصله ارتباطی روستا تا درح: ۱۷ کیلومتر، تا سربیشه: ۱۰۰ کیلومتر و تا مرکز استان (بیرجند) ۱۶۵ کیلومتر است، روستای باغ خواجه به دلیل مهاجرت زیاد نسل جوان، به دلیل نبودامکانات و مشکلات زندگی از جمله فراهم نبودن محیط کسب و کار، به مثل بسیاری از روستاها و آبادی‌ها در حال خاموشی کامل است، تا حدی که در چند سال اخیر شاهد رشد منفی جمعیت هستیم، هر چند
در چند سال اخیر شاهد رشد منفی جمعیت هستیم، هر چند در ایام تعطیل (محرم، نوروز و …) با برگشت مهاجرین به روستا بر جمعیت روستا افزوده شده و شور و حال خاصی حکم فرما می‌شود. روستای مذکور از لحاظ آب و هوا دارای آب و هوای گرم و خشک است که از اوایل خرداد تا پایان شهریور ماه بادهای ۱۲۰ روزه در حال وزیدن می‌باشد.
عباس‌آباد روستایی در دهستان غیناب بخش مرکزی شهرستان سربیشه استان خراسان جنوبی ایران است. جمعیت. بر پایه سرشماری عمومی نفوس و مسکن در سال ۱۳۹۵ جمعیت این روستا ۵۴ نفر (۱۴خانوار) بوده‌است.
عباس‌آباد روستایی در دهستان لانو بخش درح شهرستان سربیشه استان خراسان جنوبی ایران است. جمعیت. بر پایه سرشماری عمومی نفوس و مسکن در سال ۱۳۹۵ جمعیت این روستا ۵۳ نفر (۱۸خانوار) بوده‌است.
کهنک روستایی در دهستان اسکل‌آباد بخش مرکزی شهرستان تفتان استان سیستان و بلوچستان ایران است. جمعیت. بر پایه سرشماری عمومی نفوس و مسکن در سال ۱۳۹۵ جمعیت این روستا ۱۹۹ نفر (۸۷خانوار) بوده‌است.
درخت توت یک روستا در ایران است که در دهستان لانو بخش درح واقع شده‌است. درخت توت ۳۰۰ نفر جمعیت دارد. این روستا با شهرستان تغاب در افغانستان فاصله ۶۰ کیلومتری دارد. رئیس پایگاه برادران: کاظم نخعی منابع. بنیامین نخئی
سبز رشد می کند (به انگلیسی: Green Grow the Rushes) یک فیلم سینمایی انگلیسی کمدی محصول سال ۱۹۵۱ میلادی است. تولید. این فیلم در ساحل رامنی مارش در حوالی شهر نیو رامنی فیلمبرداری شده است.
کلاته شیرپایین روستایی در دهستان لانو بخش درح شهرستان سربیشه استان خراسان جنوبی ایران است. جمعیت. بر پایه سرشماری عمومی نفوس و مسکن در سال ۱۳۹۵ جمعیت این روستا ۱۱۲ نفر (۳۵خانوار) بوده‌است.
کلاته شیر یا استخردراز روستایی در دهستان لانو بخش درح شهرستان سربیشه استان خراسان جنوبی ایران است. جمعیت. بر پایه سرشماری عمومی نفوس و مسکن در سال ۱۳۹۵ جمعیت این روستا ۱۲۹ نفر (۴۵خانوار) بوده‌است.
ویل راجرز جونیور (; – ) نماینده دموکرات کنگره آمریکا و بازیگر اهل ایالات متحده آمریکا بود. از فیلم‌ها یا برنامه‌های تلویزیونی که وی در آن نقش داشته‌است می‌توان به "جستجو"، "پسری از اکلاهما" اشاره کرد. وی همچنین برندهٔ جوایزی همچون نشان ستاره برنزی شده‌است.
آذرآباد، روستایی در دهستان آذرآباد بخش جلگه چاه هاشم شهرستان دلگان در استان سیستان و بلوچستان ایران است. این روستا، مرکز دهستان آذرآباد است. جمعیت. بر پایه سرشماری عمومی نفوس و مسکن در سال ۱۳۹۵، جمعیت این روستا برابر با ۶۰۶ نفر (۱۵۲ خانوار) بوده‌است.
آخرین روزهای دولوین (به انگلیسی: The Last Days of Dolwyn) (به نام "زنان دولوین" برای بازار آمریکا تغییر نام داده است) یک سینمایی در ژانر درام بریتانیایی محصول سال ۱۹۴۹ میلادی به کارگردانی املین ویلیامز و با بازیگری ادیت اوانز، املین ویلیامز، ریچارد برتون و آنتونی جیمز میباشند. انتقادات. این فیلم علی‌رغم نقدهای خوب ، به طور ناامید کننده در گیشه ناموفق شد.
ژنرال سر هنری کلینتون، کی‌بی (احتمالاً ۱۶ آوریل ۱۷۳۰ – ۲۳ دسامبر ۱۷۹۵) یک افسر و سیاست‌مدار ارتش انگلیس که بین سال‌های ۱۷۷۲ تا ۱۷۹۵ در مجلس عوام بریتانیا نماینده بود. او بیشتر برای خدمتش به عنوان ژنرال در جنگ انقلاب آمریکا شناخته می‌شود. نخستین بار در مه ۱۷۷۵ به بوستون وارد شد و از ۱۷۷۸ تا ۱۷۸۲ فرماندهٔ کل بریتانیا در آمریکای شمالی بود. علاوه بر خدمت سربازی، به دلیل نفوذ پسر عموی خود هنری پلهام-کلینتون، دوک دوم نیوکاسل که سال‌ها عضو پارلمان بودُ معروف است. در اواخر عمر او به عنوان فرماندار جبل‌الطارق تعیین
اواخر عمر او به عنوان فرماندار جبل‌الطارق تعیین شد، اما پیش از به دست آوردن این مقام درگذشت.
کت‌قرمز یا کت قرمز یک لباس نظامی تاریخی است که به شکلی گسترده توسط اکثر هنگ ارتش بریتانیا در طول قرون ۱۷ تا ۲۰ مورد استفاده قرار می‌گرفت. پوشش مخملی آن همچنان در قرن بیست و یکم مورد استفاده قرار می گیرد، در حالی که تعدادی از نیروهای مسلح کشورهای مشترک‌المنافع ملل متحد آن را به عنوان لباس همسان خود پذیرفته‌اند. از اواسط قرن هفدهم تا نوزدهم، لباس اکثر سربازان انگلیسی (به جز توپخانه ، تفنگ‌داران و سواره‌نظام) شامل یک کت قرمز روناسی بود. از سال ۱۸۷۳، سایه روشن قرمزنارنجی برای همه درجه‌های نظامی به تصویب رسید،
قرمزنارنجی برای همه درجه‌های نظامی به تصویب رسید، اما پیش از آن تنها افسران، گروهبانان و سواره‌نظام آن را می‌پوشیدند.
لباس دانشگاهی یا لباس آکادمیک لباس مخصوصی است که در مراسم‌های علمی و خصوصا جشن فارغ‌التحصیلی آن را می‌پوشند. این لباس معمولا جبه و کلاهی است که بر روی لباس رسمی معمول (کت و شلوار یا پیراهن) پوشیده می‌شود. منگوله کلاه معمولا از سمت چپ آویزان است اما برخی دانشگاه‌ها هستند که در آنها تا زمانی که فرد رسما اعطا مدرک نشده منگوله کلاهش به سمت راست است و سپس به چپ گردانده می‌شود.
دمای مؤثر یک جسم مانند ستاره یا سیاره دمای جسم سیاهی است که همان مقدار تابش الکترومغناطیسی را ساطع کند. معمولاً هنگامی که منحنی قابلیت انتشار یک جسم (به عنوان تابعی از طول موج) دانسته نباشد، "دمای مؤثر"؛ به عنوان برآورد دمای سطح آن جسم، مورد استفاده قرار می‌گیرد. هنگامی که میزان قابلیت انتشار خالص ستاره یا سیاره در باند طول موج مربوط کمتر از واحد باشد (کمتر از یک جسم سیاه)، این نشان بالاتر بودن دمای واقعی آن جسم از "درجهٔ حرارت مؤثر" خواهد بود. میزان قابلیت انتشار خالص می‌تواند به دلیل ویژگی‌های سطح و/ یا
انتشار خالص می‌تواند به دلیل ویژگی‌های سطح و/ یا اتمسفر آن جسم؛ که اثر گلخانه‌ای را هم شامل می‌شود، کم شده باشد. ستاره. دمای مؤثر یک ستاره همان دمای یک جسم سیاه با همان درخشندگی به عنوان یک ستاره در هر سطح (FBol) یا (formula_1) برابر قانون استفان-بولتزمن تعریف شده برابر است با: formula_2. با توجه به این که مجموع قدر مطلق درخشندگی ستاره formula_3 و formula_4 شعاع ستاره است. تعریف شعاع ستاره‌ای بدیهی و سرراست نیست. با دقتی بیشتر "دمای مؤثر" دما را در شعاع مطمئنی که با عمق نوری Rosseland (معمولاً ۱) مطابقت
که با عمق نوری Rosseland (معمولاً ۱) مطابقت دارد در جو ستاره‌ای تعریف می‌شود. "«درجه حرارت مؤثر»" و «درخشندگی بولومتری» دو پارامتر اساسی مورد نیاز از جسم برای قرار دادن یک ستاره در نمودار هرتزپرونگ-راسل است. هر دو درجه حرارت و میزان درخشش بولومتریک به ترکیب شیمیایی یک ستاره بستگی دارد. دمای مؤثر خورشید در حدود ۵۷۸۰ کلوین است (K). ستارگان دارای گرادیان دمای در حال کاهش هستند که از هستهٔ مرکزی آنها به اتمسفر حرکت می‌کند. «دمای اصلی» خورشید - درجه حرارت در مرکز خورشید که در آن واکنش‌های هسته ای رخ می‌دهد -
خورشید که در آن واکنش‌های هسته ای رخ می‌دهد - ۱۵٬۰۰۰٬۰۰۰ کلوین تخمین زده می‌شود. سیاره. دمای جسم سیاه. برای یافتن دمای مؤثر (جسم سیاه) یک سیاره، می‌توان آن را با سنجش و برابر ساختن توان دریافت شدهٔ سیاره از ستاره با توان شناخته شدهٔ ساطع شده توسط جسم سیاه آن، دمای T را محاسبه کرد. برای نمونه یک سیاره را در فاصله D از ستارهٔ مادر، با درخشندگی L در نظر گرفته می‌شود.
عضو D از خانوادهٔ ۲ دومِـین لکتین نوع سی () یک پروتئین است که در انسان توسط ژن «"CLEC2D"» کُدگذاری می‌شود. ژن یادشده، نوعی گیرنده از خانواده لکتین نوع سی را برای سلول‌های کشنده طبیعی کُدگذاری می‌کند که از ساخت استئوکلاست‌ها جلوگیری می‌کند و یک دومِـین تراپوسته‌ای در نزدیکی انتهای آمینی خود دارد.
عضو B از خانوادهٔ ۲ دومِـین لکتین نوع سی () یک پروتئین است که در انسان توسط ژن «"CLEC2B"» کُدگذاری می‌شود. پروتئین حاصله یکی از اعضای خانوادهٔ بزرگ پروتئین‌های حاوی لکتین نوع سی است که همگی در چسبندگی سلولی، پیام‌رسانی سلول-به-سلول، تجدید و بازیافت گلیکوپروتئین، التهاب و پاسخ ایمنی نقش دارند.
مجموعه تمایزی ۶۹ () یک پروتئین تراپوسته‌ای از نوع لکتین نوع سی است که در انسان توسط ژن «"CD69"» کُدگذاری می‌شود. این پروتئین، یکی از نخستین نشانگرهای فعال سازی است که بر روی سطح سلول‌های خون‌ساز اولیه، لنفوسیت‌های تی و بسیاری دیگر از انواع سلول‌های سیستم ایمنی بدن ظاهر می‌شود. این مولکول همچنین در تمایز لنفوسیت‌های تی و نگه‌داشتن آنان در درون احشاء لنفاوی نقش دارد.
عضو A از خانوادهٔ ۴ دومِـین لکتین نوع سی () یک پروتئین است که در انسان توسط ژن «"CLEC4A"» کُدگذاری می‌شود. پروتئین حاصله یکی از اعضای خانوادهٔ بزرگ پروتئین‌های حاوی لکتین نوع سی است که همگی در چسبندگی سلولی، پیام‌رسانی سلول-به-سلول، تجدید و بازیافت گلیکوپروتئین، التهاب و پاسخ ایمنی نقش دارند.
گیرنده لکتین وابسته به کلسیم و قابل القاء با ماکروفاژ () یا به اختصار گیرندهٔ مینکل که با نام CLEC4E هم شناخته می‌شود، یک پروتئین است که در انسان توسط ژن «"CLEC4E"» کُدگذاری می‌شود. این مولکول یک گیرنده شناسایی الگو است که گلیکولیپیدها و از جمله «فاکتور رشته‌ای» میکروب‌ها یا تری‌هالوز-۶٬۶'-دی‌میکولات (TDM) را شناسایی می‌کند. گیرندهٔ مینکل به طیف وسیعی از ساختارهای کربوهیداراتی اتصال می‌یابد، به‌ویژه اگر حاوی گلوکوز یا مانوز باشند، و نقش مهمی در شناسایی گلیکولیپیدهای میکروب‌ها توسط دستگاه ایمنی بدن ایفا
میکروب‌ها توسط دستگاه ایمنی بدن ایفا می‌کنند. پس از فعال‌شدن توسط «فاکتور رشته‌ای»، گیرندهٔ مینکل به گیرنده‌های Fc و FcRγ و Syk متصل می‌شود. «فاکتور رشته‌ای» میکروب‌ها به لکتین نوع سی ماکروفاژها نیز اتصال یافته و آنها را فعال می‌کند. لیگاندهای متفاوتی از طریق این گیرنده پیام‌رسانی می‌کنند که از آن میان می‌توان به پروتئین‌ها، استرول‌ها، گلیکولیپیدهای آسیب‌دیدهٔ خودی یا میکروبی (مثلاً لاکتوباسیلوس پلانتاروم، استرپتوکوک نومونیا، مایکوباکتریوم توبرکلوزیس و برخی انواع مالاسزیا) اشاره کرد.
گیرنده ۱ آسیالوگلیکوپروتئین () یک پروتئین است که در انسان توسط ژن «"ASGR1"» کُدگذاری می‌شود. این گیرنده یک پروتئین تراپوسته‌ای است که نقش حیاتی در هم‌ایستایی گلیکوپروتئین‌های سرم (خون) دارد و این کار را از طریق تنظیم و میانجی‌گری در آندوسیتوزِ بازماندهٔ تجزیهٔ لیزوزومی گلیکوپروتئین‌ها، و آشکارسازی ریشه‌های گالاکتوزی و ان-استیل‌گالاکتوزامین آنها انجام می‌دهد. گیرنده‌های آسیالوگلیکوپروتئین ممکن است عفونت کبدی توسط برخی ویروس‌ها، از جمله هپاتیت ب را تسهیل کند و یکی از اهداف مولکولی در انتقال دارویی مختص به کبد
یکی از اهداف مولکولی در انتقال دارویی مختص به کبد است.
گیرنده‌های آسیالوگلیکوپروتئین () لکتین‌هایی هستند که به آسیالوگلیکوپروتئین و گلیکوپروتئین‌هایی که سیالیک اسیدشان برداشته شده و ریشه‌های گالاکتوزی‌شان آشکار شده، اتصال می‌یابند. این گیرنده‌ها در هپاتوسیت‌های کبد واقع شده‌اند و گلیکوپروتئین یادشده را از جریان خون بر می‌زدایند. بیان این گیرنده‌ها بر سطح سلول‌های کبدی، رده‌های سلولی نامیرا برخی از انواع کارسینوماهای انسان و سلول‌های سرطان کبد تشدید می‌شود. این گیرنده‌ها به میزان اندکی نیز توسط سلول‌های غده‌ای کیسه صفرا و معده ساخته می‌شود. از لاکتوبیونیک اسید
صفرا و معده ساخته می‌شود. از لاکتوبیونیک اسید برای دارورسانی به سلول‌هایی که گیرنده‌های آسیالوگلیکوپروتئین را بیان می‌کنند، استفاده شده‌است.
لانگرین () که با نام CD207 هم شناخته می‌شود، یک پروتئین است که در انسان توسط ژن «"CD207"» کُدگذاری می‌شود. لانگرین یکی از انواع گیرنده‌های سطح سلول، لکتین نوع سی نوع دوم است که بر روی سلول‌های لانگرهانس پوست انسان یافت می‌شود. اهمیت بالینی. لانگرین‌های سلول‌های لانگرهانسِ مخاطی در بافت پوششی اندام جنسی انسان، قادر است به اچ‌آی‌وی-۱ متصل شده و آنرا به‌صورت «ریزدانه‌های بربک» درآورده و تجزیه کند.
در ساخت کامپایلر ، کاهش قدرت یک روش بهینه سازی کامپایلر است که در آن عملیات های پر هزینه با عملیات معادل اما کم هزینه تر جایگزین می شوند. مثال برای کاهش قدرتی ضرب های "قوی" در داخل حلقه را به جمع های "ضعیف تر" تبدیل می کند – چیزی که غالباً در آدرس دهی آرایه اتفاق می افتد. مثال هایی از کاهش قدرت عبارتند از: تجزیه و تحلیل کد. بیشتر زمان اجرای برنامه به طور معمول در یک بخش کوچک از کد (به نام منطقه داغ ) سپری می شود ، و آن بخش از کد اغلب در داخل یک حلقه است که بارها و بارها اجرا می شود. کامپایلر از روش هایی
بارها و بارها اجرا می شود. کامپایلر از روش هایی برای شناسایی حلقه ها و تشخیص ویژگی های مقادیر در آن حلقه ها استفاده می کند. برای کاهش قدرت ،به داده های زیر نیازمند است : ثابت های حلقه(Loop invariants) در اصل درون یک حلقه ثابت هستند ، اما ممکن است مقدار آنها در خارج از حلقه تغییر کنند. متغیرهای القایی با مقادیر شناخته شده(خاصی) در حال تغییر هستند. شرایط نسبت به یک حلقه خاص است. هنگامی که حلقه ها تودرتو باشند ، یک متغیر القایی در یک حلقه بیرونی می تواند یک ثابت حلقه ای (Loop invariants) در یک حلقه داخلی
ثابت حلقه ای (Loop invariants) در یک حلقه داخلی باشد. کاهش قدرت به دنبال عباراتی که شامل ثابت حلقه ای (Loop invariants)و متغیر القایی می گردد. برخی از این عبارات را می توان ساده سازی کرد. به عنوان مثال ، ضرب ثابت حلقه ای codice_1 و متغیر القایی codice_2 c = 7; for (i = 0; i &lt; N; i++) y[i] = c * i; می تواند با جمع های ضعیف تر پی در پی جایگزین شود c = 7; k = 0; for (i = 0; i &lt; N; i++) y[i] = k; k = k + c; مثال روش کاهش قدرت. در زیر مثالی وجود دارد که تمام ضرب های داخل حلقه که از محاسبات آدرس دهی فهرست
ضرب های داخل حلقه که از محاسبات آدرس دهی فهرست بندی آرایه (array indexing address calculations)به وجود آمده اند با روش کاهش قدرت ،بهینه سازد. یک حلقه ساده را تصور کنید که یک آرایه را به یک ماتریس هویت(identity matrix) می نشاند . for (i = 0; i &lt; n; i++) for (j = 0; j &lt; n; j++) A[i,j] = 0.0; A[i,i] = 1.0; کد واسطه. کامپایلر کد زیر را به عنوان گزاره زیر میبیند : 0010 ; for (i = 0, i &lt; n; i++) 0020 { 0030 r1 = #0 ; i = 0 0040 G0000: 0050 load r2, n ; i &lt; n 0060 cmp r1, r2 0070 bge G0001 0080 0090 ;
&lt; n 0060 cmp r1, r2 0070 bge G0001 0080 0090 ; for (j = 0; j &lt; n; j++) 0100 { 0110 r3 = #0 ; j = 0 0120 G0002: 0130 load r4, n ; j &lt; n 0140 cmp r3, r4 0150 bge G0003 0160 0170 ; A[i,j] = 0.0; 0180 load r7, n 0190 r8 = r1 * r7 ; calculate subscript i * n + j 0200 r9 = r8 + r3 0210 r10 = r9 * #8 ; calculate byte address 0220 fr3 = #0.0 0230 fstore fr3, A[r10] 0240 0250 r3 = r3 + #1 ; j++ 0260 br G0002 0280 G0003: 0290 ; A[i,i] = 1.0; 0300 load r12, n ; calculate subscript i * n + i 0310 r13 = r1 *
n ; calculate subscript i * n + i 0310 r13 = r1 * r12 0320 r14 = r13 + r1 0330 r15 = r14 * #8 ; calculate byte address 0340 fr4 = #1.0 0350 fstore fr4, A[r15] 0360 0370 ;i++ 0380 r1 = r1 + #1 0390 br G0000 0410 G0001: این کد آرایه 2 بعدی "A را" به عنوان یک آرایه 1 بعدی با ابعاد n * n تبدیل میکند ، به طوری که هر زمان که کد سطح بالا A [x ، y] را فرا میخواند ، از نظر داخلی(کامپایلر) A [(x * n) + y] برای هر مقدار معتبر x و y داده می شود. بهینه سازی های دیگر. کامپایلر شروع به انجام بسیاری از بهینه سازی های دیگر
شروع به انجام بسیاری از بهینه سازی های دیگر خواهد کرد – نه تنها کاهش قدرت. عباراتی که ثابت (invariant) در یک حلقه خارج از حلقه برافراشته(hoisted) هستند . ثابت ها را می توان در خارج از هر دو حلقه قرار داد - مانند ثبات های اعشاری fr3 و fr4. تشخیص اینکه برخی از متغیرها تغییر نمی‌کنند ، امکان ادغام ثبات ها را فراهم می آورد. n ثابت است ، بنابراین r2، r4، r7، r12 می توان آن ها را برافراشت و یا از بین برد. مقدار مشترک i * n در r8 و r13 (برافراشته)محاسبه می شود ، بنابراین آنها از بین می روند. درونی ترین حلقه
، بنابراین آنها از بین می روند. درونی ترین حلقه (0120-0260) از 11 به 7 دستورالعمل میانی کاهش یافته است. تنها ضربی که در پایین ترین حلقه باقی مانده است ، ضرب 8 در خط 0210 است. 0010 ; for (i = 0, i &lt; n; i++) 0020 { 0030 r1 = #0 ; i = 0 0050 load r2, n 0130 ; load r4, n killed; use r2 0180 ; load r7, n killed; use r2 0300 ; load r12, n killed; use r2 0220 fr3 = #0.0 0340 fr4 = #1.0 0040 G0000: 0060 cmp r1, r2 ; i &lt; n 0070 bge G0001 0080 0190 r8 = r1 * r2 ; calculate subscript i * n 0310 ; r13 = r1 * r2
; calculate subscript i * n 0310 ; r13 = r1 * r2 killed; use r8 ; calculate subscript i * n 0090 ; for (j = 0; j &lt; n; j++) 0100 { 0110 r3 = #0 ; j = 0 0120 G0002: 0140 cmp r3, r2 ; j &lt; n 0150 bge G0003 0160 0170 ; A[i,j] = 0.0; 0200 r9 = r8 + r3 ; calculate subscript i * n + j 0210 r10 = r9 * #8 ; calculate byte address 0230 fstore fr3, A[r10] 0240 0250 r3 = r3 + #1 ; j++ 0260 br G0002 0280 G0003: 0290 ; A[i,i] = 1.0; 0320 r14 = r8 + r1 ; calculate subscript i * n + i 0330 r15 = r14 * #8 ; calculate
i * n + i 0330 r15 = r14 * #8 ; calculate byte address 0350 fstore fr4, A[r15] 0360 0370 ;i++ 0380 r1 = r1 + #1 0390 br G0000 0410 G0001: برای بهینه سازی راه های بیشتری وجود دارد. ثبات r3 که متغیر اصلی است در درونی ترین حلقه (0140-0260) است. هر بار از طریق حلقه 1 عدد افزایش می یابد. ثبات r8 (که در درونی ترین حلقه ،ثابت (invariant )است) به r3 اضافه می شود. به جای استفاده از r3 ، کامپایلر می تواند r3 را از بین ببرد و از r9 استفاده کند. حلقه به جای اینکه توسط r3 = 0 تا n-1 کنترل شود ، می تواند توسط r9 = r8 +
r3 = 0 تا n-1 کنترل شود ، می تواند توسط r9 = r8 + 0 تا r8 + n-1 کنترل شود. این عملیات چهار دستورالعمل را اضافه می کند و چهار دستورالعمل را از بین می برد ، اما اکنون یک دستورالعمل کمتر در داخل حلقه وجود دارد. 0110 ; r3 = #0 killed ; j = 0 0115 r9 = r8 ; new assignment 0117 r20 = r8 + r2 ; new limit 0120 G0002: 0140 ; cmp r3, r2 killed ; j &lt; n 0145 cmp r9, r20 ; r8 + j &lt; r8 + n = r20 0150 bge G0003 0160 0170 ; A[i,j] = 0.0; 0200 ; r9 = r8 + r3 killed ; calculate subscript i * n + j 0210 r10 = r9 * #8 ;
subscript i * n + j 0210 r10 = r9 * #8 ; calculate byte address 0230 fstore fr3, A[r10] 0240 0250 ; r3 = r3 + #1 killed ; j++ 0255 r9 = r9 + #1 ; new loop variable 0260 br G0002 اکنون r9 متغیر حلقه است ، ولی با ضرب 8 تعامل دارد. در اینجا ما می توانیم با روش کاهش قدرت بهینه سازی انجام دهیم. ضرب در 8 را می توان به جمع های پی در پی 8 کاهش داد. اکنون هیچ ضرب در داخل حلقه وجود ندارد. 0115 r9 = r8 ; new assignment 0117 r20 = r8 + r2 ; new limit 0118 r10 = r8 * #8 ; initial value of r10 0120 G0002: 0145 cmp r9,
; initial value of r10 0120 G0002: 0145 cmp r9, r20 ; r8 + j &lt; r8 + n = r20 0150 bge G0003 0160 0170 ; A[i,j] = 0.0; 0210 ; r10 = r9 * #8 killed ; calculate byte address 0230 fstore fr3, A[r10] 0240 0245 r10 = r10 + #8 ; strength reduced multiply 0255 r9 = r9 + #1 ; loop variable 0260 br G0002 ثبات های r9 و r10 (= 8 * r9) هر دو دیگر مورد نیاز نیستند. r9 را می توان در داخل حلقه از بین برد. حلقه اکنون 5 دستورالعمل است. 0115 ; r9 = r8 killed 0117 r20 = r8 + r2 ; limit 0118 r10 = r8 * #8 ; initial value of
r2 ; limit 0118 r10 = r8 * #8 ; initial value of r10 0119 r22 = r20 * #8 ; new limit 0120 G0002: 0145 ; cmp r9, r20 killed ; r8 + j &lt; r8 + n = r20 0147 cmp r10, r22 ; r10 = 8*(r8 + j) &lt; 8*(r8 + n) = r22 0150 bge G0003 0160 0170 ; A[i,j] = 0.0; 0230 fstore fr3, A[r10] 0240 0245 r10 = r10 + #8 ; strength reduced multiply 0255 ; r9 = r9 + #1 killed ; loop variable 0260 br G0002 حلقه بیرونی. حال به کل کد نگاه میکنیم: 0010 ; for (i = 0, i &lt; n; i++) 0020 { 0030 r1 = #0 ; i = 0 0050 load r2, n 0220 fr3 =
{ 0030 r1 = #0 ; i = 0 0050 load r2, n 0220 fr3 = #0.0 0340 fr4 = #1.0 0040 G0000: 0060 cmp r1, r2 ; i &lt; n 0070 bge G0001 0080 0190 r8 = r1 * r2 ; calculate subscript i * n 0117 r20 = r8 + r2 ; limit 0118 r10 = r8 * #8 ; initial value of r10 0119 r22 = r20 * #8 ; new limit 0090 ; for (j = 0; j &lt; n; j++) 0100 { 0120 G0002: 0147 cmp r10, r22 ; r10 = 8*(r8 + j) &lt; 8*(r8 + n) = r22 0150 bge G0003 0160 0170 ; A[i,j] = 0.0; 0230 fstore fr3, A[r10] 0240 0245 r10 = r10 + #8 ; strength reduced multiply 0260
r10 = r10 + #8 ; strength reduced multiply 0260 br G0002 0280 G0003: 0290 ; A[i,i] = 1.0; 0320 r14 = r8 + r1 ; calculate subscript i * n + i 0330 r15 = r14 * #8 ; calculate byte address 0350 fstore fr4, A[r15] 0360 0370 ;i++ 0380 r1 = r1 + #1 0390 br G0000 0410 G0001: اکنون چهار ضرب در حلقه بیرونی وجود دارد که ثبات R1 را افزایش می دهند. ثبات r8 = r1*r2 در خط 0190 با روش کاهش قدرت میتواند قبل از ورود به حلقه (0055) و افزایشش توسط ثبات r2 در انتهای حلقه (0385) مقدار دهی شود . مقدار r8 * 8 (با شماره 0118) می
مقدار دهی شود . مقدار r8 * 8 (با شماره 0118) می تواند با مقدار دهی اولیه آن (0056) با کاهش قدرت و افزودن 8 * r2 به آن هنگام افزایش r8 (0386) مقدار آن کاهش یابد. ثبات r20 توسط متغیر ثابت R2 هر بار از طریق حلقه در 0117 خط افزایش می یابد. پس از افزایش ، در 8 ضرب می شود تا r22 در 0119 را بوجود آورد. این ضرب میتواند با روش کاهشی قدرتی با اضافه کردن 8 * r2در هر تکرار بار حلقه بهینه سازی شود. 0010 ; for (i = 0, i &lt; n; i++) 0020 { 0030 r1 = #0 ; i = 0 0050 load r2, n 0220 fr3 = #0.0 0340 fr4 = #1.0 0055 r8 = r1
n 0220 fr3 = #0.0 0340 fr4 = #1.0 0055 r8 = r1 * r2 ; set initial value for r8 0056 r40 = r8 * #8 ; initial value for r8 * 8 0057 r30 = r2 * #8 ; increment for r40 0058 r20 = r8 + r2 ; copied from 0117 0058 r22 = r20 * #8 ; initial value of r22 0040 G0000: 0060 cmp r1, r2 ; i &lt; n 0070 bge G0001 0080 0190 ; r8 = r1 * r2 killed ; calculate subscript i * n 0117 ; r20 = r8 + r2 killed - dead code 0118 r10 = r40 ; strength reduced expression to r40 0119 ; r22 = r20 * #8 killed ; strength reduced 0090 ; for
= r20 * #8 killed ; strength reduced 0090 ; for (j = 0; j &lt; n; j++) 0100 { 0120 G0002: 0147 cmp r10, r22 ; r10 = 8*(r8 + j) &lt; 8*(r8 + n) = r22 0150 bge G0003 0160 0170 ; A[i,j] = 0.0; 0230 fstore fr3, A[r10] 0240 0245 r10 = r10 + #8 ; strength reduced multiply 0260 br G0002 0280 G0003: 0290 ; A[i,i] = 1.0; 0320 r14 = r8 + r1 ; calculate subscript i * n + i 0330 r15 = r14 * #8 ; calculate byte address 0350 fstore fr4, A[r15] 0360 0370 ;i++ 0380 r1 = r1 + #1 0385 r8 = r8 + r2 ; strength reduce r8 = r1
+ #1 0385 r8 = r8 + r2 ; strength reduce r8 = r1 * r2 0386 r40 = r40 + r30 ; strength reduce expression r8 * 8 0388 r22 = r22 + r30 ; strength reduce r22 = r20 * 8 0390 br G0000 0410 G0001: آخرین ضرب. در آخر این دو حلقه ب که تنها با یک عمل ضرب (در 0330) در حلقه بیرونی و هیچ ضرب در حلقه درونی باقی می مانند. 0010 ; for (i = 0, i &lt; n; i++) 0020 { 0030 r1 = #0 ; i = 0 0050 load r2, n 0220 fr3 = #0.0 0340 fr4 = #1.0 0055 r8 = r1 * r2 ; set initial value for r8 0056 r40 = r8 * #8 ; initial value for r8 * 8
r8 0056 r40 = r8 * #8 ; initial value for r8 * 8 0057 r30 = r2 * #8 ; increment for r40 0058 r20 = r8 + r2 ; copied from 0117 0058 r22 = r20 * #8 ; initial value of r22 0040 G0000: 0060 cmp r1, r2 ; i &lt; n 0070 bge G0001 0080 0118 r10 = r40 ; strength reduced expression to r40 0090 ; for (j = 0; j &lt; n; j++) 0100 { 0120 G0002: 0147 cmp r10, r22 ; r10 = 8*(r8 + j) &lt; 8*(r8 + n) = r22 0150 bge G0003 0160 0170 ; A[i,j] = 0.0; 0230 fstore fr3, A[r10] 0240 0245 r10 = r10 + #8 ; strength reduced multiply
0245 r10 = r10 + #8 ; strength reduced multiply 0260 br G0002 0280 G0003: 0290 ; A[i,i] = 1.0; 0320 r14 = r8 + r1 ; calculate subscript i * n + i 0330 r15 = r14 * #8 ; calculate byte address 0350 fstore fr4, A[r15] 0360 0370 ;i++ 0380 r1 = r1 + #1 0385 r8 = r8 + r2 ; strength reduce r8 = r1 * r2 0386 r40 = r40 + r30 ; strength reduce expression r8 * 8 0388 r22 = r22 + r30 ; strength reduce r22 = r20 * 8 0390 br G0000 0410 G0001: در خط 0320 ، r14 مجموع r8 و r1 است ، و r8 و r1 در حلقه افزایش می یابد. ثبات r8
است ، و r8 و r1 در حلقه افزایش می یابد. ثبات r8 توسط r2 (= n) = افزایش میابد(bumped ) و r1 توسط 1 افزایش میابد . در نتیجه ، r14 در هر بار تکرار حلقه n + 1 افزایش می یابد. آخرین ضرب حلقه ، در خط 0330 می تواند با روش کاهش قدرتی با افزودن (r2 + 1) * 8 در هر تکرار حلقه بهینه شود . 0010 ; for (i = 0, i &lt; n; i++) 0020 { 0030 r1 = #0 ; i = 0 0050 load r2, n 0220 fr3 = #0.0 0340 fr4 = #1.0 0055 r8 = r1 * r2 ; set initial value for r8 0056 r40 = r8 * #8 ; initial value for r8 * 8 0057 r30 = r2 * #8 ; increment