رابط برنامه‌نویسی کاربردی LiteRT Dispatch برای یکپارچه‌سازی زمان اجرای NPU

چه زمانی باید Disptach API را پیاده‌سازی کنم؟

یک رابط برنامه‌نویسی کاربردی اعزام LiteRT زمانی ضروری است که نیاز به ادغام یک زمان اجرای شتاب‌دهنده سخت‌افزاری خاص در چارچوب LiteRT داشته باشید. این رابط با افزونه کامپایلر برای اجرای زیرگراف‌های کامپایل شده منتشر شده توسط افزونه کامپایلر کار می‌کند.

API ارسال، مجموعه‌ای از توابع پیاده‌سازی‌شده توسط فروشنده است که LiteRT برای مدیریت یک جلسه با زمان اجرای یک شتاب‌دهنده از آن استفاده خواهد کرد. این توابع، جلسات دستگاه، اجرای زیرگراف و حرکت بافر بین میزبان و دستگاه را پوشش می‌دهند. پیاده‌سازی API ارسال، همراه با یک افزونه کامپایلر، به LiteRT اجازه می‌دهد تا از قابلیت‌های یک شتاب‌دهنده برای استنتاج کارآمد به طور کامل استفاده کند.

جزئیات بیشتر در مورد «زمان» پیاده‌سازی API اعزام (و افزونه کامپایلر) را می‌توانید در صفحه افزونه کامپایلر LiteRT بیابید.

API مربوط به Dispatch چگونه کار می‌کند؟

Dispatch API توسط CompiledModel با استفاده از NpuAccelerator استفاده می‌شود. این امر به صورت داخلی یک DispatchDelegate ایجاد می‌کند و این DispatchDelegate است که از Dispatch API برای درگیر کردن NPU تعبیه شده در سخت‌افزار در حال اجرا استفاده می‌کند.

انواع داده API اعزام

در Dispatch API، انواع داده زیر برای اجرای یک مدل روی NPUها استفاده می‌شوند.

  • DispatchDeviceContext

    برای مدیریت بافرهایی که توسط استنتاج NPU استفاده می‌شوند، استفاده می‌شود.

  • DispatchInvocationContext

    این ساختار داده‌ای است که برای اجرای مدل استفاده می‌شود. این ساختار با مرتبط کردن حافظه ورودی و خروجی واقعی ثبت شده در DispatchDeviceContext با DispatchGraph تولید شده، کار می‌کند.

API های اعزام

برای تعریف کامل Dispatch API، لطفاً به فایل vendors/c/litert_dispatch.h مراجعه کنید.