شما میتونی فیلم عملیات نجاتی رو پخش کنی که... تو اون فیلم هلیکوپتر دور میزنه اما سایهشرایط دور نمیزنه. اینم از عجایب هلیکوپترهای آمریکاییه حتما😂show more

علی مختارزاده
128,967 Aufrufe • vor 13 Tagen
اگه من جای اون افسر پلیس بودم، شما الان... داشتید فیلم درآوردن قابلمه از تو کون این طرفدار فلسطین رو تماشا میکردیدshow more

Sashti
67,467 Aufrufe • vor 1 Jahr
یه سرود «ای ایران» رو نمیتونن یاد بگیرن بعد... ادعاشون آسمونو پاره میکنه! اون از یاسمین پهلوی که میگفت: «بلد نیستم»؛ اینم که میگه: «ای میهن ار تو سنگ خاره میهنننن آهنم» والا آیکیوی جلبک از شما بالاتره! 🤣😂🤣🤣🤣🤣🤣🤣😂😂🤣😂show more

نیکا🎒
13,758 Aufrufe • vor 8 Tagen
عزیزان من مدیا رو زیر و رو کردم فقط... این فیلم از عروسی سیریک(کوهستک) وجود داره!! شما شاید ندونید اما هیچ کجای جنوب مخصوصا سمت بندرعباس نه اینجوری میرقصن و نه اینجوری لباس میپوشن حالا چه برسه به کوهستک که بخشی از روستای سیریک هستش!! اصلا میگیم که خانواده عروس اهل رامهرمز و باغملک بودن و اینجوری میرقصن! بقیه فیلم کجاست؟ چطوریه تو مملکتی که یه نفر با موتور میخوره زمین پنجاه نفر فیلم میگیرن،چرا #هیچ_فیلمی_از_عروسی_سیریک_وجود_نداره این داستان محصول مشترک بیبیسی و تسنیم هستش و کاملا دروغ میباشدshow more

MAMAD DAVAR/ممد داور
58,790 Aufrufe • vor 25 Tagen
فیلم جدید از "محمد اکبرزاده" که من ماه پیش... معرفی کرده بودم در کنار لاریجانی منتشر شده. نکته اینجاست که این آدم صرفا یک شخصیت سیاسی و به دور از فضای مجازی نیست. دوستمون #تامکت رو یادتونه؟ این فرد توی پخش اطلاعات شخصی مثل اسمش توی توییتر سهیم بوده، با حضور فعال در فضای مجازی.show more

MattTheRat 🇮🇷
152,606 Aufrufe • vor 6 Monaten
این فیلم چند روز بعد از سوختن انبار نفت... و بارون ترسناکیه که روی سرمون ریخته بود؛ میخواستیم سالاد درست کنیم. کدوم لحظه از زیست ما تو این کشور روزمرهای عادیه که گفتن ازش شما رو میترسونه و متهم میکنید به عادی سازی؟ پ.ن: ببخشید «اینترنت خدا میلیون تومنی» رو خرج کاهو کردم :))show more

Donya
154,364 Aufrufe • vor 5 Monaten
باورتون میشه، ۳۰ سال از اکران «سارا کرو» گذشت.... تو دهه ۷۰ چقدر برای مظلومیت این دختر اشک ریختیم. :) «پرنسس کوچک» (A Little Princess) به کارگردانی «آلفونسو کوآرون» که در ایران به نام «سارا کرو» معروف بود، داستان دختری جوان بنام «سارا» رو روایت میکنه که پدرش در هند مرده و اون مجبور به رفتن به یک مدرسه شبانهروزیه... این فیلم برگرفته از کتاب «سارا کورو، شاهزاده کوچک» اثر فرانسیس هاجسن برنته. وقت داشتید دوباره فیلم رو ببیند... A Little Princess 1995show more

فصلنامه سینمایی حلقه
14,197 Aufrufe • vor 1 Jahr
ترامپ به شکل عجیبی منحصر به فرده • اون... میدونه NBA جایی هست که برعکس NFL هوادارانش چپها، لاتینتبارها، آسیایی و سیاهها هستند. • اون میدونه هواداران NBA به طور میانگین بیشتر از رأیدهندگان دموکرات حمایت میکنند. • اون میدونه نیویورک جایی نیست که ترامپ رو دوست داشته باشن • اما ترامپ، میره به ورزشگاه Madison Square Garden تا فینال نیویورک نیکز-سنآنتونیو اسپرز رو ببینه و وسط پخش سرود ملی اینجوری «هو» بشه ولی با خونسردی وسط دشمنانش بنشینه. خانمها-آقایان این شما و این متفاوتترین، عجیبترین، منحصربهفرد ترین و آلفاترین رئیسجمهوری که در دوران معاصر دیده شده؛ پرزیدنت دونالد. جی ترامپshow more

Payam Mohamadi | پیام محمدی
66,647 Aufrufe • vor 3 Monaten
وااای وای🤣🤣🤣رژیم اینو با هوش مصنوعی ساخته و توی... اینستا پخش کرده و عرازشه ارگاسم شدن. 🔴🔴🔴👈دو نفر دارن جلوی کامیون اول راه میرن بعد یهو فرو میرن تو کامیون و خیلی ریلکس غیب میشن🤣. عین اون سکانس فیلم ماتریکسه که اسمیت موقع نبرد با نئو میفته جلوی ترن مترو و بعدش سالم درمیاد😂show more

mostafa1
293,675 Aufrufe • vor 1 Jahr
عزیزان، بخش آخر مصاحبهی ترامپ [ش گ خ]:😰 خبرنگار:... چرا برای مراسم امضای این توافق صلح با روافض قحبه نمیمونی؟ ترامپ [ش گ خ]: شاید موندم. [با این جملهش گوشت تن شغال طرقبه آب شد] خبرنگار: شاید؟ ترامپ ترامپ [ش گ خ]: آره، شاید. ولی خب، راستش عزیزجان این یه تفاهمنامهست. خیلی هم چیز مهمیه، ولی خب ممکنه از اونجور سندهایی نباشه که منِ رئیسجمهور باید پاش رو امضا کنم. خبرنگار: آیا این قضیه یه جورایی اینطوری نیست که شما معاون اول منزویبهکون رو میفرستید، بعد اگه کارا خوب پیش بره که عالیه و شما بابت فرستادنش مثل یه نابغه به نظر میرسید، اما اگه کارا خراب شه، تقصیر معاون قرمساقه؟ ترامپ ترامپ [ش گ خ]: از این ایده خوشم اومد، آره حتماً چرا که نه؟ اینطوری اگه کارا درست پیش بره، افتخارش رو من به نام خودم میزنم. اگر هم خراب شه، میندازم گردن جیدی منزویبهکون. جیدی بهتره حواست رو جمع کنی. [با خنده] جیدی منزویبهکون همین الان هواپیماشو دور میزنه و از اینجا فرار میکنه. ، آره، از این ایده خوشم میاد. به نظرم ایدهی خوبیه. خیلی ممنون از همگی.show more

Siavash
41,760 Aufrufe • vor 3 Monaten
درباره ریزش و گارد جاویدان و استارلینگ که به... اندازه کافی مردم پرسیده اند و شما هم به اندازه کافی پاسخ نگرفته اند . درباره ادعای جدید سازماندهی زیرزمینی ««« ده ها میلیون نفر »»» هم بهتر است شماره ساقی را پست شود ، تا پرسشگر ها هم ذره ای از این فضا دور شوند . می ماند بند « ۸ » و گسترش ارتباط با ترامپ ، که اون بخش هم ۵۰٪ این طرف قضیه است ، بریم ۵۰٪ طرف ترامپ رو با هم بینیم 👇 #بچههای_آیتاللهshow more

Saba.Bakhtyari
20,983 Aufrufe • vor 3 Monaten
برای شما هم جالب و غم انگیز بود که... هیچکدوم از سخنران های منتخب نایاک/سپاه/اصلاح طلب هیچوقت دستگیر نشده بودن، یک دقیقه هم هیچکدومشون زندانی سیاسی نبودن، حتی هیچکدوم تبعید هم نشده بودن، هیچ هزینه ای نداده بودن جز اینکه تا میشد از ملاها خوردن، بعد مد شد بگن رهبر براندازی هستن و بازم بخورن! بقول کریم نایاکی فقط #آرپی_جان این وسط سیاسی بود که همه جک و جونورهای نایاکی و سپاهی رو با سه تا سلبریتی دور همی جمع کرد. اون خبرنگار دزد فرصت طلب هم که از دروازه وسط پا برای خودش راه به بالاترین حلقه اصلاحات باز می کرد و اون عضو رسمی سپاه که نذاشت سپاه رو در کانادا بزارن توی گروه های تروریستی که دیگه نور علی نورشون بودن! بیچاره مردم خسته ایران که به این چغندر های خیانتکار باید امیدوار باشن چون #مراد_اینترنشنال و #تینا_تیوی خواستن اینا رهبر انقلاب بشن!show more

Amir Fakhravar
180,220 Aufrufe • vor 3 Jahren
اگه تو یه حادثه دست شما قطع بشه و... چند هفته دور از بدنتون بمونه و سیاه و فاسد بشه و کرم بزنه و بوی تعفنش بهتون حالت تهوع بده، بعد کسی بخواد اون رو بهتون پیوند بزنه پاسختون چیه؟ -مطمئنا رد میکنید. حالا اگه به یادتون بیاره این همون دستیه که اولین بار باهاش دست عشقتون رو گرفتید و باهاش رقصیدید و برف بازی کردید و کلی باهاش خاطره دارید و اصرار کنه که باید دوباره به بدنتون پیوند زده بشه، پاسختون چیه؟ -احتمالا اینبار نه تنها رد میکنید، بلکه فکر میکنید طرف مقابلتون دیوونهست و بهش فحش هم میدید. چون میدونید اون دست فاسد دیگه زنده نیست و ارزشی نداره و اگه به بدنتون پیوند بخوره، عفونت به سرعت کل بدن رو میگیره و شما هم میمیرید. سرزمینهایی مثل افغانستان و بخشهایی از پاکستان که قبلا از ایران جدا شدند دقیقا مثل همون دستهای قطع شده فاسد هستند که سالهاست اسلامزده(کرمزده) شدند و روح ایرانی تو اونها مرده و خون دولت شاهنشاهی پهلوی تو پیکر اونها جریان نداشته و به اندازه ۱۴ قرن از ما دور شدند و تفاوت فرهنگی و هویتی پیدا کردند. ایده پیوند سرزمینی یا حتی فرهنگی اونها به ما، نه تنها ما رو قویتر نمیکنه، بلکه مثل پیوند همون دست فاسد و کرمزده، عفونتش در سراسر پیکر مام میهن پخش میشه و تمام داشتههای ما رو نابود میکنه. در واقع با ایده احمقانه ایرانشهر، افغانستان ایران نمیشه، این تمام ایرانه که دقیقا تبدیل به افغانستان و پاکستان میشه. تو دام این ایدههای شرورانه و تخیلی پانایرانیستی که مستقیم از سپاه پاسداران خط میگیره نیفتید. ما ۴۷سال تمام جوانی و ثروتمون به پای ایده شرورانه هلال شیعی، هدر نرفت که حالا نیمقرن دیگه پول نفتمون رو خرج ایجاد گروههای تجزیهطلب افغانی و پاکستانی کنیم برای اینکه کشورمون رو به اون خاک فاسد زامبیخیز آلوده کنیم. آلودن پادشاهیخواهی به این ایدههای توسعهطلبانه فقط از الان برای ما هزینه میتراشه و تمام دولتهای همسایه رو تبدیل به دشمن شماره یک ما میکنه. سرزمینهایی که از ایران جدا و تبدیل به دولتهای مستقل شدند دیگه برای همیشه تموم شدند و از دست رفتند و ما باید به تمامیت ارضیشون کاملا احترام بذاریم. دوران کشورگشایی هم با پایان قرن بیستم تموم شد. ما الان باید تمام توانمون رو بذاریم رو پس گرفتن همین ایران فعلی و عظمت دادن به اون و تثبیت حاکمیت دولت شاهنشاهی پهلوی بر تمام قلمرو ایران و تلاش برای پس گرفتن حقوق غارت شدهمون در دریای کاسپین و خلیجپارس که توسط رژیم ایرانفروش به دشمنان ما رشوه داده شده. خبر خوب اینکه همین ایران فعلی به اندازه کافی بزرگ و ثروتمند هست که باهاش به اون عظمت و تمدن بزرگی که میخوایم برسیم. امارات و قطر بیابانهایی بودند با شنهای روان و آب و هوایی داغ و خشک و مردمی مارمولکخور و بیهنر، ولی بخاطر ثروت نفت و مدیریت درست و مسدود کردن راه شهروند شدن مهاجرین به این ثروت و رفاه امروزی رسیدند که حتی میتونن دولتهای بزرگ غربی رو با رشوه بخرن. ما که هم نفت و گاز رو از اونها بیشتر داریم، هم آب و خاک رو و هم متنوعترین اقلیمهای آب و هوایی رو و هم اینکه اسلامگرا نیستیم و برعکس اونها هزاران ساله که اهل دانش و هنر و ادبیاتیم و فرهنگ و تاریخ غنی و هویت ما پشتوانه چندهزارساله داره. یعنی ما با یه پادشاهی پهلوی و تصویب قوانین محکم مهاجرتی و تابعیتی شبیه امارات و کویت برای غیرممکن کردن اعطای شهروندی به غیرایرانیها و بعد اخراج میلیونی تمام افغانیها و پاکستانیها، ظرف ۲۰سال میتونیم چنان ایران با عظمت و مرفه و مقتدری بسازیم که شهروندی اون حتی آرزوی محال اروپاییها باشه و خوشبختی و رفاه کودکان آینده رو تا ۷۰ نسل بعد تضمین کنیم و به همون رویای بزرگ شاهنشاه آریامهر برسیم که آرزو داشت کودکان ایرانی از لحظه تولد تا آخرین لحظه زندگیشون کوچکترین دغدغه رفاهی و مالی نداشته باشند. #جاویدشاهshow more

Yaar - يار قدیمی 🇮🇷🇮🇱
65,374 Aufrufe • vor 19 Tagen
گزارش آتش سوزی داخل بازار رشت در پنجشنبه ۱۸... دی «ماجرا از اینجا شروع میشه که کسبهی بازار رشت از صبح چهارشنبه به اعتصابات پیوستند و عملاً اعتراضات داخل شهر رو تقویت کردند. از همون شب، فضا در مرکز شهر بهشدت امنیتی میشه. پنجشنبه ۱۸ دیماه، بخش عمدهی کشتهها در حوالی میدان شهرداری رشت بوده. میدان شهرداری چهار خیابون اصلی داره: سعدی، شریعتی، سبزهمیدان و امام خمینی. در این محدوده، مردم رو از هر چهار سمت به عقب میزدند؛ بدون هیچ نگرانیای بابت کشتهشدن شهروندان. به هر قیمتی اجازه نمیدادند مردم جلوتر برن. تیراندازی و استفادهی سنگین از گاز اشکآور فقط برای عقبزدن مردم انجام میشد. اگر به ویدیوهای آتشسوزیهای رشت نگاه کنید، بیش از ۹۵٪ آتشسوزیها دقیقاً در همین چهار خیابون منتهی به میدان شهرداری اتفاق افتاده؛ همون محدودهای که مردم رو با زور تیر و گاز عقب نگه داشته بودند. چون اون بخش بازار قدیمی هستش به شکل تو در تو هستش مردم فرار کردن داخل بازار که بتونن از اون سمت بازار که خلوت تر بودش فرار کنن و مامورا دنبال مردم. در همین زمان، بازار رشت از سمت خیابان شریعتی دچار حریق میشه. اون شب هم رشت با باد گرم شدید مواجه بوده؛ یعنی شرایطی که هر آتشسوزیای میتونه بهسرعت گسترش پیدا کنه. طبق گفتهی مغازهدارهای داخل بازار، بیش از یک ساعت و نیم اون محدوده کاملاً در آتش بوده، اما هیچ نیروی آتشنشانی برای مهار حریق وارد عمل نشده. این در حالیه که مهار آتش داخل بازار باید بالاترین اولویت ممکن میبود؛ چون بافت بازار قدیمی، متراکم، کوچهپسکوچهای هست و با وجود باد گرم، آتش خیلی سریع پخش میشده. یعنی از همون شب ۱۸ دیماه تا امروز، اگر داخل بازار برید و پای صحبت کسبه بشینید، حرف غالب یکیه: حکومت این بلا رو سر کسبهی بازار آورده چون بازار اعتصاب کرد.»show more

مملکته
16,545 Aufrufe • vor 8 Monaten
در مورد این جماعت اینستاگرامی وابسته به رژیم جمهمری... اسلامی که ثابت شده پروژه سپاه هستند از اون علی ضیا و خونشورها و اینفلوئنسرها گرفته تا این پسره مشکل دار حال بهم زن بسیار دلقک و لوده و بیاصل و نسب و گوساله.... من فکر میکنم واقعاً این جامعه هنرمندان/هنربندان! خارج از ایران نیاز دارن یه کم باشعور باشن و اینقدر راحت خر این جماعت صادراتی و تخت تاثیر دلارها و توجهات این مادرژندههای مادرقهوهی سفیدکننده و خونشور شاخه برون مرزی سپاه و رژیم نباشن پسره تو خود ایران اینقدر که هیتر داره فن نداره آشغال محضه مرتیکه شایدم زنیکه همه اوناییکه باهاش همکاری داشتن ریدن بهش باز این جماعت هنربند لس آنجلسی اومدن ارتباطب قرار کردن!!! آقا مگه شماها الاغین خرین نفهم هستین؟ یعنی کشتار دیماه و وضعیت اعدامها و سکوت این جماعت صادراتی و بلاگری و... هم شما رو بیدار نکرده؟ خو خاک بر سرتونن کنن بیشعورهای بیشرف حداقل به حرمت خون جانباختگان و جانفداها پ جاویدنامهای ایران دور این بلاگرها و اینفلوئنسرها و دلارهاشون رو خط بکشین همون کنسرت بذارین خیلی بهتره تا اینجوری خودتون رو دلقک این جماعت گوه میکنینshow more

امیرآریان ارجمند♕𓃬☼
20,095 Aufrufe • vor 20 Tagen
شرم بر 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 و غیره براشون کتابخونه و آموزش موجوده. خلاصه بازدهی فقط به الگوریتم و ساختمانداده محدود نمیشه.show more

Mohamad Iraji
22,055 Aufrufe • vor 1 Jahr