正在加载视频...

视频加载失败

رفته بودن نون بگیرن سر راهشون گفتن حالا یه چند تا مأمورم آتیش بزنیم! #اصفهان

29,877 次观看 • 2 个月前 •via X (Twitter)

0 条评论

暂无评论

原始帖子的评论将显示在这里

相关视频

اسماعیلییون از کسانی بود که بعد از خیزش ۱۴۰۱ پتانسیل خیلی بالایی برای سازماندهی نشون داد. کاری که خیلی‌ها هنوز هم از پسش برنمیان. متاسفانه اما بعد از نشست جرج تاون و منشور همگرایی، حواشی علیه‌ش بسیار زیاد شد و به مرور کنار رفت و دیگه مدت‌هاست چیزی ازش نمی‌شنویم. به شخصه با مواضع ضد اسرائیلی اسماعیلیون مخالفم و معتقدم کاری که اسرائیل با ج.ا کرد رو هیچ گروهی از اپوزوسیون و هیچ کشوری تا حالا نکرده. موضوع غزه، اولویت من ایرانی نیست. اما سیل هجمه‌هایی که بهش شد بیش از این اختلاف عقیده بود. هزاران اتهام ریز و درشت بهش زده شد که اکثرا بی‌اساس بودن. مضحک‌ترینش این بود که اسپیس گذاشته بودن و مدارک همکاری اسماعیلیون با سپاه رو منتشر میکردن و میگفتن زن و دخترش اصلا کشته نشدن! هدفم از نوشتن این متن اینه که ببینیم چرا پتانسیل‌هایی که داریم، حتی با وجود اختلاف عقیده، سر جای خودشون بکار گرفته نمی‌شن؟ چرا یکی یکی کنار زده میشن؟ چرا از بین این همه چهره‌هایی که میتونستن کاری کنن، قاسمی نژاد و کیانی و... شدن تیم تصمیم‌گیری؟ چرا اختلاف عقیده‌ها اونقدر تبدیل به کینه میشن که برای طرف اسناد جعلی همکاری با سپاه ساخته میشه؟ چی شد که این تیم فعلی اپوزیسیون شد بهترین ترکیب ممکن؟ کارنامه عملکرد این تیم تا حالا چند اقدام مثبت داشته و چند اشتباه مهلک؟

خود آ

124,466 次观看 • 19 天前

این روایت شجاعت دلیرانه‌ی یک مجیدرضای دیگر است؛ این بار با نام فرهاد، از اصفهان. «پسرم، کسی ندید تو چطور جنگیدی؛ تو اندازه‌ی یک ارتش جنگیده بودی...» فرهاد مغازه‌ی پوشاک داشت، ۴۱ ساله و صاحب دو کودک بود. روز ۱۹ دی، چنان جان همرزمانش را در خیابان نجات داده بود که هم‌محله‌ای‌هایش هنوز هم از شجاعت فرهاد حرف می‌زنند. ۲۱ دی‌ماه، حوالی ساعت ۸ شب، جلوی مغازه‌اش مزدوران شروع به تهدید مردم کرده بودند. فرهاد شروع به شعار دادن کرده بود و درگیر شده بودند. به هفت نفر رسیده بودند؛ چنان لت‌وپارشان کرده بود که دو واحد مزدور دیگر هم از راه رسیده بودند. فرهاد با اینکه دستش شکسته و پایش مجروح شده بود، توانسته بود تا جایی فرار کند؛ اما هفت بار از پشت سر به او شلیک کردند. دست و پایش را شکستند. فرهاد اما هنوز هم می‌توانست زنده بماند، تا اینکه آن آخرین سیاهی از راه رسید و گلوله‌ی خلاص را به سرش شلیک کردند. پیکرش را بردند، خانواده‌اش هنوز هم زیر تهدید و فشارند. مغازه‌اش را تخریب کردند و خودرویش را ربودند. فرهاد سه سال پیش یکی از فرزندانش را از دست داده بود. حالا از او یک کودک پنج‌ماهه و پسری ۱۵ ساله به یادگار مانده است. جمهوری اسلامی، جاویدنام #فرهاد_پورکاوه_دهکردی را ۲۱ دی در بهارستان اصفهان کشت. #فرهاد_پورکاوه

Immortal 🇮🇷

19,523 次观看 • 19 天前

در شرایطی که اتهام پادشاهی خواهی، صراحتا و عملی اثبات شد حکم تیر داره، سعی داشت با پرونده سازی از ماه ها پیش، بتونه به هر شکلی من رو حذف کنه. جرجندی هنوز مشخص نکرده بعد از ۸ ماه کوهی از اطلاعاتی که راجع به ایمیل های مرصاد داره چیه. فقط نشون داد دسترسی به اطلاعاتی مرتبط با مرصاد داره که باهاش برای بقیه پرونده سازی کنه و اخاذی کنه و از دهنش در رفته. فقط قطعات پازل این ۸ ماه مشخص کرده با احتمال بسیار بسیار بالا جرجندی یه مهره امنیتی صادراتیه که کاملاً سوخته و سعی داره خودشو اپوزیسیون رنگ کنه. سر قضایای QRCode و سوتی هایی که سر نیکا شاکرمی و وحید اشتری داد، چهره واقعیش رو دائم نشون داد ولی سریع رفت پشت نقش مبارزه با کلاهبرداران سایبری. او یک پرونده ساز است، لازم باشد به رهبری هم توهین می‌کند که بتواند فردا گرگ در لباس بره باشد تا بتواند پرونده سازی کند و چهره سوخته خودش رو پاک کنه. توییتی که راجع به حذف اثر انگشت از قفل گوشی پاک کرده هیچگاه از تاریخ پاک نمی‌شه.

🏴JannatKhah🔩🪰

56,737 次观看 • 8 个月前

خودشیفته، نارسیسیت، نابالغ، اینسکیور، دغل‌باز، لاشی... فرقی نمی‌کنه که اسمش رو چی بذارید. اما اگه اندازه ۵ دقیقه حوصله کنید می‌خوام برای شما از یک لحظه بگم. لحظه‌ای که اولین جرقه‌ی همه دردسرهای بعدی رو می‌زنه. لحظه‌ای که مثل تیغی در گلو هم دردآوره و هم اجازه نمی‌ده غذا بخوری. که اگه فکری به حالش نکنی، باعث می‌شه سوتغذیه نحیفت کنه یا حتی بکشتت. (قبلش ویدیوی این پست رو ببینید) 🔖 پرده اول: کودکی گریه می‌کنه. شاید از گشنگی کلافه شده، شاید از تنهایی ترسیده. شاید پوشکش اذیتش می‌کنه. شاید پرخاش مراقبینش به همدیگه رو دیده. دستانش رو در هوا تکون می‌ده و رد چشمانش به دنبال چهره گرم مامان یا دست حمایتگر بابا می‌گرده. مامان درد مزمنی پیدا کرده. شاید کمرش درد می‌کنه. شاید چند وقتیه درگیر ترفیع شغلی باباست چون بابا پروژه جدیدی گرفته و چند وقتیه دیر وقت به خونه میاد و در دسترس نیست. مامان شاید بعد از زایمان، افسردگی گرفته. شاید مشکل مالی‌ای پیش اومده و بابای تحت فشار، مامان رو هم مضطرب و نگران کرده. شاید مامان و بابا به این‌جای زندگی فکر نکرده بودن و حالا چکه‌های گاه و بی‌گاه سقف رابطه‌شون تبدیل به نم‌گرفتگی همیشگی و پوسیدگی رنگ و گچ شده. هر چه که هست چشم‌های کودک می‌گرده و خط نگاهش به چهره در هم کشیده‌ای می‌خوره. به چشمانی کم‌فروغ. به صورتی عصبانی. به لب‌هایی که گوشه‌هاش پایین افتاده. به ابروهای درهم‌کشیده‌ای که نشانی از محبت در اون‌ها نیست. شاید چشم‌‌های کودک می‌گرده و می‌گرده اما نگاهی پیدا نمی‌کنه. و این نه ماجرای امشب و هفته پیش و ماه گذشته، بلکه پاسخیه که - شاید همیشه، شاید گاه‌به‌گاه - اما مستمر و پیوسته دریافت می‌کنه: ⚡️لحظه‌ای که چشم‌ها به جست‌وجوی چشمه خنک و زلال توجه و محبت رفتن اما تشنه، با مشک خالی و با مُشتی خاک در کام برگشتن. 🔖 پرده دوم: کودک بزرگ‌تر می‌شه. به هر حال شیرین و بامزه‌اس (مگر این که خیلی بدشانس باشه که حتی بامزه و لپ‌دار هم نباشه). اون‌طور که هر کودک ۳-۴ ساله‌ای به توجه و دیده شدن نیاز داره، او هم به دنبال نیازش می‌گرده. مثل ریشه‌ای در خاک به دنبال آب، مثل گرسنه‌ای به دنبال غذا. شاید اگه بچه گربه وحشی رو در جنگل یا صحرا پیدا کنید و نون خشکی جلوش بندازید، حتی بوش هم نکنه. اما گربه‌ی توی کوچه - البته نه کوچه‌های حالا که پر از غذای خشک خارجیه - با دنده‌هایی که از زیر پوستش کمی معلومه و تن نحیفش، همون نون خشک رو هم به دندون می‌کشه و با میو کردن ضعیفی سعی می‌کنه شما رو راضی کنه تا سوسیس وسط نون که بوش بهش خورده رو هم بهش بدید. هر چه که هست، کودک به روشی که نمی‌دونه از کجا میاد ولی براش کار می‌کنه، توجه رو می‌گیره و سیراب می‌شه. شاید چون مودبه، شاید چون همیشه موهاش آب و شونه شده‌اس، شاید چون بلده دست به کنترل تلویزیون نزنه. شاید چون وقتی عصبانیه می‌گه چشم و گریه نمی‌کنه، شاید چون بلده شعری که بچه‌های ۷-۸ ساله با مشکل می‌خونن رو از حفظ بخونه. شاید چون بلده باز هم به چشمان بی‌فروغ و صورت در هم‌کشیده یا لب‌هایی که نمی‌جنبه و شاید حتی چشمی که نیست، نگاه کنه بی آن که خم به ابرو بیاره. در عوض کاری کنه که اون چشم‌ها اندکی برق بزنن و لب‌ها کمی بخندن. ⚡️بالاخره راه‌حل کنار اومدن با اون لحظه پیدا می‌شه. 🔖 پرده سوم: نوجوون ۱۳ ساله در اتاقش نشسته و با خودش فکر می‌کنه - یا شاید حتی فکر نمی‌کنه و بعداً متوجه جریان ناخودآگاه فکرش می‌شه - و می‌گه: «دیدی چه بیابان وحشتی بود؟ دیدی که چه گرسنه و تشنه بودیم؟ اما ما موفق شدیم. نه! یه ذره دیگه تا موفقیت مونده... ولی دیدی چیزی رو ساختیم که دیگه همه چشم‌ها با ذوق و همه لب‌ها با خنده باهاش روبرو می‌شن؟ می‌دونم... همه‌ی همه که نیست. کلی چهره هست که تا حالا ندیدیم. این صورتایی که هر روز می‌بینیم هم به نظر می‌رسه هنوز هم بعضی وقت‌‌ها در‌هم‌کشیده و کم‌فروغه. آخ! دیدی پریروز دو تاشون بهمون لبخند نزدن؟ خیلی تلخ بود. ولی جای نگرانی نیست. چون این چیزی که داریم می‌سازیم یکم دیگه، اگه فقط یکم دیگه روش کار کنیم دیگه به همه چشم‌ها و لب‌ها ذوق و خنده میاره» 🔖 از پرده سوم به بعد، برنامه‌ریزی پیش‌فرض مشخصه: یکم دیگه روی اون چیزی که داریم می‌سازیم کار کنیم تا دیگه همه بپسندنش. تا دیگه از اون جست‌وجو با کام تشنه و پرخاک و مشک خالی برنگردیم. تا دیگه اون لحظه ⚡️ تکرار نشه. اما کیه که ندونه دنیا کارش ناکام کردنه؟ کیه که ندونه آدم‌ها اصلاً به مشک ما نگاه نمی‌کنن که بخوان پرش کنن؟ این رو من و شما می‌دونیم، اما گربه‌ای که با نون خشک سیر شده نمی‌دونه. ریشه‌ای که جون کنده تا خودش رو به آب برسونه نمی‌دونه. و این همون تیغ در گلوست. هر ارتباط جدید با برنامه‌ریزی پیش‌فرض تکرار نشدن اون لحظه آغاز می‌شه و بعد از اندکی - اگه ادامه‌دار بشه - به گروگان گرفته می‌شه تا هیچ وقت باعث رخ دادن دوباره اون لحظه ⚡️ نشه. به هر حال اون لحظه خیلی خیلی دردناکه و ما هم این همه سال زحمت کشیدیم تا این محصول همه‌پسند رو بسازیم. حالا درسته کماکان یکی دو تا جاش گیر و گور داره. اما تیم توسعه قول داده با فیدبک‌های جدید حتماً محصول نهایی رو تا چند ماه دیگه آماده کنه. چیزی که مهمه اینه که تیغ رو دست نزنیم. چون دست زدن بهش درد داره. اما خب این شکم گرسنه نیاز به غذا داره. با هر لقمه هم تیغْ گلو رو خراش می‌ده و درد داره و غذا بهش می‌چسبه. درسته که یکمی درد داره. اما محصول ما قراره درد تیغ رو در نسخه نهایی کاملاً رفع کنه. از طرفی اگه تیغ رو دربیاریم ممکنه گلومون بچسبه بهم و دیگه نتونیم غذا بخوریم. حتی تیم توسعه گفته شاید کل دستگاه گوارش رو از کار بندازه. ما که نمی‌دونیم چی می‌شه. بعد خب معده و روده رو هم نمی‌شناسیم که بخوایم بهشون رسیدگی کنیم. فقط تیغ و گلو رو می‌شناسیم و غذا. ولی این درد گلو باعث می‌شه نه درست طعم غذا رو بفهمیم، نه درست بجویم و قورتش بدیم. بقیه هم تا کی تحمل آخ و اوخ و غذا خوردن خاص ما رو بکنن؟ خسته می‌شن دیگه... البته ما هم می‌تونیم سریع‌تر از سر سفره پاشیم تا کسی متوجه تیغ در گلو و رژیم خاصمون نشه. رژیم غذاییمون هم به خاطر عفونت و زخم‌های مکرر محدود و محدودتر می‌شه. ♻️ و زندگی همین‌طور پیش می‌ره... اگه خوش‌شانس باشیم، با یکی هم‌سفره می‌شیم که بالاخره یه فیدبکی به این محصول و این حقیقت که هنوز بعد از این همه سال تحقیق و توسعه نتونسته مشکل تیغ در گلو رو حل کنه، بده. و سوالی که بعد از اون هر بار تکرار می‌شه و باید بهش جواب بدیم، اینه: آیا جرئت مواجه شدن با اون لحظه⚡️ و در آوردن تیغ و درد و مراقبت‌های بعدش رو داریم... یا به کار روی محصول ادامه می‌دیم؟

Mehdi Jahani

17,783 次观看 • 9 个月前

💣بدنه اجتماعی هسته سخت جمهوری اسلامی، بزرگترین خطر دوران پساخامنه‌ای برای ایران این آدمهایی که برای مرگ #خامنه‌ای تو این شرایط دارن عزاداری می کنن رو کسی به زور نیاورده بیرون. با ساندیس و اتوبوس مجانی هم اینجا نیستن. اینها همون پایگاه اجتماعی و فرهنگی و پیاده نظام #هسته_سخت قدرت جمهوری اسلامی هستن. کم و بیش ۱۵ تا ۲۰ درصد مردم. چیزی بین ۱۲ تا ۱۸ میلیون نفر. اینها حاضرن برای عقیدشون بکشن و کشته بشن. کاملا هم آخرالزمانی فکر می کنن! رهبران جمهوری اسلامی رو میشه با بمب و موشک حذف کرد ولی این جماعت رو نمی تونی با بمب و موشک حذف کنی. هر چه بیشتر حذف کنی ازشون مثل یه خرس زخمی خطرناک تر می شن. باید فکری اساسی به حال این مسئله کرد. جوگیری، ذوق زدگی از کشته شدن خامنه‌ای و چند تا سپاهی و نگاه فانتزی به رژیم چینج رو باید گذاشت کنار. سرنگون کردن جمهوری اسلامی پلی استیشن و کال آف دیوتی بازی کردن نیست. اینها رو نتونیم اقناع کنیم جنگ داخلی راه می افته! با فحش دادن تو توییتر و هشتگ #جاويدشاه‌ و #از_دموکراسی_بگو و #زن_زندگی_آزادی نمی تونی اینا رو سر عقل بیاری. با بمباران خارجی هم اینا متحد تر می شن. باید هر چه سریعتر برای این وضعیت خطیر چاره ای اندیشید...

Ali Bornaei

150,418 次观看 • 7 个月前

شرم بر Object oriented programming! خیلی درباره‌ی بازدهی در برنامه‌نویسی صحبت می‌شه و همیشه درباره‌ی الگوریتم سریعتر یا ساختمان‌داده‌ی مناسب بحث می‌شه. اما نی‌خوام درباره‌ی یه مساله‌ای که کمتر دیدم صحبت بشه موضوعی رو باز کنم. اون هم استفاده از ویژگی‌های cpuهای مدرن مثل prefetching یا SIMD ـه! قبل از همه چیز باید بدونیم پردازش مربوط به خوندن و نوشتن اطلاعات از روی RAM و اعمال دستورات روی CPU مربوط می‌شه. اما سرعت پیشرفت و بازدهی CPUها خیلی بیشتر از RAM بوده. این عکس فاصله‌ی بازدهی پردازنده‌ها رو با رم نشون می‌ده. یعنی اگر درست کد نزنیم پردازنده زمان زیادی رو منتظر اطلاعات می‌مونه تا بتونه کارش رو ادامه بده. در این بین خیلی از ویژگی‌ها مثل سطوح مختلف Caching در پردازنده‌ها ایجاد شده مثل L1, L2, L3 و احتمالاً موقع خرید CPU بهش برخورد کردید. کاری که این Caching انجام میده خوندن اطلاعات از رم و آماده نگه داشتن اونا وقتیه که CPU در حال محاسبه ست. (به صورت فیزیکی واقعاً نزدیکتر می‌شه) از سمت دیگه چندین هسته‌ی CPU و thread استفاده می‌کنیم تا به صورت موازی پردازش‌ها رو انجام بدیم. اما هرکسی تا حالا کد برای سیستم موازی زده باشه می‌دونه اصلاً راحت نیست و الزاماً استفاده از دو خط موازی به معنی دوبرابر شدن سرعت نیست! بسته به سناریویی که قرار داریم ممکنه ۳۰ تا ۵۰ درصد افزایش سرعت داشته باشیم (بله سرعت دو برابر هم می‌رسیم مگر هیچ sync point ایی لازم نباشه اما خیلی محدوده!) اما در پردازنده‌های مدرن پردازش موازی به هسته یا thread محدود نمی‌شه. بلکه قابلیت SIMD وجود داره که کارش انجام یک عمل ریاضی روی چندین داده به صورت همزمانه. Single Instruction Multiple Data. همین‌طور CPUهای امروزی قابلیت خاصی برای پیش‌بینی شاخه در دستوراتی که اجر میشن دارند. به این صورت که وقت شما از if استفاده می‌کنید. CPU هر دو حالت true و false رو محاسبه می‌کنه و هر وقت شرط مشخص شد جواب شاخه‌ی درست رو بر می‌گردونه! حالا این قضیه در خودش یه سری روش اجرای کد و مشکل امنیتی هم داشته که مورد بحث ما نیست. حالا اگر طوری کد بنویسیم که CPU لازم نباشه مداوم branch بررسی کنه باعث افزایش سرعت پایپلاین‌های پردازشی می‌شیم. (جزییات بیشترش رو در uOps باید صحبت کنیم). حالا اگر تمام موارد بالا رو در نظر بگیریم و می‌تونیم بهینه‌ترین حالت ممکن کد بزنیم. فکر می‌کنید این افزایش سرعت تا چه حده؟ بستگی به سناریوی مساله می‌تونه بین ۱۰ تا ۱۰۰ برابر (حتی بیشتر) سریعتر باشه! اصلاً شوخی نمی‌کنم. اول مقاله نوشتم شرم بر object-oriented programming. این رو برای جلب توجه ننوشتم. در حقیقت این پارادایم برنامه‌نویسی حدود سال‌های ۸۰ میلادی محبوب شد و هنوز ادامه داره اما با پیشرفت تکنولوژی شاهد تغییر پارادایم نبودیم. در ابتدا که فاصله‌ی سرعت CPU و RAM به هم نزدیک بود تفاوت چندانی نمی‌دیدیم و همه چیز با OOP اکی بود. اما به مرور زمان که سخت‌افزار به روز شد نرم‌افزار وابسته به تفکر قدیمی باقی موند. مثلاً در OOP ما یه سری کلاس می‌سازیم و اونا رو encapsulate می‌کنیم و از اونا شی می‌سازیم و روشون پردازش انجام می‌دیم. یه چیزی مثل: struct particle { float x, y; float vx, vy; particle(const float x, const float y, const float vx, const float vy) : x(x), y(y), vx(vx), vy(vy) { } virtual ~particle() = default; virtual void update(const float delta_time) =0; }; یه کلاس خیلی ساده ذرات - particle که مختصات محیط دو بعدی x و y داره و به همین منوال سرعت در اون جهت. یه تابع virtual هم داره برای بقیه که ارث ببرند و ویژگی‌های متفاوت اضافه کنند. تو particle system یا سیستم ذارت که برای جلوه‌های ویژه VFX مثل دود، غبار، آب و غیره استفاده می‌شه ممکنه تا چندین میلیون ذره پردازش بشن (فیلم مومیایی رو یادتونه؟ آفرین همون شن‌ها) حالا من از اون کلاس ارث بردم و این تابع خیلی ساده رو پیاده کردم که فقط در هر فریم سرعت ذره رو حساب می‌کنه: void update(const float delta_time) override { volatile float x = this->x; volatile float y = this->y; x += vx * delta_time; y += vy * delta_time; this->x = x; this->y = y; } این که چرا volatile استفاده کردم به خاطر اینه که این مثال خیلی ساده ست و کامپایلر این تابع رو بهینه می‌کنه در اصل کاری که می‌کنه اجازه‌ی ساختن virtual table رو نمی‌ده و تابع بقیه جاها inline می‌شه. اما تو پروژه‌ی بزرگ با چند لایه ارث‌بری همیشه بهره بردن از بهینه‌سازی کامپایلر ممکن نیست. حالا جلوتر این رو هم بر می‌دارم که دعوایی نباشه. بعد هم کلاس particle system رو داریم که خیلی ساده هر ذره رو آپدیت می‌کنه. فقط توجه داشته باشید هر ذره به صورت یک شی در حافظه new می‌شه. حالا اگر ۱۰۰ میلیون پارتیکل رو یک بار آپدیت کنم حدود ۶۵۳ میلی‌ثانیه طول می‌کشه. بد نیست ها؟ افتضاحه! تو بازی ویدیویی که ۶۰ فریم بر ثانیه اجرا می‌شه ما ۱۶ میلی ثانیه وقت داریم تا چند میلیارد محاصبه رو انجام بدیم. (بدون volatile حدود ۵۳۰ میلی‌ثانیه) برای افزایش باذهی من یه کار خیلی ساده می‌کنم به جای این که تمام این ذرات رو new کنم که باعث می‌شه هر کدوم یه جای RAM به صورت تصادفی پخش بشن اونا رو پشت‌سر هم در یک آرایه قرار می‌دم. یعنی تمام آدرس اونا پشت‌سر هم قرار می‌گیره. فقط همین تغییر باعث می‌شه همین تعداد ۱۱۵ میلی‌ثانیه زمان ببره. حدود ۵ برابر سریعتر! همین تغییر کوچیک! چرا چون زمان پیدا کردن هر آبجکت به صورت پراکنده تبدیل شده به آدرس‌های پشت‌سر هم و CPU سریعتر می‌تونه اطلاعات رو بخونه! به این شکل: struct particles_chunk { std::vector > x; std::vector > y; std::vector > vx; std::vector > vy; } حالا در مرحله‌ی بعدی همون کد ساده رو با دستورات SIMD می‌نویسم. نتیجه‌ می‌شه ۱۱۸ میلی ثانیه: void update_simd(const float delta_time) { const size_t num_particles = particles_.x.size(); const size_t simd_end = num_particles - (num_particles % 8); const __m256 dt_v = _mm256_set1_ps(delta_time); for (size_t i = 0; i (1, std::thread::hardware_concurrency()); const size_t base_chunk_size = num_particles / num_threads; const size_t aligned_chunk_size = ((base_chunk_size + 7) / 8) * 8; std::vector threads; threads.reserve(num_threads); for (size_t t = 0; t (&particles_.x[i + prefetch_distance]), _MM_HINT_T0); _mm_prefetch(reinterpret_cast (&particles_.vx[i + prefetch_distance]), _MM_HINT_T0); _mm_prefetch(reinterpret_cast (&particles_.y[i + prefetch_distance]), _MM_HINT_T0); _mm_prefetch(reinterpret_cast (&particles_.vy[i + prefetch_distance]), _MM_HINT_T0); } _mm256_store_ps(&particles_.x[i], _mm256_fmadd_ps(_mm256_load_ps(&particles_.vx[i]), dt_v, _mm256_load_ps(&particles_.x[i]))); _mm256_store_ps(&particles_.y[i], _mm256_fmadd_ps(_mm256_load_ps(&particles_.vy[i]), dt_v, _mm256_load_ps(&particles_.y[i]))); } تا اینجا من هیچ کار عجیب و غریبی نکردم. حافظه مرتب، پشت‌سر هم و با استفاده از SIMD کد نوشتم. نه ساختمان‌داده مطرحه و نه الگوریتم و بیشتر از ۶ برابر افزایش سرعت رسیدیم! مثال بعدی که branch prediction باشه رو آخر تست یادم اومد و نشد با بقیه مقایسه کنم. اما به هر حال. فقط این مثال ساده رو ببینید: for (size_t i = 0; i < num_particles; ++i) { if (particles_.is_active[i]) { particles_.x[i] += particles_.vx[i] * delta_time; particles_.y[i] += particles_.vy[i] * delta_time; } } کاری که می‌کنیم با if چک کنیم اگر ذره فعاله سرعتش رو حساب کنیم اگر نیست هیچی. این مثال ساده حدود ۱۴۱ میلی ثانیه طول می‌کشه. اگر اون if رو حذف کنم و بیام به جاش در محاسبه غیرفعال بودن رو صفر در نظر بگیرم و جلوی branching رو بگیرم: void update_branchless(const float delta_time) { const size_t num_particles = particles_.x.size(); for (size_t i = 0; i < num_particles; ++i) { particles_.x[i] += particles_.vx[i] * delta_time * particles_.is_active[i]; particles_.y[i] += particles_.vy[i] * delta_time * particles_.is_active[i]; } } با این روش ۱۱۹ میلی ثانیه طول می‌کشه تا کدم اجرا بشه. یعنی با وجود if تقریباُ کد ما ۸۰ درصد اجرا می‌شه. این در شرایطیه که فعال بودن ذرات تصادفیه و cpu نمی‌تونه branch perdiction درستی داشته باشه. برای همین کند می‌شه. حالا شاید بگید که تو گفتی چند میلیون محاسبه زیر ۱۶ میلی‌ثانیه. بله درسته. من اینجا از دو thread استفاده کردم. فقط جنبه‌ی نمایش داشت از warmup و اینا هم اجتناب کردم چون در دنیای واقعی این پردازش‌ها می‌ره روی GPU و Compute shader که معرفی اون خودش یه پست دیگه ست. کدها رو روی CPU قدیمی اجرا کردم: Intel Core i7 6700K @ 4.00GHz Skylake 14nm 16.0GB Dual-Channel DDR4 @ 1069MHz اگر دوست داشتید این محاسبه رو با زبان برنامه‌نویسی مورد علاقه‌تون تست کنید و سعی در بهینه کردنش کنید. در ضمن اگر تمام اینا رو کنار هم بذاریم با یه سری مفاهیم شبیه به همین‌هایی که گفتیم با جزییات بیشتر می‌شه Data oriented programming که در زبان‌های مختلف مثل خانواده‌ی C، Rust، Zig و غیره براشون کتابخونه و آموزش موجوده. خلاصه بازدهی فقط به الگوریتم و ساختمان‌داده محدود نمی‌شه.

Mohamad Iraji

22,055 次观看 • 1 年前

روایتی از بازدید سعید جلیلی از نمایشگاه کتاب تهران دیروز با دکتر جلیلی راهی نمایشگاه کتاب تهران شدم. برای یک بازدید و نه یک حضور مانند حضور های سرزده و سرنزده، نه از آن حضور های پرطمطراق مسئول‌مآبانه و از سر سیری و نمایشی و دکوری. بلکه یک بازدید از جنس یک مرد کتابخوان، با همان حال و هوای کتاب‌بازها، رفته بود که کتاب ببیند و بخرد. اولش مهمان دو مراسم رونمایی کتاب بود. سالن پر شده بود، بیش از جا. اولی کتاب خاطرات شهید علی محمدی، دانشمند هسته‌ای، که همسرش بود و نویسنده و خود جلیلی. سالن انگار نفسش بند آمده بود از حضور آدم‌ها. کتاب بعدی هم «سلاح نامرئی» بود، نوشته‌ی مسعود براتی و سید حامد ترابی، که به ماجرای تحریم‌ها پرداخته بود. انتخاب این دو کتاب خودش حرف داشت. اولی پیامی بود به صورت آن‌هایی که ادعای علم بدون مرز دارند اما دانشمندان ما را ترور کردند، به قول جلیلی: «این شهدا، با همان دانش بومی، دشمن را چنان به هم ریختند که هنوز دست‌وپایشان را گم کرده‌اند.» کتاب دوم هم انگار یک ذره‌بین بود روی سلاح نامرئی دشمن، تحریم. جلیلی گفت: «ملتی که می‌خواهد به قله برسد، باید موانع را بشناسد و ازشان نترسد.» این دو کتاب‌ها از آن جهت انتخاب شده بودند که دو تیغ بودند، یکی برای نشان دادن راه، یکی برای زدن به ریشه‌ی مانع. از همان اول که پای مان را در نمایشگاه گذاشتیم جلیلی همانطور که پیشتر گفتم یک بازدید کننده و یک جفت چشم بود که انگار دنبال گنج می‌گشت در قفسه‌های کتاب. بعد از مراسم، جلیلی راه افتاد در غرفه‌ها. در میان این غرفه گردی ها چند نکته جالب به نظرم آمد: اول، دقتش عجیب بود. در هر غرفه که می‌رسید، نه از آن سوال‌های الکی که فقط برای پر کردن وقت باشد. کتاب‌ها را یکی‌یکی دست می‌گرفت، ورق می‌زد، چند خطی می‌خواند. حتی توی غرفه‌های گمنام، جالب آنکه یکی دو مورد پیش آمده بود کتاب‌هایی را می‌شناخت که غرفه دار از ته قفسه کشیدند بیرون، چون جلیلی اسمش را گفت. انگار این آدم، نقشه‌ی کل نمایشگاه را در سرش داشت. دوم، نگاهش به کتاب‌ها، نگاه یک آدم سیاسی نبود. یک کتاب‌باز واقعی بود. از غرفه‌ای که دو تا معلم شهرستانی برای بچه‌ها قصه نوشته بودند تا غرفه‌ی پژوهش‌های تاریخی درباره‌ی خلیج فارس. از ادبیات داستانی غرب تا کتاب‌های سینمایی، از غرفه‌ی یک دختر نوجوان که از دیدنش ذوق‌زده شد تا غرفه‌های شلوغ‌تر. جالب آنکه هر غرفه ای را که می ایستاد برای حال و احوال پرسی نبود، سر کتاب هایش می ایستاد و معمولا در هر غرفه ای مقداری از یکی دو کتابی که چشم اش را می گرفت را می خواند. سوم، عجیب بود که بیشتر غرفه‌هایی که سر زد، غرفه‌های کوچک و گمنام بودند. انگار عمداً از غرفه‌های پرزرق‌وبرق دوری می‌کرد. فقط آخر سر، دو سه تا غرفه‌ی اصلی را دید که دیگر داشتیم می‌رفتیم. چهار، پنج ساعت در نمایشگاه بودیم چندین جلد کتاب خرید، خریدنی که ما را هم به صرافت انداخت تا دو سه تایی از آن ها را خریداری کنیم. آنچه جلیلی از فرهنگ سیاسی و اهمیت کتابخوانی گفت را می شد در خود او دید او علم و کنش اش توییتری نیست کتابخوان است و به دنبال عمق در مسائل...

رضا صالحی

12,986 次观看 • 1 年前

🔴 میکائیل کوچک، #فرزند_ایران و #جان_فدای_وطن 🖋️الناز محمدی Elnaz - هم میهن: 💢۱۱ ساعت قبل از صبح مرگبار شنبه نهم اسفند، آن نقاشی کشیده شد. یک برگه سفید از دفتر نقاشی سیم‌دار که رویش ساختمان مدرسه است، روی آن پرچم ایران، پنج بچه در حیاط مدرسه و سه موشک که بر سر آنها فرود می‌آیند. دو جمله هم در آسمان بالای سر مدرسه نوشته شده‌اند: «پچه‌ها مردن» و «نیروی نزامی». «بچه‌ها» و «نظامی» را میکائیل، در آخرین شب زندگی‌اش اشتباه نوشته بود و اگر از ساعت ۱۰ و ۴۵ دقیقه صبح شنبه نهم اسفند، روز اول جنگی هولناک، بمب‌ها به مدرسه «شجره طیبه» میناب نمی‌رسیدند، حتما وقتی معلمش، «راضیه زمانی» که بدن متلاشی‌اش را از شنبه تا به حال هرچه گشتند پیدا نکردند، این جمله‌ها را می‌دید، درستش را به او یاد می‌داد. 🔸میکائیل، نقاشی را آن شب به برادرش، کوروش نشان داده و بعد با هم «سنگربازی» کرده بودند؛ میکائیل، «ایران» شده بود و کوروش، «آمریکا». سنگرها، بالش‌هایی رنگی و تفنگ‌ها، چند مداد که کنار هم دسته شده بودند. دست آخر میکائیل به مادرش گفته بود: «ایران برنده شد.» 🔸شکیبا دریکوند، مادر 31 ساله «میکائیل میردورَقی»، نقاشی را اما تا روز بعد ندیده بود؛ نقاشی بعد از آن به دستش رسید که پسرش را در اتاقک ماشین یخچال‌دار شناسایی کرده و بعد از هوش رفته بود. حالا او و بعد از دو هفته، با همان موبایلی که روز آخر و در پاگرد آپارتمان، آخرین عکس را به عادت هرروز و به خواسته میکائیل از او گرفت، از آخرین نقاشی‌اش هم عکسی گرفته و برایم فرستاده است؛ به ضمیمه چند فیلم که حالا یادگاران صدا و تصویر یک از دو پسر زن جوان اندیمشکی‌اند. 🔸میکائیل، کلاس سوم دبستان و 9 ساله بود. روز اول جنگ که موشک‌های آمریکایی از راه رسیدند، او و 167 دانش‌آموز دختر و پسر در مدرسه غیرانتفاعی «شجره طیبه» میناب کشته شدند. خانواده میکائیل، اهل اندیمشک‌اند و به‌دلیل شغل پدرش به میناب مهاجرت کرده بودند. شکیبا دریکوند، آنطور که خودش می‌گوید، «تک و تنها»، در «غربت» و در حالی که «هیچکس نبود دستش را بگیرد»، دنبال پسرش گشت، در مسیر خانه تا مدرسه، وقتی تمام شهر زیر پایش می‌لرزید، چندبار از هوش رفت و دست آخر او را در ماشین سردخانه، با صورتی خونی و بدنی سالم، در حالی که کوله‌پشتی‌‌ مدرسه‌اش را بغل کرده بود، پیدا کرد. 🔸میکائیل را سه روز بعد، در قطعه شهدا «بهشت زهرا لور» در اندیمشک به خاک سپردند و از او یک یادگاری عجیب به جا ماند: یک نقاشی‌ که او حتی تعداد بمب‌های آمریکایی را که مدرسه‌اش را خراب و همکلاسی‌ها و معلمانش را با تن‌هایی تکه و پاره با خود بردند، به‌درستی پیش‌بینی کرده بود.⁩⁩⁩⁩

AbdiMedia - Abdollah Abdi

26,265 次观看 • 6 个月前