کرنل در واقع همون کد parallel هستش که تحت قالب یک function می نویسید که تو آن متغیر های intrinsic مربوط به گرید از جمله blockID و threadID هستش که شما با این ساختار می تونید به حافظه به صورت چند بعدی دسترسی داشته باشید.
ماهیت کار بایستی به صورت موازی باشه که طرف بخاد از gpu استفاده کنه به یک مثال بگم شما میخاید لیست از feature ها رو آموزش بدید و کلاسیفیر شما رو gpu هستش حالا اگر اندازه feature ها کوچک باشه این انتقال داده از سمت cpu یا host به سمت device یا gpu مقرون به صرفه نیست چون شما داده رو ram دارید حالا بایستی که بایستی هی cumalloc کنید و هی cumemcpy همون طور هم خودتون می تونید هر جفتش زمان گیره بجز اینکه راهی پیدا کنید که داده ها را به صورت bulck انتقال بدید و سمت gpu پروسس کنید که باز هم به طبیعت مسئله بستگی داره.