الغرض من البرنامج النصي اللولبي هو إنشاء صورة تم إنشاؤها بواسطة الكمبيوتر. خرائط الصورة ل GPU مع دعم CUDA.
فيما يلي أمثلة على الصور التي تم إنشاؤها باستخدام نص Python. يمكن العثور على تفاصيل التكوين الخاصة بهم في مجلد الأمثلة مع أمثلة أخرى.
من أجل تشغيل البرنامج النصي Python ، يجب تثبيت التبعيات التالية:
عندما يتم تشغيله بالتتابع على Intel I7-9700K ، تستغرق كل صورة حوالي 23.5877081 ثانية.
كانت الخطوة الأولى لتحسين خوارزمية CGI هي إعادة بناء الخوارزمية للاستخدام الموازي على وحدة معالجة الرسومات. وقد تم ذلك باستخدام @cuda.jit ديكور ، والذي يتطلب الاحتجاج kernel. قبل تنفيذ الخوارزمية ، يحدد الرمز كيفية تعيين صفيف بكسل على أجهزة GPU. في الخوارزمية ، يتم استبدال الحلقات لحساب كل بكسل بـ i, j = cuda.grid(2) . إذا كانت i و j ضمن حدود الصورة ، فإن الوظيفة تحسب لون البكسل للفهرس. لا حلقات. تسريع التوازي حوالي 1072 ، ويستغرق حوالي 22.1124 ميلي ثانية.
وفقًا لأداة nvprof CLI ( [CUDA memcpy HtoD] 36.09% . لتجاوز هذا ، يمكن إنشاء صفيف البكسل وتهيئته على الجهاز دون إضافته في ذاكرة وحدة المعالجة المركزية. يوفر numba.cuda device_array للقيام بذلك. تبلغ تسريع نقل نقل المضيف إلى الجهاز حوالي 1.38 ، ويستغرق حوالي 15.9563 ميلي ثانية.
يستفيد التحسين التالي من الذاكرة المشتركة ، الذاكرة التي تشاركها كتلة من مؤشرات الترابط. نظرًا لأن الذاكرة محددة ، فإن سرعات القراءة والكتابة أسرع. لذلك ، يمكن حساب عمليات الوصول إلى الذاكرة على الذاكرة المشتركة. بعد العمليات ، يكمل الوصول البطيء إلى صفيف البكسل العالمي الحساب الموازي. يبلغ تسريع استخدام الذاكرة المشتركة حوالي 1.068 ، حيث يستغرق حوالي 14.9425 ميلي ثانية.
يبلغ إجمالي التسريع من خوارزمية وحدة المعالجة المركزية إلى خوارزمية GPU المحسنة حوالي 1578.