GPUプログラミング(1):UbuntuでのCUDA8.0環境の構築

目次##


序文##

Linuxにドライバをインストールするのは本当に簡単なことではありません。数え切れないほどの苦痛を経て、ようやく[GPU](https://cloud.tencent.com/product/gpu?from=10680)プログラミング環境をセットアップしました。とても気に入っていますが、それでも言いたいです。だから、Nvidia:FUCK YOU!」(Linuxの父)(手動で面白い)。

Linuxの父


ラオス黄と彼の核爆弾##

[ YouTube RTX2080会議](https://www.youtube.com/watch?v=-ZefAW-Anno)

Lao Huangの起業家精神にあふれた道は順調に進んでおらず、今では台無しにされたGTX 1080TiやRTX2080でさえ1日で生まれることはありません。

1993 2015年4月、集積回路メーカーのLSILogicのLaoHuang(Huang Renxun)と、Sunの2人の若いエンジニアであるChrisMalachowskyとCurtisPriemがNvidiaを共同設立しました。当初の意図は、特別なチップを開発することでした。 、ビデオゲームでの3D画像のレンダリング速度を高速化し、よりリアルな表示効果をもたらすために使用されます。

2年後、最初の核爆弾が発売されました。この製品は、ゲームコンソール用の最初のマルチメディアアクセラレータであるNV1です。このアクセラレータは、グラフィック処理、サウンドカード、ゲームのジョイスティック機能を統合しています。リリースされると、魅力的でした。当時最大のゲームメーカーであったセガの目セガは、第6世代の家庭用ゲームコンソール「サターン」とパソコンにNV1を使用することを決定しました。もちろん、セガは現在はサードパーティにすぎません。基本的にはダファ(ソニー)、旧レン(ニンテンドー)とマイクロソフトは3つの部分に分かれています。叔父がまだいるダファは本当に繁栄しています。今は辞任しています。ダファがゲームコンソール市場をリードし続けるかどうかはわかりません。ただし、注意してください。これは、すでに辞退していた古いレンです。それはNvidiaに関連しています、後で言います。

しかし、同じ年に、まだ巨大なMicrosoftがWindows 95を発売し、主流のグラフィックチップ市場がゲームコンソールからPCに移行し、同時にDirect3D標準をリリースしました。NVIDIAは、業界共通の標準と互換性のない3次元グラフィック実装方法として2次方程式テクスチャマッピングを使用しています。 、したがって、市場の売上高は急速に減少しています。

2年後、NVIDIAはRIVA128、RIVA128ZX、RIVATNT、その他のグラフィックプロセッサを次々と発売しました。これらの新製品は、Microsoft Direct3DおよびOpenGL標準をサポートするだけでなく、エネルギー効率と低価格の点で競合他社の3DfxのVoodooおよびATIのRageProを上回っています。徐々に機械工場全体の支持を獲得し、1999年1月にナスダックに上場しました。同年8月、NvidiaはGeForce-** GeForce 256 **にちなんで名付けられた最初のグラフィックコアを発売し、GPUを初めて提案しました。コンセプト翌年の終わりに、Nvidiaは7000万ドルの現金と100万株の会社株式を使用して3Dfxを買収し、正式に業界のリーダーになりました。

この時点で、ラオファンは彼が川や湖を支配することを理解しています。

ご存知のとおり、JHはゲームコンソール業界に参入するために多額の費用を費やしてきました。2000年、JHはNVIDIAにXboxグラフィックチップ、SoundStormサウンドチップ、マザーボードソリューションの開発を依頼しました。しかし、JHの期限はXboxがリリースされる2か月前の1年だけでした。生産を開始しました。結局、マイクロソフトは最初の発売を延期せざるを得ず、チャンスを逃してソニーPS2に敗れましたが、PS2は最初の発売だけでなく、ゲームの数と品質もはるかに進んでいます。これは、PS3が後に敗れたポイントでもあります。 、そしてPS4王の復帰のポイント。巨人は機会を逃し、Nvidiaを抑制することしかできず、後に品質管理の問題が発生しました。巨人はNVIDIAの競合他社であるATI(後にAMDに買収されました)に注文を渡しました。協力の失敗により、Nvidiaは高額の支払いを余儀なくされました。2003年に収益が減少しただけでなく、互換性の問題により、その年に発売されたGeForceFXがATIのRadeon9700に直接敗れたMicrosoftのDirectX9仕様の確立に関する重要なニュースも見逃しました。 NV1のクラッシュは非常に似ています。さらに残念なことに、GeForce FXには、動作温度が高すぎるという問題があり、複数の自発的な燃焼事故が発生します。HuangRenxunは、かつてゲーマーから「2つの爆弾のチャンピオン」として嘲笑されていました。以前のSamsungNote7の爆発も台無しになりました。中国市場全体。しかし、理由はもっと複雑です。誰もが理解しています。巨大なハードに加えて、歯磨き粉工場(Intel)もATIをサポートし始めています。ブレークスルーを達成するために、NVIDIAは、一方では解決が困難なジャイアントを積極的に探し、他方では再び協力するよう努めています。 Xboxの注文を失い、Sony PS3の注文を勝ち取るために懸命に努力しました。さらに、ATIを圧倒するために高性能チップを導入し続け、Intelとの特許クロスライセンス契約にも達しました。少し気が遠くなると言えます。

川や湖を支配したい古い黄が巨大な硬い歯磨き粉工場によって抑制されているのを見て、シリコンバレーでさえ、事業を始めるのは非常に困難です。

2007 今年、NVIDIAのチーフサイエンティストであるDavid Kirkは、GPUを一般化できるCUDA(Compute Unified Device Architecture)テクノロジーを開発するために多くのリソースを投資するように、Lao Huangを説得しました。これは、今日のGPUプログラミングの中核であり、すべてのNVIDIAGPUを作成します。 CUDAをサポートします。このクレイジーな動きのコストは莫大です。関連するCUDAロジック回路をハードウェア製品の設計に追加する必要があるため、チップ面積が増加し、熱放散が増加し、コストが増加し、故障率が増加します。同時に、各製品のソフトウェアドライバーを確保する必要があります。それらはすべてCUDAをサポートしていますが、これはNvidiaのプログラマーに生き残る方法を提供しません。プログラマーの意味は何ですか?科学者になるのはどれほど楽しいですか(手動で面白い)。2008年、AMDはNVIDIAの古いライバルATIを買収し、GPUとのCPU統合のための新しいソリューションを形成しました。 。しかし残念ながら、AMDそろばんは飛ぶことができますが、現在は歯磨き粉ファクトリーCPU + Nvidia GPUです。赤緑の戦いが始まったか、対戦相手が名前を変更しました。

Intelはまた、Nvidiaとの協力を終了し、3Dグラフィックアクセラレータを独自のチップセット(現在は統合ディスプレイまたは核ディスプレイと呼ばれています)に統合し、フルーツマシンがNvidiaを使用しない言い訳を見つけました。これは、代わりに中古のShenzhouを購入するのも無力です。 rmbpがGPUを開発する理由、「だから、Intel&Apple:FUCKYOU!」。

2012 2015年、ディープニューラルネットワークテクノロジーは、コンピュータービジョン、[音声認識](https://cloud.tencent.com/product/asr?from=10680)、自然言語処理、さまざまな分野の人工知能テクノロジーなど、汎用GPUのサポートにより大きな進歩を遂げました。これらはすべて、急速な発展の条件となっています。NVIDIAデータ中央ビジネスも活況を呈しており、大小の企業に強力なコンピューティングサポートを提供しています。

そして2016年10月20日、ニンテンドーはNvidiaがカスタマイズしたTegra X1システムチップを使用してスイッチをリリースしました。正直なところ、スイッチがなければ、それは第三の世界ではなく、老人はハンドヘルドエリアでしか楽しむことができません。多くの人がハンドヘルドとしてプレイしますが、スイッチはハンドヘルドではなくホストです。

ですから、深層学習がラオファンにチャンスをもたらしたのか、ラオファンが深層学習の機会をもたらしたのかはわかりません。つまり、AIの第3の波とAI時代の到来は、ラオファンが不可欠です。しかし、AIについて話さなくても、Nvidiaはありません。スーパー3Aの傑作は言うまでもなく、現在の3Aの傑作はありません。

Lao Huangが最終的にAMDを打ち負かし、残りのPC市場シェアを獲得できるかどうか、あるいはまだAMDの手にあるホスト市場の大部分でさえ、実際には重要ではありません。今はモバイル時代なので、AI時代は完全に来たと思います。以前は、Qualcommのシェアを獲得することが重要でした。HuaweiとAppleが行ったことを見ると、Googleが注目していることは言うまでもなく、Lao Huangがさらに前進するためにやるべきことがまだたくさんあります(手動で恐れています)。


開発環境リスト##


グラフィックドライバーのインストール##

UBUNTU追加ドライバーで提供されているグラフィックカードドライバーは使用しないでください!!!
UBUNTU追加ドライバーで提供されているグラフィックカードドライバーは絶対に使用しないでください!!!
UBUNTU追加ドライバーで提供されているグラフィックカードドライバーは絶対に使用しないでください!!!
一般的に言って、あなたはいくつかの奇妙な問題に遭遇するでしょう、もちろん、鯉は問題を抱えていません(手動で面白い)。
これは最初のピットであり、それを示すにはおおよそ3つの方法があります。

nvidia-smi


ドライバをダウンロード###

さて、私の練習について話しましょう:
まず、[公式Webサイト](https://www.nvidia.com/Download/index.aspx?lang=cn)にアクセスして、グラフィックカードドライバーをダウンロードします。たとえば、私はGT 750Mで、オペレーティングシステムは64ビットLinuxです。対応するバージョンをダウンロードします。

ドライバーをダウンロード

前のドライバーを削除します。何もインストールしていない場合でも、この手順は無害であることに注意してください。

sudo apt-get remove --purge nvidia*

いくつかの必要なライブラリを更新してインストールし、最初に非常に多くをインストールしてから、CUDAをインストールします。

sudo apt-get update
sudo apt-get install dkms build-essential linux-headers-generic

nouveau ###を無効にする

図に示すように、blacklist.confを開き、最後にnouveauを無効にする設定を追加します。

sudo vim /etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

nouveauを無効にする

nouveauカーネルモジュールを無効にする

echo options nouveau modeset=0
sudo update-initramfs -u

再起動します。次のコマンドを実行すると、何も印刷できません、おめでとうございます。nouveauは正常に無効になりました。

lsmod | grep nouveau

ドライバをインストールする###

tty1に移動します(ショートカットキーctrl + alt + f1、応答がない場合は、f1-f7を1つずつ試してください。異なるLinux、キーはわずかに異なります)。グラフィカルインターフェイスを閉じます。

sudo service lightdm stop

ドライバをインストールし、ピットがあることに注意してください。必ず**-no-opengl-files **を追加してください。これがなくてもインストールが成功した場合でも、無制限のログインの問題が発生します。

sudo chmod u+x NVIDIA-Linux-x86_64-390.87.run 
sudo ./NVIDIA-Linux-x86_64-390.87.run –no-opengl-files

インストールしたが**-no-opengl-files **を追加しなかった場合は、以下の手順に従って保存してください。

sudo ./NVIDIA-Linux-x86_64-390.87.run –uninstall
sudo ./NVIDIA-Linux-x86_64-390.87.run –no-opengl-files

再起動します。nvidia-smiコマンドで試してください。下の図のようなものが表示された場合は、おめでとうございます。ドライバは正常にインストールされています。または、追加のドライバ表示が表示されます手動でインストールされたドライバを引き続き使用してください

nvidia-smi

追加ドライバー


CUDA8.0をインストールします##

まずライブラリを作りましょう。

sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

[公式ウェブサイト](https://developer.nvidia.com/cuda-toolkit-archive)にアクセスして、目的のCUDAバージョンをダウンロードします。これが[8.0秒バージョン](https://developer.nvidia.com/cuda-80-ga2-download-archive)です。次に示すように、runfile(ローカル)バージョンをダウンロードします。

CUDA8.0をインストールします

md5を確認し、資格がない場合は再度ダウンロードします。次の図は私のテスト結果です。

md5sum cuda_8.0.61_375.26_linux.run

md5検出

グラフィカルインターフェイスをもう一度閉じます

sudo service lightdm stop

インストール時に**-no-opengl-files **パラメータを追加し、最初にスペースを保持する必要があります。その後、デフォルトが最後まで続きます。

sudo sh cuda_8.0.61_375.26_linux.run –no-opengl-files

次に、3つがインストールされているのがわかります。

グラフィカルインターフェイスを開く

sudo service lightdm start

ここに別のピットがあります。14.04.5の場合、このステップでは開くことができず、後で14.04に変更されます。つまり、カーネルを慎重に選択する必要があります。

次のコマンドを実行します。図3に示す3つのフォルダーが表示されている場合は、おめでとうございます。

ls /dev/nvidia*

見つからないか見つからない場合でも、実行する操作がいくつかあります。vimを使用してxxx.sh(任意の名前)を作成し、次のように入力します。

#! /bin/bash

/sbin/modprobe nvidia

if["$?"-eq 0]; then
 # Count the number of NVIDIA controllers found.
 NVDEVS=`lspci | grep -i NVIDIA`
 N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
 NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`

 N=`expr $N3D + $NVGA - 1`for i in`seq 0 $N`;do
 mknod -m 666/dev/nvidia$i c 195 $i
 done

 mknod -m 666/dev/nvidiactl c 195255else
 exit 1
fi

/sbin/modprobe nvidia-uvm

if["$?"-eq 0]; then
 # Find out the major device number used by the nvidia-uvm driver
 D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`

 mknod -m 666/dev/nvidia-uvm c $D 0else
 exit 1
fi

実行後、3つのフォルダが表示されます。

sudo chmod +x xxx.sh
sudo ./xxx.sh
ls /dev/nvidia*/dev/nvidia0  /dev/nvidiactl  /dev/nvidia-uvm

次に、図に示すように、rc.localに書き込みます。

sudo vim /etc/rc.local

rc.local

環境構成ファイルを開く

sudo vim /etc/profile

最後に書く:

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

保存して終了すると、有効になります。

source /etc/profile

その後、あなたはそれを見ることができます。

いくつかの検出コマンドを実行します。それらが私が示したものと類似している場合、おめでとうございます。環境構成は完了です。

cat /proc/driver/nvidia/version
nvcc -V

検出


参照##

私はたくさんの記事を参照しましたが、そのうちのいくつかは私に落とし穴をもたらしました、私はそれを書きません。さて、あなたを許してください(手動無力)以下は非常に有用な記事です。

https://zh.wikipedia.org/wiki/NVIDIA
https://gist.github.com/dangbiao1991/7825db1d17df9231f4101f034ecd5a2b
http://ifenxi.com/archives/1103
https://www.jianshu.com/p/35c7fde85968?from=singlemessage
https://blog.csdn.net/qjk19940101/article/details/78927109
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#abstract


やっと##

今日では、並列プログラミングとGPUプログラミングが基盤となっており、CUDAプログラミング環境の構築を学ぶことが重要です。これに基づいて、ディープラーニングやテンソルフローなどを構築し続けることができます。

Recommended Posts

GPUプログラミング(1):UbuntuでのCUDA8.0環境の構築
ubuntu16.04はGPU環境を展開します
Ubuntu 14.04でのDjango&MySQL環境の展開
UbuntuでのDNSサービスの構築
[python] python仮想環境の構築とGPU環境
Ubuntu16.04でのCUDA8.0とCUDA9.0の共存
ubuntuでのJDK環境変数の構成方法
Ubuntu16.04でのCUDAのインストールとアンインストール
ubuntuでC ++コンパイル環境を構築する
Tencent Cloud ubuntu 16.04ZenTao統合環境構築
Ubuntuでpython開発環境を構築する
Ubuntu16.04でNginx + PHP 7.0 + MySQL環境を構成します
Ubuntu 16.04 Cuda8.0 tensorflow-gpu
レッスン002ubuntu環境の構築とubuntuグラフィカルインターフェイスの操作(無料)
ubuntuの下のLinux環境で発生した問題を解決します
Ubuntuにapache + PHPをインストールします
Ubuntuにnode.jsをインストールします
Ubuntu16.04にpython3.6をインストールします
Hadoop環境の構築(centos7)
ubuntu14.10の下にThriftをインストールします
UbuntuにOpenJDK10をインストールします
Ubuntu14.04にCaffeをインストールします
UbuntuでのPythonMySQLd
Ubuntu構成開発環境
ubuntuでiptablesを使用する
Ubuntu開発環境の構成
2018-09-11Ubuntuにarduinoをインストールします
UbuntuでのLNMPのインストール
Ubuntuでのネットワーク構成
Python仮想環境:Ubuntu16.04
UbuntuTouch環境のセットアップ
Ubuntu18.10はJava環境を構成します
ROS Ubuntu 18.04 [2]にROSをインストールします。
UbuntuにMySQLをインストールする
UbuntuにYarm-PM2をインストールします
ubuntu環境展開プロジェクト
CentOS7GPU環境を構成する
Ubuntu16.04環境でPython3.6の下にDjangoをインストールするための詳細な手順
UbuntuサーバーでPHPオペレーティング環境をセットアップする方法