کم کم تو جمعهای آکادمیک افراد متوجه شدن که اگر از GPU استفاده کنن خیلی کارها رو میتونن نسبت به CPU سریعتر انجام بدن.
کارهایی مثل پردازش و تصویربرداری پزشکی، شبیهسازیهای فیزیکی مثل حرکت سیالات، تحلیل سیگنالهای راداری و صوتی، تخمین ساختار پروتئین و کلی کار که نتیجه اونها مقالات متعددی شد و حتی براش یک عبارت هم ساختن:
عبارت GPGPU که مخفف General Purpose GPU بود.
اما یک مشکلی اینجا وجود داشت: اینکه تمام این کارها نیاز به مهارت برنامهنویسی مختص کارهای گرافیکی داشت.
یعنی مثلا یکی میخواست حرکت مایع یا آب و هوا رو شبیهسازی کنه یا ضربهای ماتریسی متعدد انجام بده باید DirectX رو هم یاد میگرفت و به زبان هندسی با GPU صحبت میکرد. به هر حال کار GPUها تا اون زمان این بود که یک تصویر رو به مثلثهای متعدد تقسیم میکرد و بعد از پردازش اونها رو روی پیکسلهای صفحه نمایش جانمایی میکرد.
فرض کنید شما یک مداد دارید و میخواید یک محاسبه ریاضی انجام بدید، اما تنها کاری که با مداد اجازه دارید انجام بدید طراحی کردنه. حالا برای اینکه ببینید ۲+۲ چقدر میشه، ۲ تا سیب رو میز میکشید، ۲ تا سیب داخل سبد در یک سبد و بعد اینها رو کنار هم میذارید و سیبها رو میشمرید.
کار عجیبیه، نه؟
این تقریبا کاری بود که اون موقع انجام میشد اما سرعت GPUها همه رو قانع کرده بود که این سختی رو به جون بخرن.
اینجا بود که از دل همین جامعه آکادمیک یک راهکار جالب بیرون اومد و اون هم زبان برنامهنویسی Brook بود که به سرپرستی شخصی به نام Ian Buck تولید شده بود.
کار این برنامه چی بود؟
این بود که اون لایه ترجمه رو خودش انجام میداد و دیگه نیازی نبود که افراد برن کار با DirectX و پردازش گرافیکی رو یاد بگیرن. اونها معادلاتشون رو به زبان بروکس مینوشتن و ترجمه انجام میشد و خروجی هم براشون قابل فهم بود.
یک خوبی دیگه Brook این بود که در واقع همون زبان برنامهنویسی C رو برداشته بودن کمی تغییر داده بودن که باعث میشد یادگیریش راحت باشه چون اکثر افراد قبلا C رو یاد گرفته بودن.
تقریبا طرفای سال ۲۰۰۲-۲۰۰۳ بود که انویدیا متوجه این موج مهم شد. اما برای اینکه این موج تبدیل به یک بازار قابل اعتنا بشه، نیازمند چند اتفاق مهم و سرمایهگذاری زیاد بود.