HPCNERDS Telegram 24
BLAS
به سختی میشه مسئله ای در محاسبات علمی نام برد که نیازی به محاسبات ماتریسی نداشته باشه. چون این عملیات ها زیربنای بقیه محاسبات هستن، حتی کوچکترین بهبود در سرعت عملکرد اون ها میتونه برای خیلی از بیزینس ها ارزش زیادی به همراه داشته باشه. سال ۱۹۷۹ یک پیاده سازی از عملیات های اساسی جبرخطی به نام BLAS برای زبان فرترن منتشر شد:
🔴 BLAS :: Basic Linear Algebra Subprograms
https://www.netlib.org/blas/
این پیاده سازی بعد از یه مدت به یه استاندارد محبوب تبدیل شد و خیلی ها سعی کردن سریع ترین پیاده سازی ممکن از این استاندارد رو توسعه بدن، رقابتی که امروز هم در جریانه. چندتا از پیاده سازی های معروف BLAS برای CPU اینا هستن:
🔴 OpenBLAS
https://github.com/OpenMathLib/OpenBLAS
🔴 Intel MKL
https://github.com/oneapi-src/oneMKL
🔴 Eigen
http://eigen.tuxfamily.org/
🔴 ATLAS
https://github.com/math-atlas/math-atlas
و برای GPU هم معروف ترین پیاده سازی cuBLAS هست که توسط Nvidia ارائه شده.
🔴 cuBLAS
https://docs.nvidia.com/cuda/cublas/

چون پیاده سازی کارآمد این  استاندارد کار راحتی نیست، اغلب ابزار هایی که با محاسبات ماتریسی سر و کار دارن از همین کتابخونه ها استفاده میکنن. مثلا کتابخانه Numpy رو وقتی نصب میکنید ، روی سیستم شما دنبال یک پیاده سازی از BLAS می گرده و از همون استفاده میکنه. به عنوان نمونه، روی سیستم من Numpy داره از OpenBlas و PyTorch داره از MKL استفاده میکنه.

اما استاندارد BLAS دقیقا چطوریه؟
تو این استاندارد، عملیات های پایه ماتریسی به سه گروه تقسیم بندی میشن:
🟢 BLAS Level 1
عملیات هایی که روی دو بردار انجام میشن. مثلا جمع دوتا بردار
🟢 BLAS Level 2
عملیات هایی که روی یک بردار و یک ماتریس انجام میشه مثل ضرب یک ماتریس در یک بردار
🟢 BLAS Level 3
عملیات هایی که روی دوتا ماتریس انجام میشه مثل ضرب کردنشون

یک نکته که شاید واستون جالب باشه اینه که با هدف بدست آوردن بیشترین سرعت ممکن، معمولا عملیات های هر سطح از نو پیاده سازی میشن و اینطور نیست که مثلا در پیاده سازی عملیات های سطح ۳ بیایم از عملیات های سطح ۲ استفاده کنیم! یکی از موضوعات داغ ریسرچ در این زمینه تولید خودکار کد کارآمد این عملیات ها برای هر سخت افزار و حتی برای اندازه های خاصی از ماتریس ها هست. 

بنظرم تلاش برای پیاده سازی این روتین ها و مقایسه با پیاده سازی های موجود یکی از بهترین روش ها برای تمرین HPC هست. این پیاده سازی ها در طول سال ها بهبود پیدا کرده و با خوندن سورس کد اون ها میشه ریزه کاری هایی از محاسبات عددی و HPC رو یاد گرفت که در هیچ کتاب یا کورسی پیدا نمیشه.

@hpcnerds
👍81



tgoop.com/hpcnerds/24
Create:
Last Update:

BLAS
به سختی میشه مسئله ای در محاسبات علمی نام برد که نیازی به محاسبات ماتریسی نداشته باشه. چون این عملیات ها زیربنای بقیه محاسبات هستن، حتی کوچکترین بهبود در سرعت عملکرد اون ها میتونه برای خیلی از بیزینس ها ارزش زیادی به همراه داشته باشه. سال ۱۹۷۹ یک پیاده سازی از عملیات های اساسی جبرخطی به نام BLAS برای زبان فرترن منتشر شد:
🔴 BLAS :: Basic Linear Algebra Subprograms
https://www.netlib.org/blas/
این پیاده سازی بعد از یه مدت به یه استاندارد محبوب تبدیل شد و خیلی ها سعی کردن سریع ترین پیاده سازی ممکن از این استاندارد رو توسعه بدن، رقابتی که امروز هم در جریانه. چندتا از پیاده سازی های معروف BLAS برای CPU اینا هستن:
🔴 OpenBLAS
https://github.com/OpenMathLib/OpenBLAS
🔴 Intel MKL
https://github.com/oneapi-src/oneMKL
🔴 Eigen
http://eigen.tuxfamily.org/
🔴 ATLAS
https://github.com/math-atlas/math-atlas
و برای GPU هم معروف ترین پیاده سازی cuBLAS هست که توسط Nvidia ارائه شده.
🔴 cuBLAS
https://docs.nvidia.com/cuda/cublas/

چون پیاده سازی کارآمد این  استاندارد کار راحتی نیست، اغلب ابزار هایی که با محاسبات ماتریسی سر و کار دارن از همین کتابخونه ها استفاده میکنن. مثلا کتابخانه Numpy رو وقتی نصب میکنید ، روی سیستم شما دنبال یک پیاده سازی از BLAS می گرده و از همون استفاده میکنه. به عنوان نمونه، روی سیستم من Numpy داره از OpenBlas و PyTorch داره از MKL استفاده میکنه.

اما استاندارد BLAS دقیقا چطوریه؟
تو این استاندارد، عملیات های پایه ماتریسی به سه گروه تقسیم بندی میشن:
🟢 BLAS Level 1
عملیات هایی که روی دو بردار انجام میشن. مثلا جمع دوتا بردار
🟢 BLAS Level 2
عملیات هایی که روی یک بردار و یک ماتریس انجام میشه مثل ضرب یک ماتریس در یک بردار
🟢 BLAS Level 3
عملیات هایی که روی دوتا ماتریس انجام میشه مثل ضرب کردنشون

یک نکته که شاید واستون جالب باشه اینه که با هدف بدست آوردن بیشترین سرعت ممکن، معمولا عملیات های هر سطح از نو پیاده سازی میشن و اینطور نیست که مثلا در پیاده سازی عملیات های سطح ۳ بیایم از عملیات های سطح ۲ استفاده کنیم! یکی از موضوعات داغ ریسرچ در این زمینه تولید خودکار کد کارآمد این عملیات ها برای هر سخت افزار و حتی برای اندازه های خاصی از ماتریس ها هست. 

بنظرم تلاش برای پیاده سازی این روتین ها و مقایسه با پیاده سازی های موجود یکی از بهترین روش ها برای تمرین HPC هست. این پیاده سازی ها در طول سال ها بهبود پیدا کرده و با خوندن سورس کد اون ها میشه ریزه کاری هایی از محاسبات عددی و HPC رو یاد گرفت که در هیچ کتاب یا کورسی پیدا نمیشه.

@hpcnerds

BY HPC Nerds | High Performance and Scientific Computing


Share with your friend now:
tgoop.com/hpcnerds/24

View MORE
Open in Telegram


Telegram News

Date: |

It’s yet another bloodbath on Satoshi Street. As of press time, Bitcoin (BTC) and the broader cryptocurrency market have corrected another 10 percent amid a massive sell-off. Ethereum (EHT) is down a staggering 15 percent moving close to $1,000, down more than 42 percent on the weekly chart. Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.! Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation. How to create a business channel on Telegram? (Tutorial) The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.”
from us


Telegram HPC Nerds | High Performance and Scientific Computing
FROM American