سؤال

أنا متخصص في إدارة الأعمال، وقطعت ثلثي الطريق في برنامج شهادتي، ولدي خبرة قليلة في لغة PHP، وقد التحقت بفصل تمهيدي واحد في لغة C++، وأنا الآن نادم على اختياري للعمل بدلاً من البرمجة/علوم الكمبيوتر.

أنا مهتم بتعلم المزيد من البرمجة المتقدمة؛على وجه التحديد لغة C، والتقدم في النهاية إلى استخدام بنية CUDA لتحليل بيانات الشبكة العصبية الاصطناعية (ليس من أجل الذكاء الاصطناعي أو الرؤية أو معالجة الكلام، ولكن للعثور على الارتباطات بين نقاط البيانات في مجموعات البيانات الكبيرة والبيانات العامة/التحليل الإحصائي).

هل هناك أي نصيحة حول كيف يجب أن أبدأ في تعلم لغة C؟وكذلك تقنية ANN/Bayesian لتحليل البيانات؟هناك الكثير من الكتب هناك، ولا أعرف ماذا أختار.

نظرًا لأن CUDA جديد إلى حد ما، فلا يبدو أن هناك الكثير من البرامج الملائمة للمتعلمين (على سبيل المثال.خافت) المواد لذلك.هل هناك موارد تعليمية لـ CUDA تتجاوز وثائق NVIDIA؟

علاوة على ذلك، ما هي الموارد التي تنصحني بها والتي تتحدث عن حوسبة GPGPU والبرمجة المتوازية على نطاق واسع والتي من شأنها أن تساعدني؟

هل كانت مفيدة؟

المحلول

لا أنصح بمحاولة تعلم CUDA أولاً لأنها تقنية جديدة وليس لديك خلفية كبيرة في البرمجة.

نظرًا لأنك لا تتمتع بخبرة كبيرة في لغة C (أو C++)، فسيكون من الصعب تعلم CUDA نظرًا لأنها تفتقر إلى النضج والمكتبات ورسائل الخطأ اللطيفة وما إلى ذلك.

CUDA مخصص للأشخاص الذين هم على دراية بلغة C (تساعد تجربة C++ أيضًا) ولديهم مشكلة تحتاج إلى تحسين الأداء من خلال إعادة الترميز أو إعادة التفكير في حل مشكلة معروفة.

إذا كنت تحاول حل مشكلات "ANN/Bayesian"، فإنني أوصي بإنشاء الحل الخاص بك بلغة C++ أو C، فهذا هو اختيارك.لا تهتم بإنشاء سلاسل رسائل أو تعدد مؤشرات الترابط.ثم، بعد تقييم أوقات الاستجابة للحل التسلسلي الخاص بك، حاول أن تجعله متوازيًا باستخدام OpenMP، Boost Threads، w/e.بعد ذلك، إذا كنت لا تزال بحاجة إلى المزيد من الأداء، فإنني أوصي بتعلم CUDA.

أعتقد أن هذه نقاط صحيحة لأن CUDA به بعض الأخطاء المبهمة جدًا، ويصعب تصحيحها، وبنية مختلفة تمامًا، وما إلى ذلك.

إذا كنت لا تزال مهتمًا، فهذه بعض الروابط لتعلم CUDA:

دروس مباشرة على الإنترنت:

المنتدى (أفضل مصدر للمعلومات):

أدوات:

المشاكل التي تم حلها في CUDA:

نصائح أخرى

لقد عبرت عن 3 أهداف مختلفة:

  • تعلم البرمجة بلغة C
  • تعلم كتابة التعليمات البرمجية لمنصة CUDA
  • تعلم استخدام شبكات بايز و/أو الشبكات العصبية لتحليل البيانات

أولاً:هذه الأشياء ليست سهلة بالنسبة للأشخاص الذين لديهم بالفعل عدة درجات علمية في هذا المجال.إذا قمت بواحد فقط، فتأكد من التعرف على الاستدلال البايزي.إنه إلى حد بعيد أقوى إطار عمل متاح للتفكير في البيانات، وتحتاج إلى معرفته.راجع كتاب ماكاي (المذكور في الأسفل).لقد حددت لنفسك بالتأكيد مهمة صعبة - أتمنى لك كل التوفيق!

أهدافك كلها عبارة عن غلايات مختلفة تمامًا من الأسماك.تعلم البرمجة بلغة C ليس بالأمر الصعب.أود لو كان ذلك ممكنًا أن أحصل على "مقدمة إلى الخوارزميات وهياكل البيانات" (عادةً الدورة الأولى لتخصصات علوم الكمبيوتر) في جامعتك (من المحتمل أن يتم تدريسها بلغة Java).سيكون هذا مفيدًا للغاية بالنسبة لك، وستكون البرمجة الأساسية في لغة C مجرد مسألة تعلم بناء الجملة.

يعد تعلم كتابة التعليمات البرمجية لمنصة CUDA أكثر صعوبة إلى حد كبير.كما هو موصى به أعلاه، يرجى مراجعة OpenMPI أولاً.بشكل عام، سيكون من المفيد لك قراءة شيء عن هندسة الكمبيوتر (باترسون وهينيسي رائعان)، بالإضافة إلى كتاب عن الخوارزميات المتوازية.إذا لم يسبق لك أن رأيت التزامن (أي.إذا لم تكن قد سمعت عن الإشارة المرورية)، فسيكون من المفيد البحث عنها (من المحتمل أن تغطيها ملاحظات المحاضرات من دورة أنظمة التشغيل - راجع MIT Open Courseware).أخيرًا، كما ذكرنا، هناك عدد قليل من المراجع الجيدة المتاحة لبرمجة وحدة معالجة الرسومات نظرًا لأنه مجال جديد.لذا فإن أفضل رهان لك هو قراءة نموذج التعليمات البرمجية المصدر لمعرفة كيفية القيام بذلك.

وأخيراً، الشبكات البايزية والشبكات العصبية.أولاً، يرجى العلم أن هذه مختلفة تمامًا.الشبكات الافتراضية هي طريقة رسومية (العقد والحواف) لتمثيل التوزيع الاحتمالي المشترك على عدد (كبير عادة) من المتغيرات.مصطلح "الشبكة العصبية" أكثر غموضًا إلى حد ما، ولكنه يشير عمومًا إلى استخدام عناصر معالجة بسيطة لتعلم وظيفة غير خطية لتصنيف نقاط البيانات.الكتاب الذي يقدم مقدمة رائعة لكل من شبكات بايز والشبكات العصبية هو ديفيد جي سي.نظرية معلومات ماكاي والاستدلال وخوارزميات التعلم.الكتاب متاح مجانا على الانترنت في http://www.inference.phy.cam.ac.uk/mackay/itila/.هذا الكتاب هو المفضل لدي حول هذا الموضوع.الشرح واضح للغاية، والتدريبات مضيئة (معظمها لها حلول).

إذا كنت تبحث عن مقدمة ودية موازية البرمجة، وبدلا من ذلك النظر المفتوحة MPI أو POSIX الخيوط على كتلة وحدة المعالجة المركزية. كل ما تحتاجه للبدء في هذا واحد معالج متعدد النوى.

والتوافق العام في الآراء هو أن تعدد البرمجة على هذه أبنية الجديدة (الجرافيك، الخلية، الخ) لديهم وسيلة للذهاب من حيث نضج نماذج البرمجة وفي المعهد. على العكس من ذلك، كانت فتح MPI وبثريدس حول لفترة طويلة، وهناك الكثير من الموارد في جميع أنحاء لتعلم منهم. مرة واحدة كنت قد حصلت مريحة مع هؤلاء، ثم النظر في محاولة الخروج من أحدث التقنيات.

وبينما هناك بالتأكيد برمجة واجهات للعديد من اللغات الأخرى، C وربما اللغة الأكثر شيوعا الحديثة (فورتران وباسكال لا تزال الركل حولها في هذا المجال) المستخدمة في الحوسبة عالية الأداء. C ++ هو أيضا شعبية إلى حد ما على الرغم من عدة حزم المعلوماتية الحيوية تستخدم هذا. في أي حال، C هو بالتأكيد مكان انطلاق جيدة، ويمكنك يرفعه إلى C ++ إذا كنت تريد المزيد من ميزات اللغة أو المكتبات (من المحتمل أن يكون على حساب الأداء على الرغم من).

إذا كنت ترغب في التنقيب عن البيانات، قد ترغب أيضا أن ننظر إلى نظام مفتوح المصدر يسمى البرتقال. ويتم تنفيذ ذلك في C ++ ولكن كما أنها تدعم البرمجة المستخدم النهائي في بيثون أو بلغة الارتباط والعقدة البصرية.

وأنا لا أعرف ما إذا كان يدعم كالة أنباء البحرية لكنني أعرف الناس استخدامه لتعلم تقنيات استخراج البيانات. وهو يدعم الاشياء مثل تجميع وتكوين الجمعيات القواعد.

و(أيضا، في حال كنت لا تعرف عن ذلك، قد ترغب في تعقب شخص ما في حياتك B-المدرسة من يفعل إدارة العمليات. إذا كنت ترغب في CS واستخراج البيانات، قد تجد الناس أمثالهم هناك. )

الرابط: gpgpu.org لديه بعض المناقشات مثيرة للاهتمام

وأحدث الإصدارات CUDA (3.1، 3.2) لديها مجموعة كاملة من وظائف مميزة دعا CuBLAS الذي سيقوم بمعالجة عمليات الحفارات متعددة مصفوفة لك على الاجهزة بطاقة واحدة. وموازاة backproagation تكون أكثر قليلا من التحدي، ولكن أنا أعمل على ذلك.

وكنت قادرا على العثور على بعض الدورات كبيرة الفيديو مجانا من جامعة ستانفورد في iTunesU

والبرمجة المنهجية (CS106A) برمجة التجريد (CS106B) نماذج البرمجة (CS107) آلة التعلم (CS229) برمجة المعالجات المتوازية مع CUDA

وكل واحد من هذه الدورات لديها حوالي 20 أو نحو ذلك المحاضرات لذلك هو الاستثمار لمشاهدة كل منهم ولكن جيدا يستحق ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top