tgoop.com/hpcnerds/20
Last Update:
SYCL
یکی از جالب ترین و البته سخت ترین سناریو ها در HPC برنامه نویسی برای محیطی هست که شامل چندین دیوایس مختلف باشه. مثلا فرض کنید با سیستمی طرف هستیم که یک CPU با 128 هسته و 4 تا GPU داره و قصد داریم یک برنامه برای همچین محیطی توسعه بدیم. برای همچین کاری اصطلاح Heterogeneous computing رو هم بکار می برن.
حالا چطور باید برناممون رو توسعه بدیم که بتونیم از تمام امکانات سخت افزاری این سیستم استفاده کنیم؟ یک راه طبیعی اینه که کد قسمت هایی از برنامه که با GPU سر و کار دارند رو با CUDA بنویسیم و برای استفاده از هسته های CPU هم از یک کتابخانه مثلا TBB استفاده کنیم.
این مدل برنامه نویسی کار میکنه اما چندتا ایراد داره. ایراد اصلی اینه که فرض کنید تصمیم میگیریم همین کد رو روی یک سیستم دیگه اجرا کنیم که GPU نداره و حالا مجبوریم تمام قسمت هایی از کد که با CUDA نوشته بودیم رو یکبار دیگه برای CPU بنویسیم.
استاندارد SYCL برای حل همچین مشکلاتی تدوین شده و بهمون اجازه میده با یک interface یکپارچه برای دیوایس های مختلف مثل CPU یا GPU برنامه بنویسیم.
@hpcnerds
BY HPC Nerds | High Performance and Scientific Computing

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