برای برنامه نویسی برای FPGA نیازی نیست طراح چیپ باشید، درست مثل اینکه برای نوشتن کد در جاوا نیازی به برنامه نویسی ++C ندارید. با این حال، در هر دو مورد احتمالا مفید خواهد بود.
هدف تجاری سازی هر دو فناوری جاوا و FPGA، رد ادعای اخیر است. خبر خوب برای FPGA ها - با استفاده از لایه های انتزاعی و مجموعه ابزار مناسب، در 35 سال گذشته از زمان اختراع دستگاه منطقی قابل برنامه ریزی، ایجاد الگوریتم ها و جریان های داده برای FPGA به جای CPU، DSP، GPU یا هر شکل دیگری از ASIC های سفارشی تبدیل شده است. به طور فزاینده ای رایج تر است.
به موقع بودن شگفت انگیز ایجاد آنها در این واقعیت مشهود است که درست زمانی که CPU ها دیگر نمی توانستند تنها ماژول محاسباتی مراکز داده برای انجام بسیاری از وظایف باقی بمانند - به دلایل مختلف - FPGA ها به کارایی خود دست یافتند، سرعت، تأخیر کم و قابلیت های شبکه را ارائه کردند. و حافظه - قابلیتهای محاسباتی ناهمگن SoCهای FPGA مدرن، که تقریباً سیستمهای محاسباتی کامل هستند. با این حال، FPGA ها نیز با موفقیت با دستگاه های دیگر در سیستم های هیبریدی ترکیب می شوند، و به نظر ما، آنها تازه شروع به یافتن جایگاه واقعی خود در سلسله مراتب محاسباتی کرده اند.
به همین دلیل کنفرانس پلتفرم بعدی FPGA را در 22 ژانویه در سن خوزه برگزار کردیم. طبیعتا یکی از تامین کنندگان اصلی FPGA در دنیا و پیشگام در این زمینه Xilinx است. ایوو بولسنز، معاون ارشد و مدیر ارشد فناوری Xilinx، در کنفرانس صحبت کرد و امروز نظرات خود را در مورد اینکه چگونه Xilinx به ایجاد سیستمهای محاسباتی قابل تغییر برای مراکز داده کمک میکند، ارائه کرد.
معماران سیستم و برنامه نویسان زمان زیادی را صرف کردند تا یک مرکز داده ناهمگن ایجاد کنند، که دارای انواع مختلفی از قدرت کامپیوتری است که مشکلات را در محاسبات، ذخیره سازی و شبکه حل می کند. این امر ضروری به نظر می رسد زیرا پیروی از قانون مور با استفاده از دستگاه های مختلف CMOS به طور فزاینده ای دشوار می شود. در حال حاضر، زبان ما هنوز CPU محور است، و ما هنوز در مورد "شتاب برنامه" صحبت می کنیم، به این معنی که برنامه ها بهتر از آنچه که می توان روی CPU ها انجام داد بهتر است. با گذشت زمان، مراکز داده به مجموعهای از قدرت محاسباتی، ذخیرهسازی دادهها و پروتکلهایی تبدیل میشوند که همه چیز را به هم گره میزند و ما به اصطلاحاتی مانند «محاسبات» و «برنامهها» باز خواهیم گشت. محاسبات ترکیبی مانند سرویسهای ابری امروزی که بر روی دسکتاپ یا ماشینهای مجازی اجرا میشوند عادی میشوند و در برخی مواقع ما به سادگی از کلمه "محاسبات" برای توصیف نحوه عملکرد آنها استفاده میکنیم. در برخی موارد - و به احتمال زیاد FPGA ها به آغاز این دوره کمک خواهند کرد - ما دوباره آن را پردازش داده می نامیم.
پذیرش FPGA در مراکز داده نیازمند تغییر در طرز فکر است. بولسنز توضیح میدهد: «زمانی که به راههایی برای افزایش سرعت برنامههای کاربردی امروزی فکر میکنید، باید به اصول اولیه نحوه اجرا، منابع مورد استفاده و زمان صرف شده بپردازید. - باید مشکل کلی را که سعی در حل آن دارید مطالعه کنید. امروزه بسیاری از برنامههای کاربردی که در مراکز داده اجرا میشوند، برای مصرف مقادیر زیادی از منابع مقیاس میشوند. به عنوان مثال، یادگیری ماشین را در نظر بگیرید که از تعداد زیادی گره محاسباتی استفاده می کند. اما وقتی در مورد شتاب صحبت می کنیم، باید نه تنها به افزایش سرعت محاسبات، بلکه به افزایش سرعت زیرساخت نیز فکر کنیم.
به عنوان مثال، در نوع عملیات یادگیری ماشینی که بولسنز در عمل مطالعه کرد، تقریباً 50٪ از زمان صرف انتقال داده ها بین قدرت محاسباتی پراکنده می شود و فقط نیمی از زمان باقی مانده صرف محاسبات می شود.
"این جایی است که من فکر می کنم FPGA می تواند کمک کند، زیرا ما می توانیم اطمینان حاصل کنیم که هر دو جنبه محاسباتی و ارتباطی برنامه بهینه شده است. و ما می توانیم این کار را در سطح زیرساخت کلی و در سطح تراشه انجام دهیم. این یکی از مزایای بزرگ FPGA ها است که به شما امکان می دهد شبکه های ارتباطی را برای نیازهای برنامه خاص ایجاد کنید. بر اساس الگوهای معمول حرکت داده در بارهای کاری هوش مصنوعی، نیازی به معماری پیچیده مبتنی بر سوئیچ نمی بینم. شما می توانید یک شبکه با یک جریان داده بزرگ بسازید. همین امر در مورد وظایف آموزش شبکه عصبی نیز صدق می کند - می توانید یک شبکه مش با اندازه های بسته بسازید که با یک کار خاص سازگار است. با استفاده از یک FPGA، پروتکلهای انتقال داده و توپولوژیهای مدار میتوانند بسیار دقیق مقیاسبندی شوند و برای یک برنامه خاص تنظیم شوند. و در مورد یادگیری ماشینی، همچنین واضح است که ما به اعداد ممیز شناور با دقت دوگانه نیاز نداریم و میتوانیم آن را نیز تنظیم کنیم.»
تفاوت بین FPGA و CPU یا ASIC سفارشی در این است که دومی ها در کارخانه برنامه ریزی می شوند و پس از آن دیگر نمی توانید نظر خود را در مورد انواع داده های در حال محاسبه یا عناصر محاسبه شده یا در مورد ماهیت داده تغییر دهید. از طریق دستگاه جریان می یابد. FPGA ها به شما این امکان را می دهند که در صورت تغییر شرایط عملکرد، نظر خود را تغییر دهید.
در گذشته، زمانی که برنامه نویسی FPGA برای افراد ضعیف نبود، این مزیت هزینه داشت. نیاز به باز کردن کامپایلرهای FPGA برای ادغام بهتر با ابزارهایی است که برنامه نویسان برای نوشتن برنامه های موازی CPU در C، C++ یا Python استفاده می کنند و بخشی از کار را به کتابخانه هایی برون سپاری می کنند که رویه های FPGA را سرعت می بخشند. این همان کاری است که پشته یادگیری ماشینی Vitis انجام میدهد، پلتفرمهای ML مانند Caffe و TensorFlow، با کتابخانههایی برای اجرای مدلهای AI معمولی یا افزودن قابلیتهای FPGA به کارهایی مانند رمزگذاری ویدیو، تشخیص اشیاء ویدیویی، و تجزیه و تحلیل دادهها. مدیریت ریسک مالی و هر ثالثی. -کتابخانه های مهمانی
این مفهوم تفاوت چندانی با پروژه CUDA انویدیا که یک دهه پیش راه اندازی شد، ندارد، که محاسبات موازی را به شتاب دهنده های GPU، یا از جعبه ابزار ROCm AMD، یا با وعده پروژه OneAPI اینتل، که باید بر روی CPU ها، GPU ها و FPGA مختلف اجرا شود، ندارد.
تنها سوال این است که چگونه همه این ابزارها به یکدیگر متصل می شوند تا هر شخصی بتواند مجموعه ای از قدرت های محاسباتی را به صلاحدید خود برنامه ریزی کند. این مهم است زیرا FPGA ها پیچیده تر و بسیار پیچیده تر از هر یک از CPU های موجود شده اند. آنها با استفاده از پیشرفته ترین فرآیندهای تولید و مدرن ترین فناوری های بسته بندی تراشه تولید می شوند. و آنها جایگاه خود را پیدا خواهند کرد، زیرا ما دیگر نمی توانیم زمان، پول، انرژی و هوش را تلف کنیم - همه اینها منابع بسیار گرانی هستند.
بولسنز می گوید: «FPGA ها مزایای تکنولوژیکی را ارائه می دهند. - و این فقط تبلیغات معمول در مورد سازگاری و پیکربندی مجدد نیست. در همه برنامه های مهم - یادگیری ماشین، تجزیه و تحلیل نمودار، تجارت با سرعت بالا و غیره. - آنها توانایی تطبیق با یک کار خاص را دارند نه تنها مسیر توزیع داده، بلکه همچنین معماری حافظه - نحوه حرکت داده ها در تراشه. FPGA ها همچنین دارای حافظه بسیار بیشتری نسبت به سایر دستگاه ها هستند. همچنین باید در نظر داشت که اگر یک کار در یک FPGA قرار نمیگیرد، میتوانید آن را در چند تراشه بدون مواجهه با معایبی که هنگام مقیاسبندی وظایف در چندین CPU یا GPU در انتظار شماست، مقیاسبندی کنید.
منبع: www.habr.com