در پایتون با استفاده از random.randint دو ماتریس n×n از اعداد صحیح تصادفی بساز، ضرب ماتریسی را با یک روش حلقهای ساده و با numpy.dot انجام بده و زمان اجرای دو روش را مقایسه کن.
3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:20 0.0
برای تولید ماتریسها از ماژول استاندارد random و تابع randint درون comprehension یا حلقهها استفاده کن و سپس آنها را به آرایههای numpy تبدیل کن؛ برای اندازهگیری زمان از time یا timeit بهره بگیر. ضرب ماتریسی را ابتدا با دو یا سه حلقه تو در تو (روش سادهٔ پایتونی) پیادهسازی کن و سپس با numpy.dot یا عملگر @ آن را به صورت برداری انجام بده تا تفاوت سرعت روشن شود — این نشاندهندهٔ اهمیت بردارسازی در محاسبات علمی و بهینهسازیهای مربوط به HPC است؛ برای نتایج قابلاطمینان چند بار اجرا کن، اندازهٔ n را متناسب با توان محاسباتیت انتخاب کن و در صورت تمایل بهبودهای بیشتر را با numba یا multiprocessing بررسی کن.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
در پایتون با استفاده از random.randint دو ماتریس n×n از اعداد صحیح تصادفی بساز و ضرب ماتریسی را با دو یا سه حلقهٔ درهمتنیده در کنار numpy.dot یا @ مقایسه کن تا تفاوت سرعت روشن شود. برای کارایی بهتر، به جای random.randint از numpy.random.randint استفاده کن و نتیجه را به آرایههای numpy تبدیل کن تا سرعت تولید بالا رود. برای اندازهگیری زمان از time.perf_counter استفاده کن و چند اجرای مستقل انجام بده تا نویز اندازهگیری کاهش یابد. معمولاً ضرب با رویکرد برداری در numpy بسیار سریعتر است و میتوان با استفاده از numba یا multiprocessing به مقیاسبندی برای nهای بزرگ رسید.
گزارش