كودا

CUDA ( معمارية الحوسبة الموحدة للأجهزة ) هي منصة حوسبة متوازية وواجهة برمجة تطبيقات (API) مملوكة لشركة Nvidia، [ 3 ] تتيح للبرامج استخدام أنواع معينة من وحدات معالجة الرسومات (GPUs) لتسريع المعالجة العامة، مما يوسع نطاق استخدامها بشكل كبير في مجالات الذكاء الاصطناعي والحوسبة العلمية والحوسبة عالية الأداء . تم إنشاء CUDA في عام 2004 وأُصدرت رسميًا في عام 2007. [ 4 ] عند طرحها، كان الاسم اختصارًا لعبارة Compute Unified Device Architecture ، [ 5 ] لكن Nvidia تخلت لاحقًا عن المعنى الأصلي للاختصار، ونادرًا ما تُوسّعه الآن. [ 6 ]

تُعدّ CUDA طبقة برمجية لإدارة البيانات، تتيح الوصول المباشر إلى وحدة معالجة الرسومات (GPU) ووحدة المعالجة المركزية (CPU) حسب الحاجة، بالإضافة إلى مكتبة من واجهات برمجة التطبيقات (APIs) التي تُمكّن الحوسبة المتوازية. [ 7 ] [ 8 ] إلى جانب برامج التشغيل ونوى وقت التشغيل ، تتضمن منصة CUDA مُجمّعات برمجية ومكتبات وأدوات تطوير لمساعدة المبرمجين.

كُتبت CUDA بلغة البرمجة C ، ولكنها مصممة للعمل مع لغات برمجة أخرى ، بما في ذلك C++ و Fortran و Python و Julia . هذه الميزة تُسهّل على المتخصصين في البرمجة المتوازية استخدام موارد وحدة معالجة الرسومات (GPU)، على عكس واجهات برمجة التطبيقات السابقة مثل Direct3D و OpenGL ، التي تتطلب مهارات متقدمة في برمجة الرسومات. [ 9 ] تدعم وحدات معالجة الرسومات المُشغّلة بواسطة CUDA أُطر البرمجة مثل OpenMP و OpenACC و OpenCL . [ 10 ] [ 7 ]

وحدة معالجة الرسومات

وحدة معالجة الرسومات (GPU) هي معالج متخصص. تلبي متطلبات المهام عالية الدقة التي تتطلب قدرة حسابية عالية في الوقت الفعلي ، مثل الرسومات ثلاثية الأبعاد . بحلول عام 2012، تطورت وحدات معالجة الرسومات إلى أنظمة متعددة النوى عالية التوازي ، مما يسمح بمعالجة كميات كبيرة من البيانات بكفاءة. يُعد هذا التصميم أكثر فعالية من وحدات المعالجة المركزية للأغراض العامة (CPU) للخوارزميات في الحالات التي تتم فيها معالجة كميات كبيرة من البيانات بالتوازي، مثل:

تاريخ

يعود تاريخ CUDA إلى أوائل العقد الأول من القرن الحادي والعشرين، عندما بدأ إيان باك ، طالب الدكتوراه في علوم الحاسوب بجامعة ستانفورد ، تجاربه في استخدام وحدات معالجة الرسومات (GPUs) لأغراض تتجاوز مجرد عرض الرسومات. وقد نما اهتمام باك بوحدات معالجة الرسومات خلال دراسته الجامعية في جامعة برينستون ، بدايةً من خلال ألعاب الفيديو . بعد تخرجه، تدرب في شركة Nvidia، مما أتاح له فرصةً أكبر للتعرف على بنية وحدات معالجة الرسومات. في ستانفورد، قام ببناء جهاز ألعاب بدقة 8K باستخدام 32 بطاقة رسومات GeForce ، وكان هدفه الأساسي في البداية هو اختبار حدود أداء الرسومات في ألعاب مثل Quake و Doom . إلا أن اهتماماته تحولت لاحقًا نحو استكشاف إمكانات وحدات معالجة الرسومات في الحوسبة المتوازية للأغراض العامة . [ 11 ]

ولتحقيق هذه الغاية، طوّر باك لغة البرمجة بروك ، المصممة لتمكين الحوسبة العامة على وحدات معالجة الرسومات (GPUs). وقد حظي عمله بدعم من شركتي إنفيديا ووكالة مشاريع البحوث الدفاعية المتقدمة (DARPA). في عام 2004، وظّفت إنفيديا باك وضمّته إلى جون نيكولز، [ 12 ] الذي كان آنذاك مدير هندسة الحوسبة باستخدام وحدات معالجة الرسومات. وبدأ الاثنان معًا بتحويل بروك إلى كودا. [ 11 ] أُصدرت كودا رسميًا في عام 2007.

أصبحت CUDA عنصراً أساسياً في استراتيجية الشركة الرامية إلى تسويق وحدات معالجة الرسومات (GPUs) كأجهزة متعددة الاستخدامات للتطبيقات العلمية. وبحلول عام 2015، ركز تطوير CUDA بشكل متزايد على تسريع عمليات التعلم الآلي وشبكات التعلم الآلي . [ 13 ]

علم الوجود

يقدم الجدول التالي ملخصًا تقريبيًا لعلم الوجود الخاص بـ CUDA .

أنطولوجيا إطار عمل CUDA
الذاكرة (الأجهزة)الذاكرة (الرمز، أو نطاق المتغيرات )الحوسبة (الأجهزة)الحساب (بنية الكود)الحساب (دلالات الشفرة)
كبشالمتغيرات غير المتعلقة بـ CUDAيستضيفبرنامجمكالمة روتينية واحدة
ذاكرة الوصول العشوائي للفيديو (VRAM) ، ذاكرة التخزين المؤقت L2 لوحدة معالجة الرسوماتعام، ثابت، نسيججهازشبكةاستدعاء متزامن لنفس الروتين الفرعي على العديد من المعالجات
ذاكرة التخزين المؤقت L1 لوحدة معالجة الرسوماتمحلي، مشتركSM ("معالج متعدد التدفق")حاجزاستدعاء روتين فرعي فردي
عدد الخيوط = 32 خيطًاتعليمات SIMD
ذاكرة التخزين المؤقت L0 لوحدة معالجة الرسومات، سجلالخيط (المعروف أيضًا باسم "SP" أو "معالج البث" أو "نواة كودا"، ولكن هذه الأسماء أصبحت الآن مهملة)على غرار العمليات العددية الفردية داخل عملية متجهة

القدرات البرمجية

مثال على تدفق معالجة CUDA
  1. انسخ البيانات من الذاكرة الرئيسية إلى ذاكرة وحدة معالجة الرسومات
  2. يقوم المعالج المركزي بتشغيل نواة حساب وحدة معالجة الرسومات
  3. تقوم نوى CUDA الخاصة بوحدة معالجة الرسومات بتنفيذ النواة بالتوازي
  4. انسخ البيانات الناتجة من ذاكرة وحدة معالجة الرسومات إلى الذاكرة الرئيسية

تُتاح منصة CUDA لمطوري البرامج من خلال مكتبات مُسرّعة بتقنية CUDA، وتوجيهات المُصرّف مثل OpenACC ، وامتدادات للغات البرمجة القياسية في المجال، بما في ذلك C و C++ و Fortran و Python . يمكن لمبرمجي C/C++ استخدام "CUDA C/C++"، المُصرّفة إلى PTX باستخدام nvcc ( مُصرّف C/C++ من Nvidia القائم على LLVM ) [ 14 ] أو باستخدام clang نفسه. [ 15 ] أما مبرمجو Fortran فيمكنهم استخدام "CUDA Fortran"، المُصرّفة باستخدام مُصرّف PGI CUDA Fortran من مجموعة بورتلاند .يمكن لمبرمجي بايثون استخدام مكتبة cuPyNumeric لتسريع التطبيقات على وحدات معالجة الرسومات من إنفيديا.

بالإضافة إلى المكتبات، وتوجيهات المُصرّف، وCUDA C/C++ وCUDA Fortran، تدعم منصة CUDA واجهات حسابية أخرى، بما في ذلك OpenCL من مجموعة Khronos ، [ 16 ] وDirectCompute من Microsoft ، و OpenGL Compute Shader، و C++ AMP . [ 17 ] كما تتوفر أغلفة برمجية من جهات خارجية للغات Python و Perl وFortran و Java و Ruby و Lua و Common Lisp و Haskell و R و MATLAB و IDL و Julia ، بالإضافة إلى دعم أصلي في Mathematica .

في صناعة ألعاب الفيديو ، تُستخدم وحدات معالجة الرسومات (GPUs) لعرض الرسومات، ولحسابات فيزياء الألعاب (التأثيرات الفيزيائية مثل الحطام والدخان والنيران والسوائل)؛ ومن الأمثلة على ذلك PhysX و Bullet . كما استُخدمت CUDA لتسريع التطبيقات غير الرسومية في علم الأحياء الحاسوبي وعلم التشفير وغيرها من المجالات بمقدار عشرة أضعاف أو أكثر. [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]

توفر CUDA واجهة برمجة تطبيقات منخفضة المستوى (واجهة برمجة تطبيقات برنامج تشغيل CUDA ، غير أحادية المصدر) وواجهة برمجة تطبيقات عالية المستوى ( واجهة برمجة تطبيقات وقت تشغيل CUDA، أحادية المصدر). تم إطلاق حزمة تطوير البرامج ( SDK) الأولية لـ CUDA للجمهور في 15 فبراير 2007، لأنظمة تشغيل Microsoft Windows و Linux . أُضيف دعم نظام التشغيل Mac OS X لاحقًا في الإصدار 2.0، [ 23 ] الذي حل محل الإصدار التجريبي الصادر في 14 فبراير 2008. [ 24 ] تعمل CUDA مع جميع وحدات معالجة الرسومات من Nvidia بدءًا من سلسلة G8x، بما في ذلك GeForce و Quadro وسلسلة Tesla . تتوافق CUDA مع معظم أنظمة التشغيل القياسية.

يأتي CUDA 8.0 مع المكتبات التالية (للتجميع ووقت التشغيل، بالترتيب الأبجدي):

  • مكتبة cuBLAS - مكتبة إجراءات الجبر الخطي الأساسية لـ CUDA
  • CUDART – مكتبة وقت تشغيل CUDA
  • مكتبة cuFFT - مكتبة تحويل فورييه السريع CUDA
  • مكتبة cuRAND – مكتبة توليد الأرقام العشوائية CUDA
  • cuSOLVER – مجموعة من الحلول المباشرة الكثيفة والمتفرقة القائمة على CUDA
  • cuSPARSE – مكتبة CUDA Sparse Matrix
  • مكتبة NPP – مكتبة NVIDIA للأداء الأساسي
  • nvGRAPH – مكتبة تحليلات الرسوم البيانية من NVIDIA
  • مكتبة إدارة NVML - NVIDIA
  • NVRTC – مكتبة تجميع وقت التشغيل من NVIDIA لـ CUDA C++

يأتي برنامج CUDA 8.0 مزودًا بمكونات البرامج الأخرى التالية:

  • برنامج إدارة سطح المكتب nView من NVIDIA
  • NVWMI - مجموعة أدوات إدارة المؤسسات من NVIDIA
  • GameWorks PhysX – هو محرك فيزيائي للألعاب متعدد المنصات

يأتي CUDA 9.0–9.2 مع هذه المكونات الأخرى:

  • كاتلاس 1.0 – خوارزميات الجبر الخطي المخصصة،
  • تم إيقاف دعم NVIDIA Video Decoder في CUDA 9.2؛ وهو متوفر الآن في NVIDIA Video Codec SDK

يأتي CUDA 10 مزودًا بهذه المكونات الأخرى:

  • nvJPEG – معالجة صور JPEG هجينة (وحدة المعالجة المركزية ووحدة معالجة الرسومات)

يأتي CUDA 11.0–11.8 مع هذه المكونات الأخرى: [ 25 ] [ 26 ] [ 27 ] [ 28 ]

  • CUB هي واحدة من مكتبات C++ الجديدة الأكثر دعمًا
  • دعم وحدة معالجة الرسومات متعددة النسخ من MIG
  • nvJPEG2000 – برنامج ترميز وفك ترميز JPEG 2000

المزايا

تتمتع CUDA بالعديد من المزايا مقارنة بالحوسبة التقليدية للأغراض العامة على وحدات معالجة الرسومات (GPGPU) باستخدام واجهات برمجة التطبيقات الرسومية:

  • القراءة المبعثرة يمكن للبرنامج القراءة من عناوين عشوائية في الذاكرة 
  • الذاكرة الافتراضية الموحدة (CUDA  4.0 وما فوق)
  • الذاكرة الموحدة (CUDA  6.0 وما فوق)
  • الذاكرة المشتركة يوفر CUDA منطقة ذاكرة مشتركة سريعة يمكن مشاركتها بين الخيوط. يمكن استخدام هذه المنطقة كذاكرة تخزين مؤقتة يديرها المستخدم، مما يتيح نطاقًا تردديًا أعلى مما هو ممكن باستخدام عمليات البحث في النسيج. [ 29 ] 
  • تنزيلات وقراءات أسرع من وإلى وحدة معالجة الرسومات
  • دعم كامل لعمليات الأعداد الصحيحة والعمليات الثنائية، بما في ذلك عمليات البحث عن نسيج الأعداد الصحيحة

القيود

  • سواءً للحاسوب المضيف أو وحدة معالجة الرسومات، تتم معالجة جميع أكواد CUDA المصدرية الآن وفقًا لقواعد بناء جملة C++. [ 30 ] لم يكن هذا هو الحال دائمًا. فقد كانت الإصدارات السابقة من CUDA تعتمد على قواعد بناء جملة C. [ 31 ] وكما هو الحال مع الحالة العامة لتجميع أكواد C باستخدام مُجمِّع C++، فمن المحتمل أن تفشل أكواد CUDA المصدرية القديمة المكتوبة بلغة C في التجميع أو أن لا تعمل كما هو مُخطط لها أصلاً.
  • إن التوافق مع لغات العرض مثل OpenGL هو أحادي الاتجاه، حيث يمكن لـ OpenGL الوصول إلى ذاكرة CUDA المسجلة ولكن CUDA لا يمكنها الوصول إلى ذاكرة OpenGL.
  • قد يؤدي النسخ بين ذاكرة المضيف وذاكرة الجهاز إلى انخفاض في الأداء بسبب عرض نطاق ناقل النظام وزمن الوصول (يمكن التخفيف من ذلك جزئيًا عن طريق عمليات نقل الذاكرة غير المتزامنة، والتي تتم معالجتها بواسطة محرك DMA الخاص بوحدة معالجة الرسومات).
  • لتحقيق أفضل أداء، ينبغي تشغيل الخيوط في مجموعات لا تقل عن 32 خيطًا، مع عدد إجمالي للخيوط يصل إلى الآلاف. لا تؤثر التفرعات في كود البرنامج بشكل كبير على الأداء، شريطة أن يسلك كل خيط من الخيوط الـ 32 نفس مسار التنفيذ؛ ويصبح نموذج تنفيذ SIMD قيدًا كبيرًا لأي مهمة متباينة بطبيعتها (مثل اجتياز بنية بيانات تقسيم المساحة أثناء تتبع الأشعة ).
  • لا تتوفر وظائف المحاكاة أو الرجوع إلى الإصدارات القديمة في الإصدارات الحديثة.
  • قد يتم أحيانًا وضع علامة على لغة C++ الصحيحة ومنع عملية التجميع بسبب الطريقة التي يتعامل بها المترجم مع التحسين لقيود جهاز GPU المستهدف.
  • لا يتم دعم معلومات نوع وقت التشغيل C++ (RTTI) ومعالجة الاستثناءات على نمط C++ إلا في كود المضيف، وليس في كود الجهاز.
  • في وضع الدقة المفردة على أجهزة الجيل الأول من CUDA ذات قدرة الحوسبة 1.x، لا يتم دعم الأعداد غير الطبيعية ، ويتم تصفيرها بدلاً من ذلك، وتكون دقة عمليات القسمة والجذر التربيعي أقل قليلاً من دقة العمليات الحسابية أحادية الدقة المتوافقة مع معيار IEEE 754. أما الأجهزة التي تدعم قدرة الحوسبة 2.0 وما فوق، فتدعم الأعداد غير الطبيعية، وتكون عمليات القسمة والجذر التربيعي متوافقة مع معيار IEEE 754 افتراضيًا. مع ذلك، يمكن للمستخدمين الحصول على سرعة العمليات الحسابية السابقة المخصصة للألعاب، والمتوفرة في أجهزة قدرة الحوسبة 1.x، عن طريق ضبط علامات المُصرّف لتعطيل عمليات القسمة والجذر التربيعي الدقيقة، وتمكين تصفير الأعداد غير الطبيعية. [ 32 ]
  • على عكس OpenCL ، فإن وحدات معالجة الرسومات التي تدعم CUDA متوفرة فقط من Nvidia لأنها تقنية احتكارية. [ 33 ] [ 3 ] وتشمل محاولات تطبيق CUDA على وحدات معالجة رسومات أخرى ما يلي:
    • مشروع كوريندر: يحوّل شفرة CUDA C++11 المصدرية إلى OpenCL 1.2 C. وهو نسخة معدلة من CUDA-on-CL مصممة لتشغيل TensorFlow . [ 34 ] [ 35 ] [ 36 ]
    • CU2CL: تحويل CUDA 3.2 C++ إلى OpenCL C. [ 37 ]
    • GPUOpen HIP: طبقة تجريد بسيطة فوق CUDA و ROCm مصممة خصيصًا لوحدات معالجة الرسومات من AMD وNvidia. تتضمن أداة تحويل لاستيراد مصدر CUDA C++. تدعم CUDA 4.0 بالإضافة إلى C++11 وfloat16.
    • يُعدّ ZLUDA بديلاً مباشراً لـ CUDA على معالجات AMD الرسومية، وكان يدعم سابقاً معالجات Intel الرسومية، ويُقدّم أداءً قريباً من الأداء الأصلي. [ 38 ] تعاقدت كلٌّ من Intel وAMD بشكل منفصل مع مطوّر البرنامج، أندريه يانيك، لتطويره في عامي 2021 و2022 على التوالي. مع ذلك، لم تُقرّر أيٌّ من الشركتين إصداره رسمياً لعدم وجود حالة استخدام تجارية واضحة. تضمّن عقد AMD بنداً يسمح ليانيك بنشر شفرته البرمجية بشكل مستقلّ، ما مكّنه من إصدار النسخة الجديدة التي تدعم معالجات AMD الرسومية فقط. [ 39 ]
    • يمكن لبرنامج ChipStar تجميع وتشغيل برامج CUDA/HIP على منصات OpenCL 3.0 أو Level Zero المتقدمة. [ 40 ]
    • SCALE هي مجموعة أدوات برمجة متوافقة مع CUDA لتجميع كود مصدر CUDA مسبقًا على وحدات معالجة الرسومات AMD، وتهدف إلى توسيع الدعم لوحدات معالجة الرسومات الأخرى في المستقبل. [ 41 ]

مثال

يقوم هذا المثال البرمجي المكتوب بلغة C++ بتحميل نسيج من صورة إلى مصفوفة على وحدة معالجة الرسومات (GPU):

texture < float , 2 , cudaReadModeElementType > tex ;void foo () { cudaArray * cu_array ؛// تخصيص مصفوفة cudaChannelFormatDesc description = cudaCreateChannelDesc <float> ( ); cudaMallocArray ( & cu_array , & description , width , height );// نسخ بيانات الصورة إلى مصفوفة cudaMemcpyToArray ( cu_array , image , width * height * sizeof ( float ), cudaMemcpyHostToDevice );// ضبط معلمات النسيج ( افتراضي ) tex.addressMode [ 0 ] = cudaAddressModeClamp ; tex.addressMode [ 1 ] = cudaAddressModeClamp ; tex.filterMode = cudaFilterModePoint ; tex.normalized = false ; // عدم تطبيع الإحداثيات// ربط المصفوفة بالنسيج cudaBindTextureToArray ( tex , cu_array );// تشغيل النواة dim3 blockDim ( 16 , 16 , 1 ); dim3 gridDim (( width + blockDim . x - 1 ) / blockDim . x , ( height + blockDim . y - 1 ) / blockDim . y , 1 ); kernel <<< gridDim , blockDim , 0 >>> ( d_data , height , width );// فك ارتباط المصفوفة من النسيج cudaUnbindTexture ( tex ); }__global__ void kernel ( float * odata , int height , int width ) { unsigned int x = blockIdx . x * blockDim . x + threadIdx . x ; unsigned int y = blockIdx . y * blockDim . y + threadIdx . y ; if ( x < width && y < height ) { float c = tex2D ( tex , x , y ); odata [ y * width + x ] = c ; } }

فيما يلي مثال مكتوب بلغة بايثون لحساب حاصل ضرب مصفوفتين على وحدة معالجة الرسومات (GPU). يمكن الحصول على روابط لغة بايثون غير الرسمية من PyCUDA . [ 42 ]

استيراد numpy استيراد pycuda.autoinitمن numpy.typing استورد NDArray و float32 ، ومن pycuda.compiler استورد SourceModule، ومن pycuda.driver استورد Function و In و Outmod : SourceModule = SourceModule ( """ __global__ void multiply_them(float* dest, float* a, float* b) {  const int i = threadIdx.x;  dest[i] = a[i] * b[i]; } """ )دالة الضرب : دالة = mod.get_function ( " multiply_them " )أ : NDArray [ float32 ] = numpy . عشوائي . راندن ( 400 ) . astype ( numpy . float32 ) ب : NDArray [ float32 ] = numpy . عشوائي . راندن ( 400 ) . أستيب ( numpy . float32 )dest : NDArray [ float32 ] = numpy.zeros_like ( a ) multiply_them ( Out ( dest ), In ( a ), In ( b ) , block = ( 400 , 1 , 1 ) )اطبع ( الوجهة - أ * ب )

يمكن العثور على روابط بايثون إضافية لتبسيط عمليات ضرب المصفوفات في برنامج pycublas . [ 43 ]

استيراد numpyfrom pycublas import CUBLASMatrixA : CUBLASMatrix = CUBLASMatrix ( numpy.mat ([[ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ], numpy.float32 )) B : CUBLASMatrix = CUBLASMatrix ( numpy.mat ([ [ 2 , 3 ] , [ 4 , 5 ] , [ 6 , 7 ] ] , numpy.float32 ) ) C : CUBLASMatrix = A * B print ( C.np_mat ( ) )

بينما يحل CuPy محل NumPy مباشرة: [ 44 ]

استيراد كوبيfrom cupy.typing import NDArray , float64أ : NDArray [ float64 ] = cupy . عشوائي . Randn ( 400 ) b : NDArray [ float64 ] = cupy . عشوائي . راندن ( 400 )dest : NDArray [ float64 ] = cupy . الأصفار_مثل ( أ )اطبع ( الوجهة - أ * ب )

وحدات معالجة الرسومات المدعومة

ملاحظة حول الترميز: تُكتب قدرة الحوسبة XY أيضًا على شكل SMXY أو sm_XY (على سبيل المثال 10.3 كـ SM103 أو sm_103) في برامج Nvidia الاحترافية وفي الكود الذي ساهمت به Nvidia في LLVM. [ 45 ]

فيما يلي جدول يوضح إمكانيات الحوسبة المدعومة في CUDA بناءً على إصدار CUDA SDK والبنية الدقيقة، مرتبة حسب الاسم الرمزي:

ملاحظة: CUDA SDK 10.2 هو آخر إصدار رسمي لنظام macOS، حيث لن يكون الدعم متاحًا لنظام macOS في الإصدارات الأحدث.

قدرة الحوسبة لـ CUDA حسب الإصدار مع أشباه موصلات وحدة معالجة الرسومات ونماذج بطاقات وحدة معالجة الرسومات المرتبطة بها (مفصولة حسب مجالات التطبيق المختلفة):

* – منتجات مخصصة لمصنعي المعدات الأصلية فقط

  1. قامت مجموعة أدوات CUDA 13.0 بإعادة تسمية SM101 لوحدات معالجة الرسومات Thor إلى SM110.

ميزات ومواصفات الإصدار

ملاحظة: يمكن لوحدة معالجة رسومية (GPU) ذات قدرة حسابية أعلى تنفيذ كود PTX المُصمم لوحدة معالجة رسومية ذات قدرة حسابية أقل. مع ذلك، من الممكن ترجمة كود CUDA إلى صيغة تعمل فقط على عائلة واحدة (نفس "X") من وحدات معالجة الرسوميات؛ إذا تمت ترجمة الكود الحالي بهذه الطريقة، فسيلزم إعادة ترجمته ليعمل على وحدة معالجة رسومية أحدث. [ 45 ]

دعم الميزات (الميزات غير المدرجة مدعومة لجميع إمكانيات الحوسبة)القدرة الحاسوبية (الإصدار)
1.0، 1.11.2، 1.32.x3.03.23.5، 3.7، 5.x، 6.x، 7.0، 7.27.58.x9.0، 10.x، 12.x
وظائف التصويت في عملية الالتفاف (__all()، __any())لانعم
وظائف التصويت المحرفة (__ballot())لانعم
وظائف حاجز الذاكرة (__threadfence_system())
وظائف التزامن (__syncthreads_count(), __syncthreads_and(), __syncthreads_or())
دوال السطح
شبكة ثلاثية الأبعاد من كتل الخيوط
وظائف خلط الالتواءلانعم
برمجة الذاكرة الموحدة
تحول قمعيلانعم
التوازي الديناميكيلانعم
مسار البيانات الموحد [ 65 ]لانعم
النسخ غير المتزامن المُسرّع بواسطة الأجهزةلانعم
حاجز الوصول/الانتظار المقسم المُسرّع بواسطة الأجهزة
دعم على مستوى الالتواء لعمليات التخفيض
إدارة الإقامة في ذاكرة التخزين المؤقت من المستوى الثاني
تعليمات DPX للبرمجة الديناميكية المعجلةلانعم
الذاكرة المشتركة الموزعة
مجموعة كتل الخيوط
وحدة تسريع ذاكرة الموتر (TMA)
دعم الميزات (الميزات غير المدرجة مدعومة لجميع إمكانيات الحوسبة)1.0، 1.11.2، 1.32.x3.03.23.5، 3.7، 5.x، 6.x، 7.0، 7.27.58.x9.0، 10.x، 12.x
القدرة الحاسوبية (الإصدار)

[ 66 ]

أنواع البيانات

أنواع الفاصلة العائمة

نوع البياناتأنواع المتجهات المدعومةأجزاءتعليقات
طول التخزين (متجه كامل)الطول المستخدم (قيمة واحدة)لافتةالأسمانتيسا
E2M1 = FP4e2m1x2 / e2m1x48 / 164121
E2M3 = متغير FP6e2m3x2 / e2m3x416 / 326123
E3M2 = متغير FP6e3m2x2 / e3m2x416 / 326132
UE4M3ue4m387043يُستخدم للقياس (E2M1 فقط)
E4M3 = متغير FP8e4m3 / e4m3x2 / e4m3x48 / 16 / 328143
E5M2 = متغير FP8e5m2 / e5m2x2 / e5m2x48 / 16 / 328152الأس/نطاق FP16، يتناسب مع 8 بتات
UE8M0ue8m0x2168080يستخدم للتحجيم (أي تنسيق FP4 أو FP6 أو FP8)
FP16f16 / f16x216 / 32161510
BF16bf16 / bf16x216 / 3216187الأس/نطاق FP32، يتناسب مع 16 بت
TF32tf3232191810الأس/المدى من نوع FP32، والجزء الكسري/الدقة من نوع FP16
FP32f32 / f32x232 / 64321823
FP64f64646411152

دعم الإصدارات

نوع البياناتالعمليات الأساسيةمدعوم منذالعمليات الذريةمدعوم منذ ذلك الحين للذاكرة العالميةمدعوم منذ ذلك الحين للذاكرة المشتركة
عدد صحيح ذو 8 بتات ، موقّع/غير موقّعالتحميل، التخزين، التحويل1.0غير متوفرغير متوفر
عدد صحيح ذو 16 بت، موقّع/غير موقّعالعمليات العامة1.0atomicCAS()3.5
عدد صحيح 32 بت، موقّع/غير موقّعالعمليات العامة1.0الدوال الذرية1.11.2
عدد صحيح 64 بت، مُوقّع/غير مُوقّعالعمليات العامة1.0الدوال الذرية1.22.0
أي نوع قابل للنسخ بسهولة مكون من 128 بتالعمليات العامةلاatomicExch, atomicCAS9.0
16 بت نقطة عائمة FP16الجمع، الطرح، الضرب، المقارنة، وظائف خلط الأرقام، التحويل5.3إضافة ذرية نصف 26.0
الإضافة الذرية7.0
BF16 ذو 16 بت بنظام الفاصلة العائمةالجمع، الطرح، الضرب، المقارنة، وظائف خلط الأرقام، التحويل8.0الإضافة الذرية8.0
فاصلة عائمة 32 بتالعمليات العامة1.0atomicExch()1.11.2
الإضافة الذرية2.0
الفاصلة العائمة 32 بت float2 و float4العمليات العامةلاالإضافة الذرية9.0
فاصلة عائمة 64 بتالعمليات العامة1.3الإضافة الذرية6.0

ملاحظة: أي أسطر مفقودة أو إدخالات فارغة تعكس نقصًا في المعلومات المتعلقة بهذا العنصر تحديدًا. [ 67 ]

نوى الموتر

FMA لكل دورة لكل نواة موتر [ 68 ]مدعوم منذ7.07.2محطة عمل 7.57.5 سطح المكتب8.08.6 محطة العمل8.78.6 سطح المكتب8.9 سطح المكتب8.9 محطة العمل9.010.010.112.0
نوع البياناتللمصفوفات الكثيفةللمصفوفات المتفرقةالجيل الأول (8x/SM)الجيل الأول؟ (8x/SM)الجيل الثاني (8x/SM)الجيل الثالث (4x/SM)الجيل الرابع (4x/SM)الجيل الخامس (4x/SM)
قيم أحادية البت (AND)8.0 كإصدار تجريبيلالا409620488192لا
قيم أحادية البت (XOR)7.5–8.9 كتجربةلا1024لا
أعداد صحيحة مكونة من 4 بت8.0–8.9 كتجربة2561024512مزامنة mma القديمةلا
4 بت نقطة عائمة FP4 (E2M1)10.0لا4096سيتم تحديده لاحقاً512
6 بت نقطة عائمة FP6 (E3M2 و E2M3)10.0لا2048سيتم تحديده لاحقاً
أعداد صحيحة من 8 بت7.28.0لا12812851225610242048256
نظام الفاصلة العائمة 8 بت FP8 (E4M3 و E5M2) مع تراكم FP168.9لا256
نظام الفاصلة العائمة 8 بت FP8 (E4M3 و E5M2) مع تجميع FP32128128
فاصلة عائمة 16 بت FP16 مع تراكم FP167.08.06464642561285121024128
فاصلة عائمة 16 بت FP16 مع تراكم FP32326412864
BF16 ذو 16 بت بنظام الفاصلة العائمة مع تراكم FP327.5 [ 69 ]8.0لا64 [ 70 ]
TF32 ذو 32 بت (19 بت مستخدمة) نقطة عائمةالسرعة غير محددة (32؟) [ 70 ]128326425651232
فاصلة عائمة 64 بت8.0لالا16السرعة غير محددة3216سيتم تحديده لاحقاً

ملاحظة: أي أسطر مفقودة أو خانات فارغة تعكس نقصًا في المعلومات المتعلقة بهذا العنصر تحديدًا. [ 71 ] [ 72 ] [ 73 ] [ 74 ] [ 75 ] [ 76 ]

تركيب النواة الموترية7.07.2، 7.58.0، 8.68.78.99.0
عرض وحدة الضرب النقطي بوحدات FP16 (بالبايت) [ 77 ] [ 78 ] [ 79 ] [ 80 ]4 (8)8 (16)4 (8)16 (32)
وحدات الضرب النقطي لكل نواة موتر1632
عدد النوى الموترية لكل قسم من أقسام SM21
معدل النقل الكامل (بايت/دورة) [ 81 ] لكل قسم SM [ 82 ]2565122561024
نوى موتر FP: الحد الأدنى من الدورات لحساب المصفوفة على مستوى الالتفاف848
نوى موتر FP: الحد الأدنى لشكل المصفوفة لتحقيق الإنتاجية الكاملة (بايت) [ 83 ]2048
أنوية موتر الأعداد الصحيحة: الحد الأدنى من الدورات لحساب المصفوفة على مستوى الالتفافلا4
أنوية موتر الأعداد الصحيحة: الحد الأدنى لحجم المصفوفة لتحقيق الإنتاجية الكاملة (بايت)لا102420481024

[ 84 ] [ 85 ] [ 86 ] [ 87 ]

تكوين النواة الموترية FP648.08.68.78.99.0
عرض وحدة الضرب النقطي بوحدات FP64 (بالبايت)4 (32)سيتم تحديده لاحقاً4 (32)
وحدات الضرب النقطي لكل نواة موتر4سيتم تحديده لاحقاً8
عدد النوى الموترية لكل قسم من أقسام SM1
معدل النقل الكامل (بايت/دورة) [ 81 ] لكل قسم SM [ 82 ]128سيتم تحديده لاحقاً256
الحد الأدنى من الدورات لحساب المصفوفة على مستوى الالتفاف16سيتم تحديده لاحقاً
الحد الأدنى لشكل المصفوفة لتحقيق الإنتاجية الكاملة (بايت) [ 83 ]2048

المواصفات الفنية

المواصفات الفنيةالقدرة الحاسوبية (الإصدار)
1.01.11.21.32.x3.03.23.53.75.05.25.36.06.16.27.07.27.58.08.68.78.99.010.x12.x
الحد الأقصى لعدد الشبكات المقيمة لكل جهاز (تنفيذ النواة المتزامن، ويمكن أن يكون أقل بالنسبة لأجهزة معينة)11643216128321612816128
أقصى أبعاد لشبكة كتل الخيوط23
أقصى بُعد س لشبكة من كتل الخيوط655352 31 − 1
أقصى بُعد y أو z لشبكة من كتل الخيوط65535
أقصى أبعاد لكتلة الخيوط3
أقصى بُعد س أو ص للكتلة5121024
أقصى بُعد z للكتلة64
الحد الأقصى لعدد الخيوط لكل كتلة5121024
حجم الالتواء32
الحد الأقصى لعدد الكتل المقيمة لكل معالج متعدد816321632162432
الحد الأقصى لعدد الالتفافات المقيمة لكل معالج متعدد243248643264486448
الحد الأقصى لعدد الخيوط المقيمة لكل معالج متعدد76810241536204810242048153620481536
عدد السجلات العادية ذات 32 بت لكل معالج متعدد8 آلاف16 ألف32 ألف64 ألف128 ألف64 ألف
عدد سجلات 32 بت الموحدة لكل معالج متعددلا2 ألف [ 88 ]

[ 89 ]

الحد الأقصى لعدد المسجلات 32 بت لكل كتلة مؤشر ترابط8 آلاف16 ألف32 ألف64 ألف32 ألف64 ألف32 ألف64 ألف32 ألف64 ألف
الحد الأقصى لعدد السجلات العادية ذات 32 بت لكل مؤشر ترابط12463255
الحد الأقصى لعدد سجلات 32 بت الموحدة لكل مجموعة من الحزملا63 [ 88 ]

[ 89 ]

مقدار الذاكرة المشتركة لكل معالج متعدد (من إجمالي الذاكرة المشتركة + ذاكرة التخزين المؤقت L1، إن وجدت)16 كيلوبايت16 / 48 كيلوبايت (من أصل 64 كيلوبايت)16 / 32 / 48 كيلوبايت (من أصل 64 كيلوبايت)80 / 96 / 112 كيلو بايت (من 128 كيلو بايت)64 كيلوبايت96 كيلوبايت64 كيلوبايت96 كيلوبايت64 كيلوبايت0 / 8 / 16 / 32 / 64 / 96 كيلو بايت (من 128 كيلو بايت)32 / 64 كيلوبايت (من أصل 96 كيلوبايت)0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 كيلو بايت (من 192 كيلو بايت)0 / 8 / 16 / 32 / 64 / 100 كيلو بايت (من 128 كيلو بايت)0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 كيلو بايت (من 192 كيلو بايت)0 / 8 / 16 / 32 / 64 / 100 كيلو بايت (من 128 كيلو بايت)0 / 8 / 16 / 32 / 64 / 100 / 132 / 164 / 196 / 228 كيلو بايت (من 256 كيلو بايت)0 / 8 / 16 / 32 / 64 / 100 كيلو بايت (من 128 كيلو بايت)
الحد الأقصى لمقدار الذاكرة المشتركة لكل كتلة مؤشر ترابط16 كيلوبايت48 كيلوبايت96 كيلوبايت48 كيلوبايت64 كيلوبايت163 كيلوبايت99 كيلوبايت163 كيلوبايت99 كيلوبايت227 كيلوبايت99 كيلوبايت
عدد بنوك الذاكرة المشتركة1632
مقدار الذاكرة المحلية لكل خيط16 كيلوبايت512 كيلوبايت
حجم ذاكرة ثابت يمكن الوصول إليه بواسطة CUDA C/C++ (بنك واحد، يمكن لـ PTX الوصول إلى 11 بنكًا، يمكن لـ SASS الوصول إلى 18 بنكًا)64 كيلوبايت
مجموعة عمل ذاكرة التخزين المؤقت لكل معالج متعدد للذاكرة الثابتة8 كيلوبايت4 كيلوبايت8 كيلوبايت
مجموعة عمل ذاكرة التخزين المؤقت لكل معالج متعدد لذاكرة النسيج16  كيلوبايت لكل TPC24  كيلوبايت لكل TPC12  كيلوبايت12   48  كيلوبايت [ 90 ]24  كيلوبايت48  كيلوبايت32  كيلوبايت [ 91 ]24  كيلوبايت48  كيلوبايت24  كيلوبايت32   128  كيلوبايت32   64  كيلوبايت28   192  كيلوبايت28   128  كيلوبايت28   192  كيلوبايت28   128  كيلوبايت28   256  كيلوبايت
أقصى عرض لمرجع نسيج أحادي البعد مرتبط بمصفوفة CUDA819265536131072
أقصى عرض لمرجع نسيج أحادي البعد مرتبط بالذاكرة الخطية2 272 282 272 282 272 28
أقصى عرض وعدد طبقات لمرجع نسيجي أحادي البعد متعدد الطبقات8192 × 51216384 × 204832768 × 2048
أقصى عرض وارتفاع لمرجع نسيج ثنائي الأبعاد مرتبط بمصفوفة CUDA65536 × 3276865536 × 65535131072 × 65536
أقصى عرض وارتفاع لمرجع نسيج ثنائي الأبعاد مرتبط بذاكرة خطية65000 × 6500065536 × 65536131072 × 65000
أقصى عرض وارتفاع لمرجع نسيج ثنائي الأبعاد مرتبط بمصفوفة CUDA تدعم تجميع النسيجغير متوفر16384 × 1638432768 × 32768
الحد الأقصى للعرض والارتفاع وعدد الطبقات لمرجع نسيج ثنائي الأبعاد متعدد الطبقات8192 × 8192 × 51216384 × 16384 × 204832768 × 32768 × 2048
أقصى عرض وارتفاع وعمق لمرجع نسيج ثلاثي الأبعاد مرتبط بذاكرة خطية أو مصفوفة CUDA2048 34096 316384 3
أقصى عرض (وارتفاع) لمرجع نسيج مكعب الخريطةغير متوفر1638432768
الحد الأقصى للعرض (والارتفاع) وعدد الطبقات لمرجع نسيج مكعب الطبقاتغير متوفر16384 × 204632768 × 2046
الحد الأقصى لعدد الصور التي يمكن ربطها بنواة النظام128256
أقصى عرض لمرجع سطح أحادي البعد مرتبط بمصفوفة CUDAغير مدعوم655361638432768
أقصى عرض وعدد طبقات لسطح مرجعي أحادي البعد متعدد الطبقات65536 × 204816384 × 204832768 × 2048
أقصى عرض وارتفاع لمرجع سطح ثنائي الأبعاد مرتبط بمصفوفة CUDA65536 × 3276816384 × 65536131072 × 65536
أقصى عرض وارتفاع وعدد طبقات لسطح مرجعي ثنائي الأبعاد متعدد الطبقات65536 × 32768 × 204816384 × 16384 × 204832768 × 32768 × 2048
أقصى عرض وارتفاع وعمق لمرجع سطح ثلاثي الأبعاد مرتبط بمصفوفة CUDA65536 × 32768 × 20484096 × 4096 × 409616384 × 16384 × 16384
أقصى عرض (وارتفاع) لمرجع سطح مكعب الخريطة المرتبط بمصفوفة CUDA327681638432768
الحد الأقصى للعرض وعدد الطبقات لمرجع سطح مكعب الطبقات32768 × 204616384 × 204632768 × 2046
الحد الأقصى لعدد الأسطح التي يمكن ربطها بنواة81632
الحد الأقصى لعدد التعليمات لكل نواةمليونان512 مليون
الحد الأقصى لعدد كتل الخيوط لكل مجموعة من كتل الخيوط [ 92 ]لا168
المواصفات الفنية1.01.11.21.32.x3.03.23.53.75.05.25.36.06.16.27.07.27.58.08.68.78.99.010.x12.x
القدرة الحاسوبية (الإصدار)
[ 93 ] [ 94 ]

بنية المعالجات المتعددة

مواصفات معماريةالقدرة الحاسوبية (الإصدار)
1.01.11.21.32.02.13.03.23.53.75.05.25.36.06.16.27.07.27.58.08.68.78.99.010.x12.x
عدد مسارات وحدة الحساب والمنطق (ALU) لعمليات الحساب INT3283248192 [ 95 ]12812864128128646464128
عدد مسارات وحدة الحساب والمنطق لأي عملية حسابية من نوع INT32 أو FP32غير متوفرغير متوفر
عدد مسارات وحدة الحساب والمنطق (ALU) لعمليات الحساب FP326464128128
عدد مسارات وحدة الحساب والمنطق (ALU) لعمليات الحساب FP16x2لا1128 [ 96 ]128 [ 97 ]64 [ 98 ]
عدد مسارات وحدة الحساب والمنطق لعمليات الحساب FP64لا116 بواسطة FP32 [ 99 ]4 بواسطة FP32 [ 100 ]88 / 64 [ 101 ]644 [ 102 ]324322322642
عدد وحدات التحميل/التخزين4 لكل 2 سم8 لكل 2 سم8 لكل 2 SM / 3 SM [ 101 ]8 لكل 3 سم163216321632
عدد وحدات الدوال الخاصة للدوال المتسامية ذات الفاصلة العائمة أحادية الدقة2 [ 103 ]4832163216
عدد وحدات رسم الخرائط النسيجية (TMU)4 لكل 2 سم8 لكل 2 سم8 لكل 2 / 3SM [ 101 ]8 لكل 3 سم44 / 8 [ 101 ]1681684
عدد مسارات وحدة الحساب والمنطق (ALU) لعمليات حسابية موحدة من نوع INT32لا2 [ 104 ]
عدد نوى الموترلا8 (الجيل الأول) [ 105 ]0 / 8 [ 101 ] (الجيل الثاني)4 (الجيل الثالث)4 (الجيل الرابع)
عدد نوى تتبع الأشعةلا0 / 1 [ 101 ] (الجيل الأول)لا1 (الجيل الثاني)لا1 (الجيل الثالث)لا
عدد أقسام SM = كتل المعالجة [ 106 ]1424
عدد مُجدولي الالتفاف لكل قسم من أقسام SM1241
الحد الأقصى لعدد التعليمات الجديدة التي يصدرها كل دورة جدولة واحدة [ 107 ]2 [ 108 ]12 [ 109 ]21
حجم الذاكرة الموحدة لذاكرة التخزين المؤقت للبيانات والذاكرة المشتركة16 كيلوبايت [ 110 ]16 كيلوبايت [ 110 ]64 كيلوبايت128 كيلوبايت64 كيلو بايت SM + 24 كيلو بايت L1 (منفصل) [ 111 ]96 كيلو بايت SM + 24 كيلو بايت L1 (منفصل) [ 111 ]64 كيلو بايت SM + 24 كيلو بايت L1 (منفصل) [ 111 ]64 كيلو بايت SM + 24 كيلو بايت L1 (منفصل) [ 111 ]96 كيلو بايت SM + 24 كيلو بايت L1 (منفصل) [ 111 ]64 كيلو بايت SM + 24 كيلو بايت L1 (منفصل) [ 111 ]128 كيلوبايت96 كيلوبايت [ 112 ]192 كيلوبايت128 كيلوبايت192 كيلوبايت128 كيلوبايت256 كيلوبايت
حجم ذاكرة التخزين المؤقت للتعليمات من المستوى الثالث لكل وحدة معالجة رسومية32 كيلوبايت [ 113 ]استخدام ذاكرة التخزين المؤقت للبيانات من المستوى الثاني
حجم ذاكرة التخزين المؤقت للتعليمات من المستوى الثاني لكل مجموعة معالج نسيج (TPC)8 كيلوبايت
حجم ذاكرة التخزين المؤقت للتعليمات من المستوى 1.5 لكل وحدة معالجة متعددة [ 114 ]4 كيلوبايت32 كيلوبايت32 كيلوبايت48 كيلوبايت [ 91 ]128 كيلوبايت32 كيلوبايت128 كيلوبايت~46 كيلوبايت [ 115 ]128 كيلوبايت [ 116 ]
حجم ذاكرة التخزين المؤقت للتعليمات من المستوى الأول لكل وحدة معالجة متعددة8 كيلوبايت8 كيلوبايت
حجم ذاكرة التخزين المؤقت للتعليمات من المستوى L0 لكل قسم من أقسام SMقسم واحد فقط لكل وحدة تخزينلا12 كيلوبايت16 كيلوبايت؟ [ 117 ]32 كيلوبايت
عرض التعليمات [ 114 ]تعليمات 32 بت وتعليمات 64 بت [ 118 ]تعليمات 64 بت + منطق تحكم 64 بت كل 7 تعليماتتعليمات 64 بت + منطق تحكم 64 بت كل 3 تعليماتمنطق تعليمي وتحكمي مدمج 128 بت
عرض ناقل الذاكرة لكل وحدة تحكم بالذاكرة بالبتات64 ((G)DDR)32 ((G)DDR)512 (HBM)32 ((G)DDR)512 (HBM)32 ((G)DDR)512 (HBM)32 ((G)DDR)512 (HBM)32 ((G)DDR)
ذاكرة تخزين مؤقتة من المستوى الثاني لكل وحدة تحكم في الذاكرة16 كيلوبايت [ 119 ]32 كيلوبايت [ 119 ]128 كيلوبايت256 كيلوبايت1 ميجابايت512 كيلوبايت128 كيلوبايت512 كيلوبايت256 كيلوبايت128 كيلوبايت768 كيلوبايت64 كيلوبايت512 كيلوبايت4 ميجابايت512 كيلوبايت8 ميجابايت [ 120 ]5 ميجابايت6.25 ميجابايت8 ميجابايت [ 121 ]
عدد وحدات إخراج العرض (ROP) لكل وحدة تحكم في الذاكرة (أو لكل GPC في الطرازات الأحدث)4848168128416281616 لكل جالون3 لكل GPC16 لكل جالون
مواصفات معمارية1.01.11.21.32.02.13.03.23.53.75.05.25.36.06.16.27.07.27.58.08.68.78.99.010.x12.x
القدرة الحاسوبية (الإصدار)

للمزيد من المعلومات، اقرأ دليل برمجة Nvidia CUDA C++. [ 122 ]

استخدامات بنية CUDA

مقارنة مع المنافسين

تتنافس CUDA مع مجموعات الحوسبة الأخرى لوحدات معالجة الرسومات: Intel OneAPI و AMD ROCm .

بينما يعتبر برنامج CUDA من Nvidia مغلق المصدر، فإن برنامج OneAPI من Intel وبرنامج ROCm من AMD مفتوح المصدر.

Intel OneAPI

oneAPI هي مبادرة قائمة على معايير مفتوحة، أُنشئت لدعم تطوير البرمجيات لبنى أجهزة متعددة. [ 125 ] يجب أن تُطبّق مكتبات oneAPI مواصفات مفتوحة تُناقش علنًا من قِبل مجموعات الاهتمام الخاصة، مما يُتيح لأي مطوّر أو مؤسسة إمكانية تطبيق إصداراتهم الخاصة من مكتبات oneAPI. [ 126 ] [ 127 ]

صُنعت هذه الأجهزة في الأصل بواسطة شركة إنتل، ومن بين الشركات الأخرى التي اعتمدتها فوجيتسو وهواوي.

مؤسسة التسريع الموحدة (UXL)

مؤسسة التسريع الموحد (UXL) هي اتحاد تقني جديد يعمل على مواصلة مبادرة OneAPI، بهدف إنشاء نظام بيئي جديد لبرمجيات التسريع مفتوحة المصدر، بالإضافة إلى مشاريع المعايير والمواصفات المفتوحة ذات الصلة من خلال فرق العمل ومجموعات الاهتمام الخاصة (SIGs). ويتمثل الهدف في توفير بدائل مفتوحة لتقنية CUDA من Nvidia. وتشمل الشركات الرئيسية الداعمة لها: Intel وGoogle وARM وQualcomm وSamsung وImagination وVMware. [ 128 ]

AMD ROCm

ROCm [ 129 ] عبارة عن حزمة برامج مفتوحة المصدر لبرمجة وحدة معالجة الرسومات (GPU) من شركة Advanced Micro Devices (AMD).

انظر أيضاً

مراجع

  1. "إنفيديا® كودا™ تُطلق العنان لقوة الحوسبة باستخدام وحدة معالجة الرسومات - بيان صحفي" . nvidia.com . مؤرشف من الأصل بتاريخ 29 مارس 2007. تم الاطلاع عليه بتاريخ 26 يناير 2025 .
  2. "فهرس /compute/cuda/redist" . تم الاسترجاع في 16 يونيو 2026 .
  3. 1 2 شاه، أغام. "إنفيديا ليست ضد قيام جهات خارجية بتصنيع رقائق CUDA" . www.theregister.com . تاريخ الاسترجاع: 25 أبريل 2024 .
  4. "الصفحة الرئيسية لـ Nvidia CUDA" . 18 يوليو 2017.
  5. شيمبي، أناند لال؛ ويلسون، ديريك (8 نوفمبر 2006). "معالج الرسوميات GeForce 8800 (G80) من إنفيديا: إعادة تصميم معمارية لـ DirectX 10" . AnandTech. مؤرشف من الأصل في 24 أبريل 2010. تم الاطلاع عليه في 16 مايو 2015 . 
  6. "مقدمة - وثائق nsight-visual-studio-edition 12.6" . docs.nvidia.com . تم الاطلاع عليه بتاريخ 10-10-2024 .
  7. 1 2 أبي شحلة، فيدي (18 يونيو 2008). "كودا من إنفيديا: نهاية وحدة المعالجة المركزية؟" . تومز هاردوير . تم الاسترجاع في 17 مايو 2015 .
  8. جونز، ستيفن (22 أبريل 2025). ما هي CUDA؟ (فيديو). كمبيوتر فايل . تم الاطلاع عليه بتاريخ 24 يوليو 2025 عبر يوتيوب.
  9. زونيتش، بيتر (24 يناير 2018). "CUDA مقابل OpenCL مقابل OpenGL" . Videomaker . تم الاسترجاع في 16 سبتمبر 2018 .
  10. "OpenCL" . مطورو NVIDIA . 24-04-2013 . تم الاطلاع عليه بتاريخ 04-11-2019 .
  11. 1 2 كوسغروف، إيما. "إيان باك هو من ابتكر سلاح إنفيديا السري. وقد يقضي بقية حياته المهنية في الدفاع عنه" . بزنس إنسايدر . تاريخ الاسترجاع: 24 يوليو 2025 .
  12. «نعي جون نيكولز - لوس ألتوس، كاليفورنيا» . صحيفة ميركوري نيوز . 29 سبتمبر 2011. تاريخ الاطلاع: 23 نوفمبر 2025. توفي جون ريتشارد نيكولز في لوس ألتوس، كاليفورنيا، في 13 أغسطس 2011 بعد صراع شجاع مع مرض السرطان. وُلد في 6 مارس 1950 لكينيث وكاثرين نيكولز، ونشأ في ويلبراهام، ماساتشوستس.
  13. ويت، ستيفن (27 نوفمبر 2023). "كيف تُسهم شركة إنفيديا بقيادة جنسن هوانغ في ثورة الذكاء الاصطناعي" . مجلة نيويوركر . الرقم الدولي الموحد للدوريات 0028-792X . تاريخ الاسترجاع: 10 ديسمبر 2023 . 
  14. "مترجم CUDA LLVM" . 7 مايو 2012.
  15. "تجميع CUDA باستخدام clang - وثائق LLVM 22.0.0git" . llvm.org .
  16. أول عرض توضيحي لـ OpenCL على وحدة معالجة الرسومات على يوتيوب
  17. عرض توضيحي لـ DirectCompute Ocean يعمل على وحدة معالجة رسومات Nvidia CUDA على YouTube
  18. فاسيلياديس، جورجوس؛ أنتوناتوس، سبيروس؛ بوليكروناكيس، ميخاليس؛ ماركاتوس، إيفانجيلوس ب.؛ إيوانيديس، سوتيريس (سبتمبر 2008). "Gnort: كشف اختراق الشبكات عالي الأداء باستخدام معالجات الرسومات" (ملف PDF) . التطورات الحديثة في كشف الاختراق . سلسلة محاضرات في علوم الحاسوب. المجلد 5230. الصفحات 116-134 . doi : 10.1007/978-3-540-87403-4_7 . ISBN   978-3-540-87402-7.
  19. شاتز، مايكل سي؛ ترابنيل، كول؛ ديلشر، آرثر إل؛ فارشني، أميتاب (2007). "محاذاة التسلسل عالية الإنتاجية باستخدام وحدات معالجة الرسومات" . BMC Bioinformatics . 8 474. doi : 10.1186/1471-2105-8-474 . PMC 2222658. PMID 18070356 .  
  20. مانافسكي، سفيتلين أ.؛ جورجيو، فالي (2008). "بطاقات معالجة الرسومات المتوافقة مع CUDA كمسرعات أجهزة فعالة لمحاذاة تسلسل سميث-واترمان" . BMC Bioinformatics . 10 (ملحق 2): S10. doi : 10.1186/1471-2105-9-S2-S10 . PMC 2323659. PMID 18387198 .  
  21. "أرشيف كود جوجل - تخزين طويل الأمد لاستضافة مشاريع كود جوجل" . code.google.com .
  22. "استخدم وحدة معالجة الرسومات Nvidia الخاصة بك للحوسبة العلمية" . boinc.berkeley.edu . البنية التحتية المفتوحة للحوسبة الشبكية في بيركلي (BOINC). ١٨ ديسمبر ٢٠٠٨. مؤرشف من الأصل في ٢٨ ديسمبر ٢٠٠٨. تم الاطلاع عليه في ٨ أغسطس ٢٠١٧ .
  23. "مجموعة تطوير برامج Nvidia CUDA (CUDA SDK) - ملاحظات الإصدار 2.0 لنظام التشغيل MAC OS X" . مؤرشف من الأصل بتاريخ 2009-01-06.
  24. "CUDA 1.1 – متوفر الآن على نظام التشغيل Mac OS X" . 14 فبراير 2008. مؤرشف من الأصل في 22 نوفمبر 2008.
  25. "الكشف عن ميزات CUDA 11" . 14 مايو 2020.
  26. "مجموعة أدوات CUDA 11.1 تقدم دعمًا لوحدات معالجة الرسومات من سلسلة GeForce RTX 30 وسلسلة Quadro RTX" . 23 سبتمبر 2020.
  27. "تحسين تخصيص الذاكرة باستخدام ميزات NVIDIA CUDA 11.2 الجديدة" . 16 ديسمبر 2020.
  28. "استكشاف الميزات الجديدة لـ CUDA 11.3" . 16 أبريل 2021.
  29. سيلبرشتاين، مارك؛ شوستر، عساف ؛ جايجر، دان؛ باتني، أنجول؛ أوينز، جون د. (2008). "حساب فعال لمجموع الضرب على وحدات معالجة الرسومات من خلال ذاكرة تخزين مؤقتة مُدارة برمجياً" (ملف PDF) . وقائع المؤتمر الدولي السنوي الثاني والعشرين للحوسبة الفائقة – ICS '08 (ملف PDF) . وقائع المؤتمر الدولي السنوي الثاني والعشرين للحوسبة الفائقة – ICS '08. الصفحات 309-318 . doi : 10.1145/1375527.1375572 . ISBN  978-1-60558-158-3.
  30. "دليل برمجة CUDA C الإصدار 8.0" (ملف PDF) . منطقة مطوري nVidia . يناير 2017. صفحة 19. تاريخ الاطلاع: 22 مارس 2017 . 
  31. "NVCC يفرض تجميع ملفات .cu باستخدام لغة C++" . 29 نوفمبر 2011.
  32. وايت هيد، ناثان؛ فيت-فلوريا، أليكس. "الدقة والأداء: التوافق مع معيار الفاصلة العائمة ومعيار IEEE 754 لوحدات معالجة الرسومات من إنفيديا" (ملف PDF) . إنفيديا . تم الاطلاع عليه بتاريخ 18 نوفمبر 2014 .
  33. "منتجات تدعم تقنية CUDA" . منطقة CUDA . شركة Nvidia . تم الاطلاع بتاريخ 3 نوفمبر 2008 .
  34. "مشروع الكزبرة: تجميع أكواد CUDA إلى OpenCL، وتشغيلها في كل مكان" . Phoronix.
  35. بيركنز، هيو (2017). "cuda-on-cl" (ملف PDF) . IWOCL . تم الاطلاع عليه بتاريخ 8 أغسطس 2017 .
  36. "hughperkins/coriander: بناء كود NVIDIA® CUDA™ لأجهزة OpenCL™ 1.2" . GitHub. 6 مايو 2019.
  37. "وثائق CU2CL" . chrec.cs.vt.edu .
  38. "GitHub – vosen/ZLUDA" . GitHub .
  39. لارابيل، مايكل (12 فبراير 2024)، "شركة AMD مولت بهدوء تطبيقًا جاهزًا لـ CUDA مبنيًا على ROCm: وهو الآن مفتوح المصدر" ، فورونيكس ، تاريخ الاطلاع : 12 فبراير 2024
  40. "GitHub – chip-spv/chipStar" . GitHub .
  41. "أداة SCALE الجديدة تُمكّن تطبيقات CUDA من العمل على وحدات معالجة الرسومات من AMD" . موقع Tom's Hardware. 17 يوليو 2024.
  42. ^ "بيكودا" . mathema.tician.de .
  43. "pycublas" . مؤرشف من الأصل بتاريخ 20 أبريل 2009. تم الاطلاع عليه بتاريخ 8 أغسطس 2017 .
  44. "CuPy" . cupy.dev . تم الاطلاع عليه بتاريخ 23-09-2025 .
  45. 1 2 "دليل المستخدم لواجهة NVPTX الخلفية - وثائق LLVM 22.0.0git" . llvm.org .
  46. "دليل برمجة NVIDIA CUDA. الإصدار 1.0" (PDF) . 23 يونيو 2007.
  47. "دليل برمجة NVIDIA CUDA. الإصدار 2.1" (PDF) . 8 ديسمبر 2008.
  48. "دليل برمجة NVIDIA CUDA. الإصدار 2.2" (PDF) . 2 أبريل 2009.
  49. "دليل برمجة NVIDIA CUDA. الإصدار 2.2.1" (PDF) . 26 مايو 2009.
  50. "دليل برمجة NVIDIA CUDA. الإصدار 2.3.1" (PDF) . 26 أغسطس 2009.
  51. "دليل برمجة NVIDIA CUDA. الإصدار 3.0" (PDF) . 20 فبراير 2010.
  52. "دليل برمجة NVIDIA CUDA C. الإصدار 3.1.1" (PDF) . 21 يوليو 2010.
  53. "دليل برمجة NVIDIA CUDA C. الإصدار 3.2" (PDF) . 9 نوفمبر 2010.
  54. "ملاحظات إصدار CUDA 11.0" . مطورو NVIDIA .
  55. "ملاحظات إصدار CUDA 11.1" . مطورو NVIDIA .
  56. "ملاحظات إصدار CUDA 11.5" . مطورو NVIDIA .
  57. "ملاحظات إصدار CUDA 11.8" . مطورو NVIDIA .
  58. "مصفوفة الدعم - الواجهة الخلفية لـ NVIDIA cuDNN" . docs.nvidia.com . تم الاطلاع عليه بتاريخ 20 أغسطس 2025 .
  59. "مواصفات بطاقة الرسومات NVIDIA Quadro NVS 420" . قاعدة بيانات TechPowerUp لوحدات معالجة الرسومات . 25 أغسطس 2023.
  60. لارابيل، مايكل (29 مارس 2017). "إنفيديا تُطلق دعم معالج الرسوميات Tegra X2 في نوفو" . فورونيكس . تم الاطلاع عليه في 8 أغسطس 2017 .
  61. مواصفات بطاقة Nvidia Xavier على موقع TechPowerUp (أولية)
  62. "مرحباً — وثائق دليل مطوري Jetson Linux 34.1" . docs.nvidia.com .
  63. "NVIDIA تُفعّل دعم وحدة معالجة الرسومات Volta مفتوحة المصدر لمعالج Xavier SoC الخاص بها" .
  64. "هندسة إنفيديا آدا لوفليس" .
  65. "تشريح بنية وحدة معالجة الرسومات تورينج من خلال القياس الدقيق" (PDF) .
  66. "H.1. الميزات والمواصفات الفنية - الجدول 13. دعم الميزات لكل قدرة حسابية" . docs.nvidia.com . تم الاطلاع عليه بتاريخ 23-09-2020 . 
  67. "دليل برمجة CUDA C++" .
  68. عملية الضرب والجمع المدمجة، المنفذة فعليًا، مصفوفة كثيفة
  69. كـ SASS منذ الإصدار 7.5، وكـ PTX منذ الإصدار 8.0
  70. 1 2 دعم غير رسمي في SASS
  71. ^ "موجز تقني. سلسلة NVIDIA Jetson AGX Orin" (PDF) . nvidia.com . تم الاسترجاع في 5 سبتمبر 2023 .
  72. "معمارية معالج الرسوميات NVIDIA Ampere GA102" (ملف PDF) . nvidia.com . تم الاطلاع عليه بتاريخ 5 سبتمبر 2023 .
  73. ^ لوه ويلي. مروحة، رويبو؛ لي زيو. دو، دايو؛ وانغ، تشيانغ. تشو، شياو ون (2024). “قياس وتشريح بنية Nvidia Hopper GPU”. أرخايف : 2402.13499v1 [ cs.AR ].
  74. "ورقة بيانات NVIDIA A40" (ملف PDF) . nvidia.com . تم الاطلاع عليها بتاريخ 27 أبريل 2024 .
  75. "معمارية وحدة معالجة الرسومات NVIDIA AMPERE GA102" (ملف PDF) . 27 أبريل 2024.
  76. "ورقة بيانات NVIDIA L40" (ملف PDF) . nvidia.com . 27 أبريل 2024.
  77. في الأوراق البيضاء، تمثل مخططات مكعبات Tensor Core عرض وحدة الضرب النقطي في الارتفاع (4 وحدات FP16 لـ Volta وTuring، و8 وحدات FP16 لـ A100، و4 وحدات FP16 لـ GA102، و16 وحدة FP16 لـ GH100). يمثل البعدان الآخران عدد وحدات الضرب النقطي (4×4 = 16 لـ Volta وTuring، و8×4 = 32 لـ Ampere وHopper). تمثل الكتل الرمادية الناتجة عمليات FMA من نوع FP16 لكل دورة. تم عرض Pascal بدون Tensor Core فقط لمقارنة السرعة، وكذلك Volta V100 مع أنواع البيانات غير FP16.
  78. "ورقة عمل معمارية تورينج من إنفيديا" (ملف PDF) . nvidia.com . تم الاطلاع عليها بتاريخ 5 سبتمبر 2023 .
  79. "معالج الرسوميات Tensor Core من NVIDIA" (ملف PDF) . nvidia.com . تم الاطلاع عليه بتاريخ 5 سبتمبر 2023 .
  80. "نظرة معمقة على بنية NVIDIA Hopper" . 22 مارس 2022.
  81. 1 2 شكل × حجم المعامل المحول، على سبيل المثال 2 نواة موتر × 4×4×4×FP16/دورة = 256 بايت/دورة
  82. 1 2 = ناتج أول 3 صفوف من الجدول
  83. 1 2 = حاصل ضرب صفي الجدول السابقين؛ الشكل: على سبيل المثال 8×8×4×FP16 = 512 بايت
  84. صن، وي؛ لي، أنغ؛ جينغ، تونغ؛ ستويك، ساندر؛ كوربورال، هينك (2023). "تحليل نوى الموتر عبر المعايير الدقيقة: زمن الاستجابة، والإنتاجية، والسلوكيات العددية". معاملات IEEE للأنظمة المتوازية والموزعة . 34 (1): 246-261 . arXiv : 2206.02874 . Bibcode : 2023ITPDS..34..246S . doi : 10.1109/tpds.2022.3217824 . S2CID 249431357 . 
  85. "Parallel Thread Execution ISA Version 7.7" .
  86. ريحان، محمد عامر؛ جولي، نيجار؛ عامودت، تور (2018). "نمذجة وحدات معالجة الرسومات المُمكّنة بواسطة مُسرّع التعلم العميق". arXiv : 1811.08309 [ cs.MS ].
  87. "هندسة إنفيديا آدا لوفليس" .
  88. 1 2 جيا، زهي؛ ماجيوني، ماركو؛ سميث، جيفري. دانييلي باولو سكاربازا (2019). “تشريح وحدة معالجة الرسومات NVidia Turing T4 عبر Microbenchmarking”. أرخايف : 1903.07486 [ cs.DC ].
  89. 1 2 بورغيس، جون (2019). "RTX ON – معالج الرسوميات تورينج من إنفيديا". ندوة IEEE Hot Chips 31 لعام 2019 (HCS) . الصفحات 1-27 . doi : 10.1109/HOTCHIPS.2019.8875651 . ISBN  978-1-7281-2089-8. S2CID 204822166 . 
  90. يعتمد على الجهاز
  91. 1 2 "Tegra X1" . 9 يناير 2015.
  92. "gtc22-whitepaper-hopper.pdf" . nvdam.widen.net .
  93. "دليل برمجة CUDA — دليل برمجة CUDA" . docs.nvidia.com .
  94. "نظرة معمقة على بنية NVIDIA Hopper" . مدونة NVIDIA التقنية . 22 مارس 2022.
  95. لا يمكنه تنفيذ سوى 160 تعليمة عددية صحيحة وفقًا لدليل البرمجة
  96. 128 وفقًا لـ. 64 من FP32 + 64 وحدة منفصلة؟
  97. 64 بواسطة أنوية FP32 و 64 بواسطة أنوية FP32/INT المرنة.
  98. "دليل برمجة CUDA C++" . docs.nvidia.com .
  99. يتم دمج 32 مسارًا من نوع FP32 لتصبح 16 مسارًا من نوع FP64. قد يكون العدد أقل حسب الطراز.
  100. مدعومة فقط بـ 16 مسار FP32، وتتحد لتشكل 4 مسارات FP64
  101. 1 2 3 4 5 6 حسب الطراز
  102. سرعة فعالة، على الأرجح عبر منافذ FP32. لا يوجد وصف لأنوية FP64 الفعلية.
  103. يمكن استخدامه أيضًا لجمع الأعداد الصحيحة ومقارنتها
  104. دورتان ساعة لكل تعليمة لكل قسم من أقسام SM. بورغيس، جون (2019). "RTX ON - وحدة معالجة الرسومات NVIDIA TURING". ندوة IEEE Hot Chips 31 لعام 2019 (HCS) . الصفحات 1-27 . doi : 10.1109/HOTCHIPS.2019.8875651 . ISBN  978-1-7281-2089-8. S2CID 204822166 . 
  105. دورانت، لوك؛ جيرو، أوليفييه؛ هاريس، مارك؛ ستام، نيك (10 مايو 2017). "نظرة داخلية على فولتا: وحدة معالجة الرسومات الأكثر تطوراً في العالم لمراكز البيانات" . مدونة مطوري إنفيديا .
  106. يمتلك المخططون والموزعون وحدات تنفيذ مخصصة على عكس ما هو الحال مع فيرمي وكبلر.
  107. يمكن أن تتداخل عمليات الإرسال بشكل متزامن، إذا استغرقت أكثر من دورة واحدة (عندما يكون هناك عدد أقل من وحدات التنفيذ من 32/SM Partition)
  108. يمكن إصدار أنبوب MAD وأنبوب SFU بشكل مزدوج
  109. لا يمكن لأكثر من مُجدوِل واحد إصدار تعليمتين في وقت واحد. المُجدوِل الأول مسؤول عن مجموعات الالتفاف ذات المعرّفات الفردية، بينما المُجدوِل الثاني مسؤول عن مجموعات الالتفاف ذات المعرّفات الزوجية.
  110. 1 2 ذاكرة مشتركة فقط، بدون ذاكرة تخزين مؤقتة للبيانات
  111. 1 2 3 4 5 6 الذاكرة المشتركة منفصلة، ​​لكن L1 يتضمن ذاكرة تخزين مؤقتة للنسيج
  112. "H.6.1. البنية" . docs.nvidia.com . تم الاطلاع عليه بتاريخ 13-05-2019 .
  113. وونغ، هنري؛ بابادوبولو، ميسيل-ميرتو؛ سادوغي-ألفاندي، مريم؛ موشوفوس، أندرياس (مارس 2010). تبسيط بنية المعالجات الرسومية الدقيقة من خلال القياس المعياري الدقيق (ملف PDF) . ندوة IEEE الدولية لتحليل أداء الأنظمة والبرمجيات (ISPASS) لعام 2010. وايت بلينز، نيويورك، الولايات المتحدة الأمريكية: جمعية IEEE للحاسبات. doi : 10.1109/ISPASS.2010.5452013 . ISBN 978-1-4244-6023-6.
  114. 1 2 جيا، زهي؛ ماجيوني، ماركو؛ ستيجر، بنيامين. سكاربازا، دانييلي ب. (2018). “تشريح بنية NVIDIA Volta GPU عبر Microbenchmarking”. أرخايف : 1804.06826 [ cs.DC ].
  115. ^ جيا زهي. ماجيوني، ماركو؛ سميث، جيفري. دانييلي باولو سكاربازا (2019). “تشريح وحدة معالجة الرسومات NVidia Turing T4 عبر Microbenchmarking”. أرخايف : 1903.07486 [ cs.DC ].
  116. فان ساندت، بيتر؛ جيا، تشي (أبريل 2021). "تشريح بنية معالج الرسوميات أمبير من خلال القياسات الدقيقة" . nvidia.com .
  117. لاحظ أن جيا زهي؛ ماجيوني، ماركو؛ سميث، جيفري. دانييلي باولو سكاربازا (2019). “تشريح وحدة معالجة الرسومات NVidia Turing T4 عبر Microbenchmarking”. أرخايف : 1903.07486 [ cs.DC ].ويخالف هذا الرأي ويذكر أن ذاكرة التخزين المؤقت للتعليمات من المستوى L0 تبلغ 2 كيلوبايت لكل قسم من أقسام SM، وذاكرة التخزين المؤقت للتعليمات من المستوى L1 تبلغ 16 كيلوبايت لكل قسم من أقسام SM.
  118. "asfermi Opcode" . GitHub .
  119. 1 2 للوصول باستخدام محرك النسيج فقط
  120. تم تعطيل 25% على بطاقات RTX 4060 و RTX 4070 و RTX 4070 Ti و RTX 4090
  121. تم تعطيل ↑ بنسبة 25% على RTX 5070 Ti و RTX 5090
  122. "دليل برمجة CUDA C++، إمكانيات الحوسبة" . docs.nvidia.com . تم الاطلاع عليه بتاريخ 2025-02-06 .
  123. "معلوماتية حيوية باستخدام nVidia CUDA: BarraCUDA" . BioCentric . 19-07-2019 . تم الاطلاع عليه بتاريخ 15-10-2019 .
  124. "الجزء الخامس: محاكاة الفيزياء" . مطورو NVIDIA . تم الاطلاع عليه بتاريخ 11 سبتمبر 2020 .
  125. "نموذج برمجة oneAPI" . oneAPI.io . تم ​​الاطلاع عليه بتاريخ 27-07-2024 .
  126. "المواصفات | oneAPI" . oneAPI.io . تم ​​الاطلاع عليه بتاريخ 27-07-2024 .
  127. "مواصفات oneAPI - وثائق مواصفات oneAPI 1.3-rev-1" . oneapi-spec.uxlfoundation.org . تم الاطلاع عليه بتاريخ 27-07-2024 .
  128. تشيرني، ماكس أ.؛ تشيرني، ماكس أ. (26 مارس 2024). "حصري: وراء مؤامرة كسر سيطرة إنفيديا على الذكاء الاصطناعي من خلال استهداف البرمجيات" . رويترز . تم الاسترجاع في 5 أبريل 2024 .
  129. "سؤال: ما هو اختصار ROCm؟ · العدد 1628 · RadeonOpenCompute/ROCm" . Github.com . تم الاطلاع عليه في 18 يناير 2022 .

للمزيد من القراءة