از همان ابتداي كار محققان ايدههاي جالبي براي استفاده از اين توان پردازشي عظيم براي انجام ساير وظايف محاسباتي در ذهن خود داشتند. در سال 2002 مارك هريس كه امروزه بهعنوان محقق گرافيك كامپيوتر در Nvidia مشغول كار است، واژه GPGPU (سرنام General-Purpose computation on Graphics-Processing Units) را براي اشاره به فرآيند پردازش چندمنظوره با استفاده از واحد پردازش گرافيكي بهكار گرفت.
شايد بپرسيد، اين رويكرد چه دستاوردي داشت؟ اجازه دهيد پاسخ را با واضحترين مزيت اين رويكرد آغاز كنيم. پردازندههاي گرافيكي بهگونهاي طراحي شدهاند كه يك وظيفه را كه همان ترسيم مثلثها در نمايشگر سيستم است، بسيار خوب انجام ميدهند. زيرا اين تجهيزات در اصل براي فروش در بازار بازيهاي كامپيوتري طراحي شدند. تا همين اواخر برنامهنويسي GPU يكي از «هنرهاي سياه» علوم كامپيوتر محسوب ميشد. اصول اين كار بسيار محرمانه و دشوار بود و تنها در اختيار تعداد محدودي از هكرها و محققان قرار داشت. انجام اين كار مستلزم اجراي يك فرآيند نگاشت دومرحلهاي بود. ابتدا برنامهنويس بايد اطلاعات مربوط به مسئله را دريافت كرده و آن را روي اطلاعات گرافيكي نگاشت ميكرد تا GPU بتواند با آن كار كند. سپس بايد روش مناسبي را بهمنظور تشريح عمليات موردنياز حل مسئله براي GPU مييافت. بنابراين بايد بهگونهاي GPU را فريب ميداد و عمليات محاسباتي موردنظر را در قالب فرآيند ترسيم مثلثها در اختيار آن قرار ميداد، زيرا ترسيم مثلثها تنها فرآيند قابل درك براي GPU بود. در اين رابطه به بخش «پردازش موازي اطلاعات در بازيهاي كامپيوتر» مراجعه كنيد.
بهمنظور كار با رئوس مثلث بايد تركيبي از ابزارهاي برنامهنويسي مانند OpenGL، Microsoft DirectX، CG يا زبانهاي برنامهنويسي اختصاصي بعضي از پردازندههاي گرافيكي بهكار گرفته ميشد كه بهطور خاص براي كارهاي گرافيكي طراحي شده بودند. اين فرآيند بسيار پيچيده و جالب به نظر ميرسيد، اما بسيار زمانگير بود و منافع اقتصادي نداشت. خوشبختانه مدتي بعد، معماري CUDA معرفي شد و همهچيز را تغيير داد.
الگوريتم P-ARY
بهرهبرداري از پردازش موازي : بانكهاي اطلاعاتي بهمنظور اجتناب از بازبيني تمام ركوردها هنگام ورود هر درخواست، از فهرستهاي مرتب شدهاي موسوم به ايندكس استفاده ميكنند. هر پردازنده عهدهدار پردازش بخش يكساني از يك ايندكس و جستوجوي نخستين ورودي در بخش اختصاصي خود است.
مقايسه نتايج (يافتن بخشي كه نخستين ركورد آن در حروف الفبا از نظر موقعيت از ساير بخش ها بالاتر و از كليدواژه جستوجو پايينتر قرار دارد) براي تعداد محدودي از افراد يا پردازندهها كار دشواري نيست. اما اگر تعداد پردازندهها به بيش از صد عدد افزايش يابد، چه اتفاقي رخ ميدهد؟
تعداد ارتباطاتي كه براي اجراي اين وظيفه برقرار ميشود با افزايش تعداد پردازندهها، بهصورت نمايي افزايش مييابد. يك راهبرد بهتر اين است كه اجازه دهيد هر پردازنده دو عمل مقايسه را براي نخستين و آخرين ركورد بخش اختصاصي خود انجام دهد. اين راهبرد براي GPU بهخوبي عمل ميكند. هر يك از عناصر پردازشي GPU نخستين و آخرين ركورد بخش مخصوص به خود را بهطور همزمان بررسي كرده و منتظر اعلام نتيجه نهايي يا كاهش حجم دادههاي مورد جستوجو توسط يكي از پردازندهها ميشود. جستوجوي باينري
يافتن Jane Doe با استفاده از جستوجوي باينري به شيوه متداول، مستلزم اجراي ده مرحله است.
جستوجو با الگوريتم P-ARY
اكنون يافتن Jane Doe با استفاده از عناصر پردازشي (PEs)، مستلزم اجراي پنج مرحله است.