راهنمای گام به گام نصب درایور و CUDA Toolkit‌ و cuDNN در لینوکس (اوبونتو ۱۶٫۰۴)

بسم الله الرحمن الرحیم

در این آموزش قصد داریم ببینیم چطور میتونیم کودا تولکیت ,‌درایور و cuDNN‌ رو در لینوکس (اوبونتو ۱۶٫۰۴ ) نصب کنیم.

در اولین گام نیاز به نصب درایور دارید. بهترین گزینه برای نصب درایور شما استفاده از بخش Additional drivers‌هست که میتونید با تایپ بخشی از نام اون در dash به اون دسترسی داشته باشید.

قبل از هرچیزی اطمینان حاصل کنید از تنظیمات بایوس مادربرد ویژگی SecureBoot‌رو غیرفعال کرده باشید. اگر اینکار رو نکرده باشید در حین انجام فرایند نصب درایور از طریق additional drivers صفحاتی بشما نمایش داده میشه و پسوردی از شما دریافت میشه که برای غیرفعال کردن این ویژگی هست. (یک پسورد وارد میکنید و در زمان بوت دوباره همون پسورد رو وارد میکنید تا اینطور مشخص بشه غیرفعال سازی Secureboot‌توسط یک برنامه مخرب صورت نگرفته) . دقت کنید که احتمال زیادی هست که این کار secureboot‌رو غیرفعال نکنه. همونطوری که برای من نکرد. جای نگرانی نیست. صرفا بعد از نصب درایور ریبوت کنید وارد تنظیمات بایوس بشید و Secureboot‌رو غیرفعال کنید. بعد از اون باید بتونید براحتی وارد سیستم عاملتون بشید.

شیوه دیگه نصب درایور در لینوکس با استفاد از پکیج cuda toolkit هست. ما به دو صورت میتونیم پکیج CUDA toolkit رو دریافت و نصبش کنیم . یکی از طریق runfile‌و دیگری از طریق deb file. شما باید سعی کنید همیشه تا جایی که براتون امکان داره از runfile استفاده کنید. چون عموما این فایلها بروز هستن و مهمتر از اون اینکه در فرایند نصب بصورت تعاملی کار میکنند و شما میتونید بخشهای مختلف رو نصب کنید یا نکنید. اما مشکلی در مورد پکیج .deb هست اینه که این پکیج تقریبا  اکثر اوقات بشدت outdated‌ و قدیمی هست (بخاطر مثلا استیبل بودن!) و یک نکته بد دیگه ای هم که داره اینه که شما هیچ کنترلی روی فرایند نصب ندارید. در پکیج های deb تمامی dependency‌ها بصورت خودکار نصب میشن. این ویژگی خوبیه. اما زمانی که دیپندنسی ها قدیمی باشن و یا شما نتونید کنترلی رو فرایند نصب داشته باشید بطور ویژه در حالت مورد نظر ما مشکل ایجاد میکنه. برای همین اگر شما قبلا درایوری رو نصب کرده باشید و الان صرفا قصد داشته باشید CUDA toolkit‌رو نصب بکنید با مشکل مواجه میشید . به همین دلیل همیشه سعی کنید از طریق اجرای run file‌ کودا تولکیت رو نصب کنید.

نکته سومی که باید بهش اشاره کنم اینه که اگر به هر دلیلی بدنبال نصب درایور از طریق پکیج CUDA Toolkit (ورژن runfile) اون هستید دقت کنید که قبلش باید یکسری گام رو بردارید و شخصا ندونستن این مساله درسرهای زیادی برای من بوجود آورد و زمان زیادی از من بابت رفع اشکال گرفت. در زیر من تمامی این موارد رو سعی میکنم قید کنم تا انشاءالله با پیروری از اونها مشکلی در این زمینه نداشته باشید.

شیوه نصب کودا تولکیت توسط runfile (بخش درایور هم پوشش داده میشه اینجا )‌:‌

دقت کنید لطفا ابتدا از اول تا انتها این آموزش رو مطالعه کنید یکبار. من دستورات گام بگام رو انتهای آموزش بصورت خلاصه و کوتاه آوردم که در ۹۹ درصد اوقات همون ها رو وارد کنید بدون مشکلی انشاءالله درایور و یا کودا تولکیت و cudnn رو میتونید نصب کنید. ولی ضروریه قبل از اجرای دستورات بدونید چه اتفاقی داره می افته و یا چه گزینه های دیگه ای دارید. من در انتهای آموزش یکسری از خطاهایی که خودم باهاش مواجه شدم رو هم لیست کردم پس خوب مطالعه کنید و بعد برای نصب اقدام کنید.

نکته اول :‌ برای نصب درایور معمولا راحت ترین کار نصب اون از طریق Additional drivers هست . دکمه windows روی کیبرد رو بزنید (ارم ویندوز) یا روی Dash کلیک کنید (همون آیکون سفید رنگ در گوشه سمت چپ ) در بخش سرچ تایپ کنید Additional drivers ) و اونجا مشخص هست که چکار کنید کافیه درایور انویدیا رو انتخاب کنید و بعد apply بزنید. اگر secureboot شما فعال باشه یک پسورد میخواد برای غیرفعال کردنش. بدید و درایور رو نصب کنید. اگر موقع بوت به مشکل خوردید و در صفحه لاگین گیر کردید (با زدن username, passowrd هی به صفحه لاگین بر میگردید! این به این معناست که Secureboot غیرفعال نشده . سیستم رو ری استارت کنید به تنظیمات بایوس مادربرد برید و Secureboot‌رو غیرفعال کنید. بعد باید براحتی بتونید لاگین کنید. اگر Secureboot‌غیرفعال بود ولی باز در صفحه لاگین به همین شکل گیر کردید یعنی درایور شما با کرنل فعلی همخوانی نداره (یا حداقل یک چیزی کمه ) معمولا این با نصب درایور از این طریق اتفاق نمی افته و بیشتر از طریق نصب دستی از طرق دیگه رخ میده که البته برای حل اون هم در ادامه توضیحات کافی داده شده.  بعد از اینکه درایور نصب شد دیگه نصب کودا تولکیت و سمپل هاش و cudnn نکته خاصی نداره و یک فرایند سر راست هست. (البته پیش نیازها باید نصب بشه که در ادامه اومده) .

اگر دلتون بخواد از درایور بروز استفاده کنید میتونید از درایوری که همراه کودا تولکیت هست استفاده کنید. همینطور میتونید از سایت انویدیا اخرین درایور رو دانلود و نصب کنید که اطلاعات مورد نیاز باز در ادامه هست.

تا جای ممکن سعی کنید درایور رو از طریق پکیج های deb نصب نکنید چون مشکلات مختلفی در ادامه میتونن براتون بوجود بیارن و ممکنه بعدا خیلی اذیت بشید.

در توضیحات زیر شیوه نصب کودا تولکیت cudnn و درایور همراه کودا تولکیت اورده شده .  چون قصد من پوشش نصب کودا تولکیت با درایور و بدون اون بود توضیحات مربوط به درایور (غیرفعال سازی درایور فعلی و… ) هم اورده شده.  پیشنهاد میکنم همه مطالب رو از ابتدا تا انتها مطالعه کنید. بعد خیلی راحت مواردی که مربوط به نصب درایور هست رو در نظر نگیرید و یکسره برید سراغ نصب کودا تولکیت . عزیزانی هم که میخوان بنا به هر دلیلی درایور رو از این طریق نصب کنن دقت کنن یکسری اطلاعات کلی هست مثلا برای بخش نصب (بعد از مقدمه) میبینید یکسری اطلاعات کلی داده شده و من دقیق نشدم . اما از اون طرف وقتی به بخش غیرفعال کردن nouveau (درایور نصب شده پیشفرض اوبونتو برای کارتهای انویدیا) میرسیم من قدم به قدم توضیح دادم چه کاری باید صورت بگیره . هر دوی این بخشها رو بخونید و با دستورات و خروجی ها آشنا بشید بعد از اینکه توضیحات رو مطالعه کردید و متوجه شدید هر دستور برای چه کاری هست در اخر من بصورت خلاصه و گام بگام شیوه غیرفعال سازی درایور پیشفرض و بعد نصب درایور جدید (چه درایور همراه کودا تولکیت چه درایور دانلود شده از سایت انویدیا (فرقی نمیکنه) رو توضیح دادم .

۱٫کارهای پیش از اقدام به نصب :‌

قبل از اینکه نسبت به نصب CUDA toolkit‌ و Driver‌ از طریق ان اقدام کنید نیازمند بررسی موارد زیر هستید :

    • بررسی کنید که سیستم شما دارای GPU با توانایی پشتیبانی از CUDA‌ باشد
    • بررسی کنید که سیستم شما در حال اجرای یک نسخه پشتیبانی شده از لینوکس باشد
    • بررسی کنید که gcc‌ در سیستم شما نصب شده باشد
  • بررسی کنید که سیستم شما حاوی سرآیندها و بسته های توسعه(development packages) کرنل صحیح باشد.

روشهای نصب متضاد را مدیریت کنید.

نکته :‌دقت کنید شما میتوانید بررسی پیش نیازها در زمان نصب را از طریق اجرای نصب کننده با فلگ override غیرفعال کنید. بیاد داشته باشید که پیش نیازها همچنان برای استفاده از تولکیت CUDA مورد نیازاند

۱٫۱ بررسی کنید که سیستم شما دارای یک GPU‌ با توانایی پشتیبانی از CUDA باشد :‌

به منظور بررسی و تایید اینکه GPU شما قادر به پشتیبانی از CUDA است میتوانید وارد بخش system properties توزیع خود شده و یا از طریق دستور زیر به این مهم پی ببرید :

اگر هیچ تنظیماتی در این رابطه مشاهده نکردید نسبت به بروزرسانی PCI hardware database که لینوکس آنرا مدیریت میکنید از طریق وارد کردن دستور update-pciids  (که بطور معمول در /sbin یافت میشود) در خط فرمان اقدام کنید و سپس دوباره دستور  lspci‌ را بصورت قبل اجرا نمایید.

علاوه بر روش فوق همچنین اگر کارت گرافیک شما NVIDIA‌ باشد میتوانید با بررسی لیست :‌  http://developer.nvidia.com/cuda-gpus مشاهده نمایید آیا کارت شما از قابلیت CUDA پشتیبانی میکند یا خیر.

همچنین نکات زمان انتشار (Release notes) هر CUDA Toolkit‌شامل لیستی از محصولات پشتیبانی شده میباشد.

۱٫۲ بررسی کنید که سیستم شما از نسخه پشتیبانی شده لینوکس استفاده میکند

ابزارهای توسعه CUDA تنها بر روی بعضی از توزیع های لینوکس پشتیبانی میشوند. این توزیع ها در نکات زمان انتشار CUDA Toolkit‌موجود هستند.

به منظور اطمینان از اینکه شما در حال اجرای کدام توزیع و شماره انتشاری هستید دستور زیر را در خط فرمان وارد کنید :‌

شما باید خروجی همانند آنچه در زیر آمده است را مشاهده کنید که بر حسب نوع سیستم عامل شما بخشهایی ممکن است متفاوت باشند:

خط x86_64  نشانگر آن است که شما در حال اجرای یک سیستم عامل ۶۴ بیتی هستید. مابقی اطلاعاتی در رابطه با توزیع شما اراپه میکنند.

۱٫۳ بررسی نمایید که Gcc‌ در سیستم شما نصب شده باشد

وجود کامپایلر gcc برای توسعه با استفاده از تولکیت CUDA ضررورییست. این کامپایلر برای اجرای برنامه های مبتنی بر CUDA مورد نیاز نیست. این کامپایلر معمولا بعنوان بخشی از فرایند نصب لینوکسُ نصب شده و در اکثر حالات نسخه Gcc‌نصب شده(بصورت پیش فرض) در یک نسخه پشتیبانی شده از لینوکس بدرستی کار خواهد کرد.( در اکثر اوقات CUDA toolkit با Gcc‌ که بصورت دیفالت در یک توزیع لینوکس که CUDA toolkit‌از ان پشتیبانی میکند بدرستی کار خواهد کرد)

به منور بررسی و تایید نسخه نصب شده Gcc بر روی سیستم خود دستور زیر را در خط فرمان وارد کنید :‌

اگر پیام خطایی بشما نمایش داده شدُ این بدین معناست که شما نیازمند نصب ابزارهای توسعه از طریق توزیع لینوکس خود و یا ابتیاع نسخه ای از Gcc‌و toolchain همراه آن از وب هستید.

۱٫۴ بررسی کنید که سیستم شما حاوی سرآیند ها  و بسته های توسعه کرنل صحیح باشد .

درایور CUDA نیازمند آن است که سرآیندها و بسته های توسعه برای نسخه کرنل جاری ُ‌در زمان نصب درایور همچنین بازسازی (rebuild) درایور نصب و حاضر باشند. بعنوان مثال اگر سیستم شما در حال اجرای کرنل نسخه 301 - 4.17.3  باشد. سرایند های کرنل و پکیج های توسعه نسخه 301 - 4.17.3  نیز بایستی نصب شده و حاضر باشند.

هرچند نصب از طریق runfile هیچ اعتبار سنجی پکیجی (مرتط به وجود یا عدم وجود یک پکیج) را انجام نمیدهدُ .نصب های مبتنی بر Deb‌و RPM درایور تلاش خواهند کرد تا سرایند کرنل و پکیج های توسعه را در صورتی که هیچ نسخه ای از این پکیج ها در حال حاضر نصب نباشد نصب کنند. نکته حایز اهمیت اما اینجاست چرا که آنها اخرین نسخه این پکیج ها را نصب خواهند کرد که ممکن است با نسخه کرنلی که سیستم شما در حال استفاده از آن است همخوانی نداشته باشد. بنابر این بهترین کار آن است که بصورت دستی از نصب و حاضر بودن نسخه صحیح سرایند های کرنل و بسته های توسعه (پکیج های توسعه) مرتبط اطمینان حاصل کنید قبل از انکه نسبت به نصب درایور های کودا اقدام کنید. همچنین هر زمانی که تغییری در نسخه کرنل خود میدهید بایستی این مهم را انجام دهید.

نسخه جاری کرنل که سیستم شما از آن استفاده میکند را میتوان از طریق اجرای دستور زیر بدست آورد :‌

این نسخه سرایند های کرنل و بسته های توسعه است که بایستی قبل از نصب درایورهای CUDA‌ نصب گردند.  این دستور چند مرتبه در ادامه جهت مشخص کردن نسخه پکیج های مورد نظر برای نصب ُ‌مورد استفاده قرار خواهد گرفت.  دقت کنید که آنچه در ادامه می آید سناریوهای متداولی برای استفاده از کرنل هستند. حالات پیشرفته بیشتر همانند نسخه های جانبی کرنلهای سفارشی شده بایستی اطمینان حاصل نمایند که سرایند های کرنل و منابع(سورس ها) با کرنل ساخته شده که از آن استفاده میکنند همخوانی داشته باشد.

توجه :‌ اگر شما بروزرسانی سیستم داشته باشید ُ این مساله باعث ایجاد تغییرات در نسخه کرنل مورد استفاده در لینوکس شما میشود. اطمینان حاصل کنید که دستورات زیر را دوباره اجرا کنید تا مطمپن شوید که نسخه صحیح سرایندهای کرنل و بسته ها یتوسعه را نصب کرده باشید.در غیر اینصورت نصب درایور CUDA با شکست مواجه خواهد شد و با کرنل جدید کار نخواهد کرد.

Ubuntu

سرایندهای کرنل و بسته های توسعه برای کرنل در حال اجرای فعلی را میتواند از طریق دستور زیر نصب نمود :‌

پیش نیازهای زیر را دانلود و نصب کنید اگر در سیستم موجود نیست :‌

نصب از طریق Runfile :

این بخش به شرح چگونگی نصب و پیکربندی CUDA در زمان استفاده از نصاب (standalone installer)میپردازد. نصاب فایلی با پسوند “.run” است که تماما خودوابسته است به این معنا که شامل تمامی پیش نیازهای مورد نیاز میباشد و هیچ وابستگی خارجی ندارد.

مقدمه

نصاب مبتنی برrunfile, درایور NVIDIA‌, کودا تولکیت و نمونه مثال های کودا را از طریق یک رابط متنی تعاملی نصب میکند. در ادامه توضیحات

نصب

کارهای پیش از نصب را بصورت زیر انجام دهید :‌

درایورهای Nouveau را غیرفعال کنید

وارد حالت متنی شوید (runlevel 3)

میتوانید این کار را با اضافه کردن عدد ۳ به انتهای پارامترهای بوت کرنل یک سیستم انجام دهید یا از طریق Ctrl+Alt+F1 الی F6 وارد یک محیط متنی شوید.

از آنجایی که درایورهای NVIDIA هنوز نصب نشده اند ترمینالهای متنی ممکن است متنون را بخوبی نمایش ندهند. شما میتوانید با اضافه کردن “nomodeset” به پارامترهای بوت کرنل سیستم بصورت موقت این مشکل را برطرف کنید.

برای کسب اطلاعات در مورد چگونگی اعمال تغییرات در پارامترهای بوت به مستندات بوت لودر سیستم خود مراجعه کنید ( در ادامه من روش ساده تر دیگه ای رو هم عنوان میکنم. فعلا فقط مطالعه کنید!)

یک ریبوت برای آنکه درایورهای Nouveau کاملا خارج شده و همینطور مانع بارگذاری رابط گرافیکی شود مورد نیاز است. درایور کودا نمیتواند در حالی که درایورهای Nouveau فعال هستند و یا رابط گرافیکی کاربر هنوز فعال است نصب شود.

بررسی و اطمینان حاصل کنید که درایورهای Nouveau لود نشده باشند. اگر درایور های Nouveau هنوز فعال و حاضر باشند با مراجعه به مستندات توزیع لینوکس خود ببینید چگونه میتوانید آنرا غیرفعال نمایید.(توضیحات در ادامه آمده است )

قبل از اینکه نصاب را اجرا کنید ابتدا دستور زیر را اجرا کنید. دستور زیر بجای <version>  نسخه فایل خود را وارد کنید.(بعنوان مثال نام فایل دانلودی ما cuda_9.1.85_387.26_linux.run است.)

یا با استفاده از GUI بر روی فایل راست کلیک نموده properties را انتخاب کرده و سپس از تب permission بر روی گزینه Allow executing file as program کلیک نمایید.

نصاب را اجرا کرده و از دستورات نمایش داده شده بر روی صفحه پیروی کنید :‌

نصاب پیام هایی برای موارد زیر نمایش خواهد داد:

    • پذیرش موافقتنامه
    • نصب درایور کودا
    • نصب تولکیت کودا ,مکان آن و لینک سمبولیک /usr/local/cuda
  • نصب مثالهای کودا و مکان آن

مکان های نصب پیشفرض برای تولکیت و مثالها بصورت زیر هستند:

Component Default Installation Directory
CUDA Toolkit /usr/local/cuda-9.1
CUDA Samples $(HOME)/NVIDIA_CUDA-9.1_Samples

لینک سمبولیک usr/local/cuda/ به مکانی که کودا تولکیت در آن نصب شده است اشاره میکند. عموما این لینک به پروژه و برنامه های نصب شده اجازه میدهد تا از آخرین نسخه تولکیت کودا بدون نیاز به بروز رسانی در فایل پیکربندی خود استفاده کنند.

 این نصاب باید توسط مجوزهای کافی (sufficient privileges) اجرا شده تا بتواند بعضی از عملیات ها را انجام دهد. زمانی که مجوز های فعلی برای اجرای کاری ناکافی باشند, اینستالر از کاربر درخواست رمزعبور جهت تلاش برای بدست آوردن مجوز روت راخواهد کرد.عملیات هایی که باعث میشوند نصاب برای نصب نیازمند به دسترسی روت باشد از قرار زیر اند :‌

    1. نصب درایور CUDA
    1. نصب تولکیت کودا در مسیری که کاربر حق نوشتن (رایت پرمیشن ) ندارد.
    1. نصب نمونه مثال های CUDA در مسیری که کاربر حق نوشتن ندارد.
  1. ایجاد لینک سمبولیک  /usr/local/cuda

اجرای نصاب با استفاده از sudo همانطور که در بالا نشان داده شده است, باعث کسب حق دسترسی موردنیاز برای نصب در دایرکتوری هایی که نیازمند دسترسی روت هستند میشود. دایرکتوری ها و فایلهای ایجاد شده درحین اجرای نصاب با sudo دارای عضویت روت خواهند شد.

اگر صورت نصب درایور , نصاب همچنین خواهد پرسید آیا کتابخانه های OpenGL نصب گردند یا خیر. اگر GPU مورد استفاده برای صفحه نمایش از نوع NVIDIA‌نباشد کتابخانه های openGL انویدیا نبایستی نصب شوند. در غیراینصورت کتابخانه های OpenGL مورد استفاده توسط درایور کارت غیر NVIDIA حذف شده و GPU بدرستی کار نخواهد کرد. اگر در حال انجام نصب ساکت (silent installation) هستید گزینه no-opengl-libs--  میبایست جهت جلوگیری از نصب شدن کتابخانه های opengl‌مورد استفاده قرار گیرد. برای مشاهده جزییات بیشتر به بخش گزینه های پیشرفته نگاه کنید.

اگر GPU‌استفاده شده برای صفحه نمایش یک GPU انویدیا باشد فایل تنظیمات x server‌ یعنی etc/X11/xorg.conf/ , ممکن است نیاز به تغییرات داشته باشد. در بعضی از حالت , nvidia-xconfig  را میتوان جهت تولید خودکار یک فایل xorg.conf  که در سیستم کار کند مورد استفاده قرار داد. برای سیستم های غیر استاندارد همانند آن مواردی که بیش از یک GPU دارند پیشنهاد میشود که بطور دستی نسبت به ویرایش فایل xorg.conf  اقدام کنند. لطفا برای اطلاعات بیشتر در این زمینه به مستندات xorg.conf‌مراجعه کنید.

توجه :‌نصب Mesa ممکن است باعث حذف usr/lib/libGL.so/  که قبلا با نصب درایور NVIDIA نصب شده شود. بنابر این نصب دوباره درایور انویدیا ممکن است بعد از نصب این کتابخانه ها مورد نیاز باشد .

بعد از نصب درایور با دستور  sudo service lightdm start  سرویس display manager lightdm‌را دوباره فعال نمایید.

سیستم را reboot کرده تا رابط گرافیکی لود شود.

اطمینان حاصل کنید که device node ها بدرستی ایجاده شده باشند.

نسبت به انجام عملیات های بعد از نصب اقدام کنید.

غیرفعال سازی Nouveau

برای نصب درایور صفحه نمایش (Display Driver) درایورهای Nouveau باید ابتدا غیرفعال شوند. هر توزیع لینوکس روش متفاوتی برای غیرفعال سازی این مساله دارد.

درصورتی که درایورهای Nouveau بارگذاری شده و فعال باشند دستورات زیر اطلاعاتی را بشما نمایش خواهند داد :‌

بعنوان مثال اجرای این دستور در سیستم عامل اوبونتو ۱۶٫۰۴٫۴ ما نتیجه زیر را در بر داشت :‌

اگر این درایور بارگذاری نشده باشد هیچ چیزی در صفحه مشاهده نخواهید کرد.

Ubuntu

با فشردن کلید های Ctrl + Alt + F2  وارد حالت متنی شوید. سپس با دستور sudo service lightdm stop  سرویس مرتبط با display manager lightdm را غیرفعال کنید.

اکنون باید درایور nouveau را غیرفعال کنیم . اگر از دستور sudo rmmod nouveauدرایور nouveau را غیرفعال و unload میکنیم. اگر خطایی دریافت کردید نیاز به نگرانی نیست چرا که در گام بعدی این درایور را غیرفعال میکنیم(در اصل مانع بارگزاری اون در زمان بوت میشویم).

یک فایل در مسیر etc/modprobe.d/blacklist-nouveau.conf/  با محتویات زیر ایجاد کنید (دقت کنید نام انتخابی است. هر فایلی در اون بخش قرار بگیره موقع بوت لود میشه و چون ما نمیخوایم درایور nouveau بعد از ریبوت دوباره لود بشه در زمان بوت اون رو بلک لیست میکنیم. دقت کنید هر زمانی بعدا اگر نیاز شد دوباره این درایور nouveau رو لود کنید قبلش باید این فایلی که ساختیم رو پاک کنید.بعد سیستم رو ریبوت کنید) :‌

initramfs کرنل را دوباره تولید کنید:

سیستم را ریبوت کنید تا درایور از لود خارج شود و بعد ادامه دستورات را وارد کنید :‌

بعد از لود دوباره سیستم عامل و  ورود به محیط متنی (Ctrl +Alt+F1 الی F6 )  دستور lsmod | grep nouveau  را اجرا کنید تا اطمینان حاصل کنید دایور nouveau بارگزاری نشده باشد (چیزی در خروجی نبایدببینید).
حال قبل از نصب درایور باید display manager‌را غیرفعال و بعد اقدام به نصب درایور کنید.

نکته مهم :‌بعد از نصب درایور با دستور  sudo service lightdm start  سرویس display manager lightdm‌را دوباره فعال نمایید.

بررسی و تایید Device Node‌:‌

بررسی کنید که device files‌ در مسیر  *dev/nvidia/  وجود داشته باشند و دارای file permission صحیح (۰۶۶۶) باشند. این فایلها توسط درایور کودا برای ارتباط با بخش kernel-mode درایور انویدیا مورد استفاده قرار میگیرند. برنامه هایی که از درایور انویدیا استفاده میکنند همانند  برنامه مبتنی بر کودا و یا x server (اگر چیزی وجود داشته باشد) در حالت عادی اگر این فایلها وجود نداشته باشند بصورت خودکار این فایلها را با استفاده از برنامه setuidnvidia-modprobe  که در درایور انویدیا موجود است ایجاد خواهند کرد. اما بعضی از سیستم ها به فایلهای اجرایی setuid اجازه اجرا نمیدهند بنابر این اگر این فایلها وجود نداشتند شما باید خود بصورت دستی با استفاده از یک اسکریپت startup همانند آنچه در ادامه می آید نسبت به ساخت آنها اقدام کنید :‌

 گزینه های پیشرفته

عملیات گزینه استفاده شده توضیحات
نصب بی صدا –silent برای هر نصب بی صدایی لازم است. یک فرایند نصب بدون هیچ ورودی از کاربر و با خروجی خط فرمان حداقلی مبتنی بر گزینه هایی که در ادامه ارایه شده است را انجام میدهد. نصبهای بی صدا برای اسکریپت نویسی نصب کودا مفید هستند. استفاده از این گزینه به معنای قبول قراردادنامه است. فلگ های زیرین برای سفارشی سازی عملیات های صورت گرفته در حین نصب مورد استفاده قرار میگیرند. اگر با دسترسی غیر روت رد حال اجرا است حداقل یکی از سویچ های –driver, –uninstall, –toolkit, و –samples باید ارسال شوند
–driver درایور را نصب میکند.
–toolkit تولکیت را نصب میکند.
–toolkitpath=<path> تولکیت را در  دایرکتوری <path> نصب میکند. اگر مشخص نشود, مسیر پیشفرض /usr/local/cuda-9.1 استفاده میشود.
–samples مثالهای کودا را نصب میکند.
–samplespath=<path> نمونه مثالهای کودا را در دایرکتوری <path> نصب میکند. اگر مشخص نشود مسیر پیشفرض  $(HOME)/NVIDIA_CUDA-9.1_Samples  استفاده میشود.
–uninstall (DEPRECATED) درایور را حذف میکند.
استخراج –extract=<path>

فایلهای نصب مرتبط با درایور, تولکیت و نمونه مثالها را بصورت جداگانه در مسیر <path> استخراج میکند. این امر بطور ویژه زمانی مفید است که فرد بخواهد درایور را از طریق یک یا چند گزینه خط فرمان که توسط نصاب درایور ارایه شده ولی در این نصاب  گنجانده  نشده است, نصب کند.

–override  بررسی های مرتبط با کامپایلر, کتابخانه های ثالث و شناسایی تولکیت که ممکن است مانع نصب کودا تولکیت و نمونه مثالهای کودا شوندندید گرفته میشود .
عدم نصب کتابخانه های OpenGL –no-opengl-libs

از نصب کتابخانه های NVIDIA GL توسط درایور خود داری میکند. این موضوع برای سیستم هایی که در آنها صفحه نمایش توسط یک GPU غیر انویدیا مدیریت میشود مفید است. در چنین سیستم هایی کتابخانه های GL انویدیا ممکن است مانع بارگذاری صحیح X شوند.

عدم نصب صفحات راهنما (man) –no-man-page صفحات راهنما(man page) را در مسیر /usr/share/man نصب نکن.
Overriding Kernel Source –kernel-source-path=<path>

به نصاب درایور اعلام میکند تا در زمان ساخت ماجول کرنل انویدیا از مسیر<path> بعنوان دایرکتوری سورس کرنل استفاده کنید این مساله برای سیست هایی ک سورس کرنل در مکان غیر استانداردی نصب شده است مورد نیاز است.

اجرای nvidia-xconfig –run-nvidia-xconfig به درایور اعلام میکند تا nvidia-xconfig را جهت بروزرسانی تنظیمات X اجرا کند تا درایور NVIDIA X مورد استفاده قرار گیرد. فایل تنظظیمات X قبلی بک آپ گرفته میشود.
عدم نصب ماجول کرنل nvidia-drm –no-drm ماجول کرنلnvidia-drm را نصب نکن.این گزینه تنها بایستی برای دور زدن مشکل ساخت  ویا نصب ماجول کرنلnvidia-drm بر روی سیستم هایی که نیازی به این ویژگی ها ندارن استفاده شود.
انتخاب دایرکتوری موقت سفارشی –tmpdir=<path> هر عملیات موقتی را در داخل<path> بجای/tmp انجام میدهد. در مواردی که نمیتوان از تمپ استفاده کرد (مثل زمانی که وجود نداشته یا پر بوده و یا با noexec مونت شده باشد و…) مفید واقع میشود.
نمایش خروجی طولانی –verbose تمامی اطلاعات را علاوه بر فایل لاگ بر روی صفحه(stdout) نیز نمایش میدهد .
نمایش گزینه های نصاب –help لیستی از گزینه های خط فرمان را نمایش میدهد .

حذف :‌

برای حذف تولکیت کودا اسکریپت حذف فراهم شده در پوشه bin تولکیت را اجرا کنید. بطور پیشفرض این اسکریپت در مسیر /usr/local/cuda-9.1/bin قرار دارد (دقت کنید چون در زمان نوشتن این آموزش کودا ۹.۱ اخرین ورژن کوداس ما از این اسم استفاده کردیم اون نام رو با ورژن کودای خودتون جایگزین کنید (هرچند بخاطر باگ و توضیحاتی که در ادامه دادم پیشنهاد نمیکنم این ورژن رو نصب کنید و بجاش از ورژن ۹ یا ورژن جدیدتر هر زمان اومد استفاده کنید.) :‌

برای حذف درایور انویدیا nvidia-uninstall را اجرا کنید :‌

برای فعال سازی درایورهای Nouveau فایل blacklist ایجاد شده در بخش “غیرفعال سازی Nouveau”  را حذف کرده و initramfs/initrd   کرنل را دوباره همانند آنچه در آن بخش آمده تولید کنید.

نکته :‌

هر زمان با مشکلی بعد از نصب درایور مواجه شدید و نتوانستید لاگین کنید میتوانید با دستور sudo nvidia-uninstall  درایور اخیر را حذف و بعد لاگین نمایید.(وارد محیط متنی شوید با زدن کلید های Ctrl+Alt+F1 الی F6 و بعد از لاگین کردن با نام و پسورد خود ابتدا lightdm را غیرفعال و بعد درایور را حذف کنید. نکات مطرحی بالا را بیاد داشته باشید. بعنوان مثال تا وقتی که فایل blacklist-nouveau موجود باشد این درایور غیرفعال باقی میماند پس به هر دلیلی هر گاه نیاز به فعال سازی این درایور داشتید فایل مورد نظر را حذف کنید. با حذف درایور میتونید لاگین کنید و بعد کارهای بعدی اگر نیاز باشه رو انجام بدید)

نکته ۲‌:‌

اگر مشاهده کردید بعد از انجام تمامی کارها  و مشاهده پیام نصب موفقیت آمیز درایور قادر به لاگین نیستید در اولین گام سعی کنید نگاهی به لاگ نصب درایور بیاندازید. این کار بشما کمک میکند تا مشکل اصلی را بیابید. (مسیر لاگ درایور بعد از پروسه نصب بشما نمایش داده میشود. همینطور در پوشه tmp قرار میگیرد. برای دیدن کافیست در محیط متنی تایپ کنید nano masire_log یا vi masire_log که البته شخصا nano را ترجیح میدهم. (دقت کنید در زمان کار با این ادیتور کلید های ترکیبی شامل Ctrl هستند. یعنی ^X یعنی Ctrl+X )

دو مشکل عمده که باعث این مساله میشوند به ترتیب ۱. فعال بودن secureboot و ۲. همخوانی نداشتن نسخه درایور با کرنل فعلی است. برای حل گزینه اول کافیست از تنظیمات بایوس مادربرد secureboot غیرفعال شود و بعد براحتی باید بتوانید لاگین کنید.

برای حل مشکل دوم (بعد از چک لاگ نصب درایور و اطمینان حاصل کردن از اینکه این مشکل بخاطر عدم همخوانی با نسخه کرنل است (مثلا مشکل dkms در بیلد ماجول مرتبط با درایور) ) یا از این آدرس (با VPN باز کنید) جدیدترین درایور را دانلود و نصب کنید و یا اگر نسخه جدیدی وجود نداشته یا آن نسخه هم دارای مشکل است از نسخه قدیمی تر که عموما از طریق additional drivers هم قابل دسترسی است استفاده کنید.

بعنوان مثال درایور ۳۸۷٫۲۶ (حاضر در فایل cuda_9.1.85_387.26_linux.run  ) با کرنل ۴٫۱۳ (شامل 38-4.13.0  )  همخوانی نداشته و بعد از نصب,  درایور بارگزاری و فعال نمیگردید چرا که در مرحله ساخت ماجول توسط DKMS با خطای زیر مواجه میشد :

جستجو های بعدی به این تاپیک ختم گردید که نشانگر عدم همخوانی این نسخه از درایور با کرنل ما داشت (۲۳ فروردین ۹۷ ) و به این ترتیب با نصب نسخه جدید درایور ۳۹۰٫۴۸   مشکل مرتفع گردید.

لازم به ذکر است مشکلات کودا ۹.۱ تنها محدود به به عدم سازگاری با نسخه فعلی کرنل (در زمان نگارش این مقاله ۲۳ فروردین ۹۷ ) نیست . این نسخه از کودا هم دارای باگی است که انتظار میرود تنها در نسخه بعدی  رفع شود به همین علت تا نسخه کودا ۹.۲ از نسخه کودا ۹ استفاده کنید نه کودا ۹.۱ !

نکته ۳ :‌

اگر در زمان نصب درایور با پیام The distribution-provided pre-install script failed! Are you sure you want to continue? مواجه شدید خیلی راحت روی continue کلیک کنید :

به همین صورت اگر در صفحه بعد با پیام  Would you like to register the kernel module sources with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later. مواجه شدید اینجا هم روی  بله کلیک کنید.

دوباره به همین صورت برای نصب کتابخونه ۳۲ بیتی هم اگر از شما سوال شد روی بله کلیک کنید.

در انتها نیز :‌

و تمام!

خلاصه مراحل نصب Driver :‌

اطمینان حاصل کنید که کارت شما از برند NVIDIA است :‌

برای دانستن توزیع لینوکس و نسخه آن دستور زیر را بکار ببرید :‌

برای دانستن نسخه کرنل دستور زیر را بکار ببرید

میتوانید دو دستور قبل در یک خط وارد کنید :‌

اطمینان حاصل کنید که سرآیندهای صحیح کرنل را در اختیار دارید با این دستور سرایندهای مختص کرنل فعلی خود را در صورت موجود نبود دانلود و نصب میکنیم:‌

پیش نیازهای زیر را دانلود و نصب کنید اگر در سیستم موجود نیست :‌

بخش دوم :‌

با زدن کلید های Ctrl+Alt+F1  (الی F6 هر کدام را دوست دارید بزنید) وارد محیط متنی میشویم :‌

بررسی کنید آیا درایور nouveau فعال است یا خیر (اگر خروجی داشت یعنی فعال است):‌

برای غیرفعال سازی آن ابتدا display manager را متوقف میکنیم :‌

سپس برای اینکه درایور در بوت بعدی بارگزاری نشود یک فایل (با هر اسم دلخواهی) در پوشه etc/modprobe.d/  با محتویات زیر ایجاد میکنیم ما از اسم blacklist-nouvea.conf  استفاده میکنیم :‌

سپس در صفحه باز شده تایپ میکنیم :‌

با استفاده از ترکیب Ctrl+O فایل را ذخیره میکنیم و با کلید Ctrl+X خارج میشویم

حالا ماجول initramfs را دوباره بیلد میکنیم :‌

حالا با دستور reboot‌ سیستم را ری استارت میکنیم .

بخش سوم :‌

در صفحه لاگین با زدن کلید های Ctrl+Alt+F1  (الی F6 هر کدام را دوست دارید بزنید) وارد محیط متنی میشویم :‌

بررسی میکنیم که درایور nouveau فعال و بارگزاری نشده باشد(نباید هیچ خروجی ای دریافت کنید) :‌

حال دوباره display manager‌ را متوقف کرده تا بعد از ان به نصب درایور جدید اقدام کنیم . ابتدا :‌

به مسیری که فایل درایور جدید ما وجود دارد میرویم . از دستور cd استفاده میکنیم و اگر نیاز بود از دستور ls برای نمایش فایلهای موجود در یک پوشه استفاده میکنیم . مثلا فایل ما در پوشه Downloads‌است :‌

با دستور ls محتویات فولدر را میبینیم و بعد فایل مورد نظر را انتخاب میکنیم :‌

فرض میکنیم نام فایل مورد نظر ما (cuda_9.1.85_387.26_linux.run) است ابتدا permission اجرای آنرا تنظیم میکنیم . برای اینکار تایپ میکنیم :‌

بعد از این مرحله نسبت به نصب اقدام میکنیم :‌

بعد از نصب موفقیت آمیز با display manager را دوباره به راه می اندازیم :‌

برای مشاهده اینکه همه چیز بدرستی نصب شده و قابل استفاده است تایپ کنید nvidia-smi . با این دستور مشخصات کارت گرافیک شما به همراه اطلاعاتی در باره دما اندازه حافظه و… بشما نمایش داده میشود . همچنین میتوانید از دستوراتی که در قبل جهت تست فعال بودن درایور استفاده کردید اینجا نیز استفاده کنید . بعنوان مثال در تصویر زیر مشاهده میکنید که من ابتدا با دستور lsmod | grep nouveau بررسی کردم آیا درایور nouveau فعال است یا خیر که خروجی ای دریافت نشد (به معنای غیرفعال بودن آن است) به همین شکل زمانی که این دستور برای nvidia‌مورد استفاده قرار گرفت مشخص شد که درایور فعال بوده و آماده استفاده است. علاوه بر این دستور نتیجه اجرای nvidia-smi‌ را نیز مشاهده میکنید.  :‌

حالا بایستی به صفحه لاگین منتقل شده باشید.(اگرنشدید میتوانید با Ctrl+Alt+F به محیط گرافیکی برگردید) سعی کنید وارد شوید. اگر همه چیز بدرستی انجام شده باشد باید براحتی لاگین شوید. اگر لاگین موفقیت آمیز نبود و دوباره به صفحه لاگین بازگشتید به توضیحاتی که در ادامه آمده مراجعه کنید.

نصب کودا تولکیت :‌

اگر مراحل نصب درایور را انجام دادید نیازی به انجام این گام ها نیست اما اگر ندادید این مراحل را انجام دهید :‌

به مسیری که فایل Cuda toolkit  ما وجود دارد میرویم . از دستور cd استفاده میکنیم و اگر نیاز بود از دستور ls برای نمایش فایلهای موجود در یک پوشه استفاده میکنیم . مثلا فایل ما در پوشه Downloads‌ است :‌

با دستور ls محتویات فولدر را میبینیم و بعد فایل مورد نظر را انتخاب میکنیم :‌

فرض میکنیم نام فایل مورد نظر ما (cuda_9.1.85_387.26_linux.run) است ابتدا permission اجرای آنرا تنظیم میکنیم . برای اینکار تایپ میکنیم :‌

بعد از این مرحله نسبت به نصب اقدام میکنیم :‌

شروع فرآیند نصب کودا تولکیت :‌

در ابتدا با موافقت نامه مواجه میشویم با زدن و نگه داشتن space میتوانید متن موافقت نامه را رد کرده و به بخش قبول یا رد آن برسید.

در گام بعد از ما سوال میشود آیا قصدداریم درایور Linux-x86_64 384.81 را نصب کنیم ؟‌ که چون قبلا درایور را نصب کردیم(خواه از طریق additional drivers خواه از طریق cuda toolkit ) اینجا  no  را تایپ و بعد انتر میکنیم.

سوال بعدی در باره نصب کودا تولکیت است. yes را تایپ و انتر میکنیم .

در ادامه از ما مسیری برای نصب کودا تولکیت خواسته میشود. ما با زدن انتر مسیر پیشفرض را قبول میکنیم.

سوال بعدی از ما میپرسد آیا دوست داریم یک symbolic link در مسیر /usr/local/cuda ایجاد کنیم ؟‌ جواب yes را تایپ میکنیم (همانطور که پیشتر با هم دیدیم برنامه های گونانگون براحتی میتوانند با چک این مسیر همیشه به اخرین نسخه کودا تولکیت اشاره کرده و از آن بهره مند شوند بدون آنکه نیازی به اعمال تغییرات در تنظیمات آنها باشد و بصورت پیشفرض هم معمولا همین مسیر را چک میکنند)

سوال بعدی از ما میپرسد آیا علاقه ای به نصب نمونه مثالها داریم ؟‌ (اگر کمبود فضا ندارید yes را انتخاب کنید در غیر اینصورت میتوانید no بزنید)

اگر در مرحله قبل yes را انتخاب کرده باشید در اینجا مسیری برای نصب نمونه مثالها میتوان وارد کرد. برای انتخاب مسیر پیشفرش انتر میکنیم (اگر علاقه ای به مسیر پیشفرض ندارید یا با کمبود فضا مواجه هستید میتوانید براحتی مسیر را تغییردهید)

و در اینجا عملیات نصب شروع میشود و بعد از مدتی اگر همه چیز بخوبی پیش رفته باشد با پیام پایان نصب مواجه میشوید.

در زیر خلاصه ای از انتخاب های حین نصب وارد شده است :‌

و در زیر نیز پیام نصب موفقیت آمیز کودا را مشاهده میکنید :‌

بعد از نصب کودا تولکیت :‌

وارد پوشه home‌شوید.  Ctrl+h را بفشارید . فایل bashrc. را باز کنید. و محتویات زیر را به انتهای فایل اضافه کنید . در اینجا میتوانیم بجای cuda-9.1 یا cuda-9.0 (هر کدام را که نصب کردید) از cuda استفاده کنیم چرا که آن نیز به کودا ۹.۱ اشاره میکند:

برای  سیستم های ۶۴ بیتی

برای  سیستم های ۳۲ بیتی

همینطور میتوانستید از طریق ترمینال این کار را انجام دهید :‌

دستور nvcc --version  را در ترمینال بزنید.(برای مشاهده نسخه نصب شده) این فایل در پوشه usr/local/cuda-9.1/bin‌/  وجود دارد و بصورت مستقیم نیز میتوانید اجرا کنید. ما با قرار دادن آن در PATH سیستم این اجازه را میدهیم که توسط برنامه های مختلف براحتی قابل فراخوانی و استفاده باشند.

در ادامه در داخل ترمینال وارد پوشه cuda samples شوید  و تایپ کنید make  و انتر کنید. بعد از اتمام بیلد وارد پوشه bin شده و deviceQuery  را اجرا کنید. با اینکار تمامی مثال ها کامپایل میشوند.  (اگر علاقه ای به این کار ندارید میتوانید وارد پوشه ۱Utilities و بعد deviceQuery شده و دستور make را انجا وارد کنید.)

اگر همه چیز درست باشد خروجی همانند زیر بشما نمایش داده میشود :‌

و در گام آخر هم :‌

نصب cuDNN : 

برای نصب Cudnn هم بصورت زیر عمل کنید ابتدا وارد پوشه ای شوید که cudnn را دانلود کرده اید و سپس دستور زیر را بزنید.(مثلا در پوشه دانلود قرار دارد با cd Downloads وارد آن پوشه شده و بعد دستورات زیر ر اجرا میکنیم و مثلا نام فایل ما هم cudnn-9.1-linux-x64-v7.tgz میباشد. ) :‌

پرسش های متداول :‌

بعد از کپی کردن cuDNN هر بار که دستور sudo ldconfig را میزنم با خطای /sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.7 is not a symbolic link  مواجه میشوم چکار کنم ؟‌

ابتدا مثل دستور زیر وارد مسیر  /usr/local/cuda/lib64/  شوید :

سپس وارد کنید :‌

شما باید دو symlink (به رنگ سبز توپر (bold)) و یک فایل تنها در خروجی خود مشاهده کنید خروجی ای همانند زیر :‌

نسخه cudnn من ممکن است با شما متفاوت باشد من اینجا از cudnn7.0.5  استفاده  میکنم . شما باید هر نسخه ای که استفاده کرده اید اینجا ببینید)

اگر libcudnn.so  و libcudnn.so.7  از نوع symlink‌نباشند این یکی از دلایل مواجه شما با این خطاست. دلیل دیگر خراب بودن symlink است. به منظور برطرف کردن این مشکل دستورات زیر را وارد کنید :‌

چطور میتوانم Cuda Toolkit را در مسیر متفاوتی نصب کنم؟‌

در زمان نصب با استفاده از runfile شما میتوانید مسیر نصب را بصورت دلخواه انتخاب کنید. اگر قصد دارید فرایند نصب بدون سوال و جواب و بصورت ساکت انجام شود میتوانید از سویچ های –toolkitpath و –samplespath برای تغییر مسیر نصب کودا تولکیت و مثالها استفاده کنید.

دقت کنید که بسته های RPM و Deb این قابلیت را به همراه ندارند و نمیتوانید مسیرهای پیشفرض را تغییردهید. برای کسب اطلاعات بیشتر میتوانید به سایت رسمی انویدیا مراجعه کنید. کلیک کنید

چرا با خطای “nvcc: No such file or directory” مواجه میشوم ؟‌

متغییر PATH شما بدرستی پیکربندی نشده است شما باید اطمینان حاصل کنید که متغیر PATH شما شامل پوشه bin از پوشه کودا تولکیت (جایی که کودا تولکیت را در آن نصب کردید) شما باشد. معمولا مسیر usr/local/cuda-9.1/bin/  مسیر مورد نظر است (با نسخه کودا خود تطبیق دهید. در بالا در این زمینه توضیح بیشتر داده ام )

برای اضافه کردن مسیر مورد نظر میتوانید ازدستور زیر استفاده کنید. (دقت کنید بعد از تغییر در متغییر محیطی PATH یا از یک ترمینال جدید استفاده کنید یا در ترمینال فعلی قبل از زدن دستور جدید دستور source ~/.bashrc را اجرا کنید تا اخرین تغییرات بارگذاری شوند.)

چرا با خطای “error while loading shared libraries: <lib name>: cannot open shared object file: No such file or directory” مواجه میشوم ؟‌

متغیر محیطی LD_LIBRRARY_PATH شما بدرستی پیکربندی نشده است. اطمینان حاصل کنید که LD_LIBRARY_PATH شما شامل پوشه های lib (اگر از سیستم ۳۲ بینی) و یا lib64 (اگر از سیستم ۶۴ بیتی استفاده میکنید) پوشه کودا تولکیت شما باشد.

معمولا مسیر usr/local/cuda-9.1/lib64‌/  مسیر مورد نظر است. (اگر با نسخه ۳۲ بیتی لینوکس کار میکنید مسیر  usr/local/cuda-9.1/lib/  مورد نظر است) برای اضافه کردن مسیر مورد نظر میتوانید از دستور زیر استفاده کنید (دقت کنید بعد از تغییر در متغییر محیطی PATH یا از یک ترمینال جدید استفاده کنید یا در ترمینال فعلی قبل از زدن دستور جدید دستور source ~/.bashrc را اجرا کنید تا اخرین تغییرات بارگذاری شوند.)  :‌

برای سیستم های ۳۲ بیتی :‌

چگونه کاری کنم که X server یک GPU را منحصرا برای compute_only در نظر نگیرد؟

برای اطمینان حاصل کردن از اینکه X server از یک GPU‌خاص برای Display استفاده نکند شما باید مشخص کنید که از کدام GPU دیگر برای اینکار استفاده نماید. برای اطلاعات بیشتر میتوانید اینجا را چک کنید.

چگونه میتوانم CUDA را با لپ تاپی که از یک iGPU (گرافیک انبرد) و یک dGPU(کارت گرافیک مجزا) در یک اوبونتو ۱۴٫۰۴ استفاده میکند بکار بگیرم ؟‌

بعد از نصب کودا مقدار درایور را برای کارت گرافیک اینتل در مسیر etc/X11/xorg.conf/ را همانطور که در زیر آمده بر روی 'modesetting'  تنظیم کنید

برای آنکه مانع بازگردانی تنظیمات اعمال شده در xorg.conf توسط اوبونتو شوید فایل  etc/default/grub/ را ویرایش کرده و پارامتر "nogpumanager"  را به GRUB_CMDLINE_LINUX_DEFAULT  اضافه کنید. سپس دستور زیر را جهت بروز رسانی grub قبل از آنکه سیستم خود را ری استارت نمایید اجرا کنید:
اگر بعد از انجام آپدیت سیستم دیگر کودا یا درایور کار نکرد یا صفحه لود نشد چه  کنم؟‌
بروزرسانی سیستم ممکن است شامل بروزرسانی Linux kernel نیز شود. در بسیاری از حالات کرنل جدید بدون آنکه سرآیندها و بسته های توسعه کرنل مورد نیاز را بروز رسانی کند نصب میشود. برای اینکه اطمینان حاصل کنید که درایور نصب شده به همراه کودا  حتی بعد از نصب آپدیت بدرستی کار میکند کافیست دستوراتی که در بخش بروزرسانی سرآیند ها و بسته های توسعه کرنل در ابتدای بخش عنوان کردیم نگاهی بیاندازید و آن را دوباره اجرا کنید. بیاد داشته باشید همیشه میتوانید از طریق کلید های Ctrl+Alt+F1 (الی F6 ) یک کنسول متنی ایجاد کرده و نسبت به اجرای دستورات موردنظر اقدام کنید. (بخش انتهایی آموزش (در بالا) مربوط به چگونگی مواجهه با زمانی که درایور بدرستی کار نمیکند را ببینید)

اگر موارد بالا مشکل شما را حل نکرد در کامنت مشکل خودتون رو بفرمایید و همچنین نگاهی به صفحه رسمی انویدیا بندازید (نیاز به VPN دارید)

نکته مهم :‌

در زمان کپی کردن دستورات دقت کنید دستورات تغییر شکل ندهند و همانند چیزی که اینجا میبینید باشند.

سید حسین حسن پور

نسخه اول ۱۹ فروردین ۱۳۹۷

cuda-toolkitcudnnUbuntu 16.04آموزش نصب cuda toolkitآموزش نصب Cuda Toolkit در اوبونتو 16.04آموزش نصب cudnn‌ در اوبونتو 16.04اوبونتو ۱۶.04درایورنصبنصب cuda toolkit‌در اوبونتو 16.04نصب درایور در اوبونتو 16.04نصب کودا تولکیت
Comments (37)
Add Comment
  • mohamad

    برای کفی نیاز به نصب کودا ۸ دارم
    درایورو اول نصب نمیکنم و از درایور همراه کودا استفاده کردم ولی بعد نصب نمیتونستم وارد سیستم بشم و تو لاگین گیر کرد
    ubuntu 16.04 , gtx 1080 , 4.13.0-38-generic
    cuda_8.0.61_375.26_linux.run

    • سید حسین حسن پور متی کلایی

      سلام
      برای کفی میتونید از کودا تولکیت ۹ و cudnn7‌استفاده کنید از کودا ۹.۱ هم میشه استفاده کرد اما چون باگ داره طرفش نرید.
      برای درایور اول بگید SecureBoot‌ رو غیرفعال کردید یا نه ؟‌ بعد از اینکه درایور رو نصب کردید اون دستورات اخر (lsmod | grep nvidia و امثالهم ) که نوشتم رو اجرا کردید خروجی گرفتید ؟‌
      اگر نه میتونید با Ctrl+Alt+F1 وارد کنسول بشید و اون دستورات رو وارد کنید ببینید درایور نصب شده یا نه . علاوه بر اون یه نگاه به لاگ درایور بندازید ببینید چه خطایی رخ داده . تو پوشه temp معمولا مشخصه
      اگر بعد از غیرفعال کردن Secureboot از تنظیمات بایوس باز مشکل داشتید در لاگین وارد بخش متنی بشید (همون Ctrl+Alt+F1 ) بعد nvidia-uninstall‌کنید . بعدش میتونید ریبوت یا اینکه Ctrl+Alt+F7 بزنید و لاگین کنید
      ضمنا برای نصب درایور از همون Additional Drivers‌اقدام کنید (اگه واقعا میخوایید از کودا ۸ استفاده کنید ) چون درایور کودا ۸ از درایوری که توسط Additional Drivers نصب میشه قدیمی تره (درایور کودا ۹ همونه و داریور کودا ۹.۱ جدیدتره (ولی مشکل داره و برای جدیدترین درایور از خود سایت انویدیا باید استفاده کنید که لینکش رو دادم )

      • mohamad

        مرسی با نصب درایور از قسمت ادیشنال درایور مشکل حل شد

  • nadi

    سلام کودا ۹ با درایور ۳۸۴٫۱۱۱ گه از طریق ادیشنال درایور نصب میشه همخوانی داره؟
    یا باید درایور ۳۹۰ نصب کنم

    • سید حسین حسن پور متی کلایی

      سلام.
      نه نیازی به نصب ۳۹۰ ندارید . اون درایور کفایت میکنه .
      اگر نیاز به چک دارید میتونید از بخش requirements این مطلب رو چک کنید.
      اینم ببینید خوبه

  • محمد

    سلام
    سیستمم دارای مشخصات
    gpu nvidia 740m 2Gb up tp 4Gb
    cpu cori7QM
    ram 8

    میتونم
    cuda 10.0.130_410.48_linux.run
    cuDNN 7.3
    نصب کنم !؟

    لازم به توضیح که ورژن nvidia من ۳۹۰٫۴۸ است.

    • سید حسین حسن پور متی کلایی

      سلام.
      من فکر میکنم قبلا جواب دادم به این سوال! اما به هر حال یکبار دیگه میگم
      برای تنسورفلو و پای تورچ فعلا ۷تا cudnn7.2 و کودا ۹ و ۹٫۲ پشتیبانی میشن

  • MicroRobot

    دمت گرم که انقدر توضیح دادی خسته شدم بس خوندم الان زدم نصب کنه تو چی کشیدی که توضیح دادی واقعا دمت جیز

  • فرزانه

    سلام و وقتتون بخیر
    بنده کارت گرافیک رو از طریق Additional drivers به راحتی و بدون هیچ مشکلی نصب کردم . حالا باید مستقیم برم سراغ نصب cudnn . یعنی اجرای این سه خط :
    tar xvf cudnn-9.0-linux-x64-v7
    sudo cp lib64/* /usr/local/cuda/lib64
    sudo cp include/* /usr/local/cuda/include
    یا باید کار دیگه ای انجام بدم بعد !
    می شه لطفا این سه خط کد رو واضح تر توضیح بدید.
    جوابی که در زمان اجرای خط اول می گیرم اینه :
    mardani@dr-mardani:/media/mardani/179c8070-45c3-4c50-b491-fe2ba89d3803/dr-salimi/my programs$ tar xvf cudnn-10.0-linux-x64-v7.3.1.20.tgz
    cuda/include/cudnn.h
    cuda/NVIDIA_SLA_cuDNN_Support.txt
    cuda/lib64/libcudnn.so
    cuda/lib64/libcudnn.so.7
    cuda/lib64/libcudnn.so.7.3.1
    cuda/lib64/libcudnn_static.a
    در جواب خط دوم :
    cp: cannot stat ‘lib64/*’: No such file or directory

    ورژنی که من دانلود کردم اینه :
    cudnn-10.0-linux-x64-v7.3.1.20.tgz
    چه طوری می تونم ورژن کودا رو بفهمم که ببینم مناسب هست یا نه؟

  • فرزانه

    سلام
    شرمنده من درست متوجه نشدم . بعد از نصب درایور از طریق Additional drivers باید سراغ کدام بخش از مراحل بالا رفت ؟(چک کردم کارت گرافیک درست نصب شده بود) باید کودا تولکیت رو نصب کنم !! (اخه در ابتدای نصب کودا تولکیت گفتید اگر مراحل نصب درایور را انجام دادید نیازی به انجام این گام ها نیست اما اگر ندادید این مراحل را انجام دهید :)از کجا شروع کنم ؟! یا مستقیم برم سراغ نصب cudnn؟؟ و سه دستور مربوط به آن !
    بعد از اجرای دستور اول جواب زیر رو می گیرم:
    cuda/include/cudnn.h
    cuda/NVIDIA_SLA_cuDNN_Support.txt
    cuda/lib64/libcudnn.so
    cuda/lib64/libcudnn.so.7
    cuda/lib64/libcudnn.so.7.3.1
    cuda/lib64/libcudnn_static.a
    ولی بعد از اجرای دستور دوم ارر مربوط به صحیح نبودن مسیر رو می ده . می شه لطفا مورد نحوه ادرس دهی هم راهنمایی بفرمایید
    این ورژن
    cudnn-10.0-linux-x64-v7.3.1.20.tgz
    مناسب هست ؟؟؟!!!

    • سید حسین حسن پور متی کلایی

      درایور که نصب شد کودا تولکیت رو نصب کنید و بعد هم cudnn.
      از کودا ۹ استفاده کنید و cudnn 7.3 (یا جدیدتر) که با همه فریمورکها مچ هست و مشکلی نداره .

      ادرس دهی نکته خاصی نداره صرفا داریم محتویات اون پوشه ها رو منتقل میکنیم به پوشه cuda در پوشه usr .

  • سلیمی

    وقت بخیر
    فایل کودا تولکیت ۹ چه جوری می تونم دانلود کنم که پسوند .run باشه از هر سایتی که می گیرم با پسوند .debدانلود می کنه !! وقتی نصبش می کنم اون سوالاتی که فرمودید حین نصب می پرسه نمی یاد ولی ظاهرا نصب می شه. با دستورات زیر
    sudo dpkg -i cuda-repo-ubuntu1604-۹-۰-local-ga2_8.0.61-1_amd64.deb
    sudo apt-get update
    sudo apt-get install -y cuda-۹.۰
    وقتی دستور
    nvidia-smi
    می زنم جدول سیاه رنگ حاوی اطلاعات هم نشون داده می شه
    ولی وقتی می خوام برم سراغ فایل های کودا سمپل و یا یوتیلیتی پیداشون نمی کنم . انگار اصلا وجود ندارند.
    لطفا راهنمایی کنید.

  • فرزانه

    سلام بعد از اجرای دستور گام آخر این اررو رو می گیرم:
    sudo bash -c “echo /usr/local/cuda/lib64/ > /etc/ld.so.conf.d/cuda.conf”
    Command ‘sudo’ is available in ‘/usr/bin/sudo’
    The command could not be located because ‘/usr/bin’ is not included in the PATH environment variable.
    sudo: command not found
    مشکل از کجاست ؟
    می شه بفرمایید این دستور چی کار می کنه؟!

  • فرزانه

    سلام وقتتون بخیر
    آقای حسن پور لطفا این خط رو ویرایش کنید: (در ادامه وارد پوشه cuda samples شوید و تایپ کنید make و انتر کنید.)
    برای کسی مثل من که حرفه ای نیست . بهتره که توی متن اشاره کنید که منظور از باز کردن پوشه در واقع باز کردن ترمینال در این مسیر و اجرای make در این مسیر می باشد
    متشکرم

    • سید حسین حسن پور متی کلایی

      سلام . خیلی ممنونم . ویرایش شد
      البته من قبلش عرض کرده بودم در ترمینال موارد رو وارد میکنم و بنظرم مشخص بود ولی به هر صورت ویرایش کردم که این مشکل هم رفع بشه.

  • mahsa

    سلام. من در همان مراحل اولیه برای نصب cuda بعد از گذراندن مراحل زیر این خطا را می گیرم:
    Installing the NVIDIA display driver …
    The driver installation has failed due to an unknown error. please consult the driver installation log located at /var/log/nvidia-installer.log

    مراحل :
    Install Nvidia Accelerated Graphics Driver for Linux-x86_64 384.81?
    yes

    Do you want to install the OpenGL libraries?
    yes

    Do you want to run Nvidia-xconfig?
    yes

    Install the CUDA 9.0 Toolkit?
    yes

    Do you want to install a symbolic link at /usr/local/cuda?
    yes

    Install the CUDA 9.0 samples?
    yes

    • سید حسین حسن پور متی کلایی

      سلام .
      برای اینکه بدونید دقیقا چه خطایی رخ داده باید فایل /var/log/nvidia-installer.log رو باز کنید و محتویاتش رو ببینید.

  • محمد

    سلام
    من cuda نصب کردم ولی چند تا path دیگه داخل سایتش هست!!
    اونارو به چه صورت نصب کنم!؟

    • سید حسین حسن پور متی کلایی

      سلام
      یکم واضح تر صحبت کنید یعنی چی چندتا path دیگه داخل سایتش هست ؟
      برای کودا همین موارد که اومده کفایت میکنه . نمیدونم باز در مورد چی صحبت میکنید.

  • یاسر

    سلام من دستور
    lsmod | grep nouveau
    رو میزنم ولی چیزی نشون نمیده. آیا نیازی هست display manager رو غیرفعال کنم؟
    از طرف دیگه وقتی دستور
    sudo service lightdm stop
    را میزنم صفحه سیاه میشه و وقتی ctrl+alt+F2 رو میزنم تازه میره تو حالت متنی و حتما باید دستور
    sudo service lightdm start
    رو بزنم تا برگرده به محیط اوبونتو.

    ممنون میشم اگر راهنمایی کنید که مدوم مراحل رو باید بیخیال بشم.

    • سید حسین حسن پور متی کلایی

      سلام.
      موقع زدن دستورات باید تو حالت متنی باشید تا وقتی display manger رو غیرفعال میکنید کل تصویرتون سیاه نشه.

  • سعید

    سلام روی سیستم cudnn7.0.5 هست ولی کدی که میخواستم ران کنم ارور داد که cudnn7.1.4 نیاز داره . چه جوری باید آپدیتش کنم cudnn رو؟

    • سید حسین حسن پور متی کلایی

      سلام. خیلی راحت نسخه مورد نظرتون رو دانلود کنید و مثل آموزشی که بالا هست سیستم رو بروز کنید. (اکسترکت کنید به مکان های مورد نظر)
      البته اگر برنامه شما کانفیگ خاصی داره میتونید cudnn جدید رو هرجایی خواستید اکسترکت کنیدو مسیرش رو در کانفیگ برنامه اتون مشخص کنید.

  • شیرین

    با سلام وتشکر فراوان از مطالب بسیار مفیدتان
    من انویدیا را به سختی و پس از تغییر چند سیستم عامل روی ابونتو۱۸٫۱ نصب کردم وجدول اول با دستور nvidia-smi مشاهده میشود همچنین دستور
    sudo apt install nvidia-cuda-toolkit اجرا میشود به نظر کودا نصب میشود ولی در مسیر usr/local پوشه ای با این اسم وجود ندارد
    آیا کودا نصب شده است ممنون

    • سید حسین حسن پور متی کلایی

      سلام
      بله نصب شده .
      در نسخه ۱۸٫۱ اوبونتو کودا ۹٫۱ به ریپازیتوری اصلی اضافه شده. هرچند من برای نصب کودا همیشه پیشنهاد میکنم از همین شیوه ای که اینجا عرض کردم (دانلود فایل run از سایت انویدیا و بعد اجرای اون توسط خودتون) استفاده بشه چون همه بخشها رو خودتون مشخص میکنید
      و کنترل کامل دارید در مسیر نصب و اینکه چه چیزی نصب بشه یا نه.

  • شیرین

    با سلام وتشکر از راهنمایی ارزشمندتان
    من روی سیستم ابونتو انودیا وکودا را نصب کردم در مرحله بعد برای نصب برنامه گرومکس در ارتباط با ورژن کامپایلرها مشکل پیش میاد.مثلا ورژن کودا ۱۰ با gcc بالاتر از ۷ سازگار نیست وقتی ورژن gcc را به ۶ تغییر میدهم دوباره گرافیک و کودا به هم میریزند.

    ممنون میشم راهنمایی کنید

  • tommy

    سلام وقت بخیر من می خواهم cuda را با استفاده از WSL2 نصب کنم اما مشکلی که هست وقتی درایورش را دانلود کردم و سپس اجراش کردم میگه درایور از این نسخه ویندوز پشتیبانی نمی کند.
    ممکنه من رو راهنمایی کنید چندین روز هست که درگیرش هستم.
    با سپاس

  • نیما

    سلام ممنون از اموزشتون من مراحل رو رفتم و نصب کردم والان دستور nvcc –versionرا هم میزنم ورژن کودا را میاورد اما سوال این هست برای اجرای یک پروژه که نیاز به کودا دارد چطوری از طریق اناکوندا بهش بگیم که از همین کودا استفاده کند؟(به عبارت دیگر من یک پرژوه در گیت هاب دیدم که برای ران کردنش ارور میده کودا نصب نیست)
    پیشاپیش ممنونم

    • سید حسین حسن پور متی کلایی

      سلام.
      وقتی کودا رو نصب کنید تو مسیر پیشفرض، همه برنامه هایی که از کودا بخوان استفاده کنن اون مسیر رو چک میکنن و نیازی نیست شما کار خاصی بکنید. (شاید لازم باشه sudo ldconfig رو یکبار بزنید و بعد اسکریپتتون رو تست کنید یا نیاز باشه یکبار ترمینال رو ببندید و دوباره باز کنید (بسته به محیطتتون و نیازمندی های اسکریپت و.. که استفاده میکنید) )
      آناکوندا هم یک توزیع پایتون هست. در اصل چیزی که شما استفاده میکنید همون پایتون معمولیه و تنظیمات مرتبط تو اسکریپتی که ران میکنید مشخص میشه.
      اگر خطا میگیرید ممکنه بخاطر عدم وجود نسخه خاصی از کودا باشه. نیازمندی های پروژه اتون رو ببینید و چک کنید که از یک نسخه یکسان استفاده میکنید.اون نکاتی که بالا گفتم رو هم یکبار بررسی کنید)
      ضمنا کتابخونه هایی مثل پایتورچ برای اجرا نیازی به نصب کودا روی سیستم ندارن و اگر هم کودا نصب باشه از نسخه روی سیستم استفاده نمیکنن. بلکه فایلهای مورد نیاز همراه خود پایتورچ نصب میشه. این هم نکته مهمیه که باید در نظر داشته باشید
      تنسورفلو تا جایی که یادم میاد اینطور نبود و باید کودا رو سیستم نصب میبود.
      به هر حال متن خطایی رو هم که میگیرید عنوان کنید میتونه کمک کننده باشه. بیشتر ازاین چیزی به ذهنم نمیرسه در حال حاضر.

      • نیما

        خیلی خیلی ممنونم برای وقتی که گذاشتید.
        این اروری هست که من دریافت میکنم.
        Attempting to fetch value instead of handling error Internal: no supported devices found for platform CUDA
        البته این ارور رو هم دریافت میکنم
        cuda device (0) is of insufficient compute capability: 3.5 required, device is 3.0
        اینجوری که متوجه شدم کارت گرافیکم قدیمی هست ولی سوالی که پیش میاد پس چرا اخرین ورژن کودا را توانستم نصب کنم؟