3月19日,NVIDIA的2019 GTC大會於硅谷召開,CEO黃仁勛發布了 Jetson Nano,可為機器人帶來足夠的AI運算力,99美元的良心之作。
- Jetson Nano Developer Kit
- Jetson_Nano_Developer_Kit_User_Guide.pdf
- Getting Started With Jetson Nano Developer Kit
- Jetson Download Center
- Jetson Nano Wiki
技術參數

Technical | Specifications |
---|---|
GPU | 128-core Maxwell |
CPU | Quad-core ARM A57 @ 1.43 GHz |
Memory | 4 GB 64-bit LPDDR4 25.6 GB/s |
Storage | microSD (not included) |
Video Encode | 4K @ 30 | 4x 1080p @ 30 | 9x 720p @ 30 (H.264/H.265) |
Video Decode | 4K @ 60 | 2x 4K @ 30 | 8x 1080p @ 30 | 18x 720p @ 30 (H.264/H.265) |
Camera | 1x MIPI CSI-2 DPHY lanes |
Connectivity | Gigabit Ethernet, M.2 Key E |
Display | HDMI 2.0 and eDP 1.4 |
USB | 4x USB 3.0, USB 2.0 Micro-B |
Others | GPIO, I2C, I2S, SPI, UART |
Mechanical | 100 mm x 80 mm x 29 mm |
CPU為4核A57處理器,運行Linux for Tegra,GPU有128個Cuda核心,運算能力472G,功耗5W。
1. 開機初始配置
1.1 器件准備
- 電源:Micro USB(5V 2.5A)
- HDMI線、DP線或者HDMI轉DVI線,實測HDMI轉VGA會出現閃屏,不能使用
- 16G以上class 10或者更高級別Micro SD卡,並備好高速讀卡器燒寫鏡像,個人使用的是128G的卡
- 網線、USB鍵盤和鼠標(網線連接到路由器,方便IP與MAC綁定,之后可以使用固定IP連接板子)
開機時由於需要在圖形界面上對系統進行設置,需要保證顯示設備(HDMI連到顯示器上)和控制設備(鍵盤和鼠標)都連接上。在開機設置完成后,可以關閉圖形界面並使用SSH登陸,此時只需要連上電源和網線放在角落即可,當然也可以用來墊桌角了。
1.2 燒寫系統
1.3 開機配置
-
燒寫完成后,將SD卡插入
Jetson Nano
,開機並完成用戶密碼、時區等設置,在終端使用ifconfig
命令獲取由路由器DHCP分配的IP地址,並在路由器中綁定IP
與MAC
地址,之后可通過固定IP來訪問,我的板子配置的固定IP是:192.168.1.115 -
設置完成后拔掉電源關機,此時可以拔除USB鍵盤、鼠標和HDMI轉接線,可以放在散熱良好的角落
1.4 關閉圖形界面
通過top
命令可以看到內存占用情況
KiB Mem : 4058432 total, 1593660 free, 1477904 used, 986868 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2378568 avail Mem
內存占用1.5G左右,且沒有交換區
由於內存和顯存共用,當內存占用太多時,留給GPU使用的顯存就會很少,所以可以關閉圖形界面從而留出更多的備用內存
1.4.1 關閉圖像用戶界面
sudo systemctl set-default multi-user.target sudo reboot 結果:
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target.
關閉圖形界面后的內存占用:
%Cpu(s): 0.1 us, 0.6 sy, 0.0 ni, 98.9 id, 0.2 wa, 0.1 hi, 0.1 si, 0.0 st KiB Mem : 4059712 total, 3513880 free, 322932 used, 222900 buff/cache KiB Swap: 0 total, 0 free, 0 used. 3571064 avail Mem
可以節省1.1G內存開銷用於其他事務
1.4.2 啟用圖形用戶界面
sudo systemctl set-default graphical.target sudo reboot
1.5 設置交換分區
SWAP(交換)分區是一種通過在硬盤中預先划分一定的空間,然后將把內存中暫時不常用的數據臨時存放到硬盤中,以便騰出物理內存空間讓更活躍的程序服務來使用的技術,其設計目的是為了解決真實物理內存不足的問題。但由於交換分區畢竟是通過硬盤設備讀寫數據的,速度肯定要比物理內存慢,所以只有當真實的物理內存耗盡后才會調用交換分區的資源。
實際上,並不是等所有的物理內存都消耗完畢之后,才去使用swap的空間,什么時候使用是由swappiness 參數值控制。
雖然在SD卡上使用交換分區容易使SD卡壞的快一點,但是設置交換分區仍然有必要,將Swappiness參數設置接近零以盡可能的使用內存而非SD卡的交換分區。
1.5.1 查看交換分區
free -m total used free shared buff/cache available Mem: 3964 313 3424 17 226 3488 Swap: 0 0 0
1.5.2 檢查硬盤驅動器分區上的可用空間
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 118G 9.1G 104G 9% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 2.0G 18M 2.0G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 397M 0 397M 0% /run/user/1000
通常,swap空間等於或雙倍於系統內存的量是一個很好的選擇。如果將其用作RAM后備,那么你的swap分區盡可能不要超過4G。
1.5.3 創建Swap分區文件
我們可以在文件系統上創建一個swap分區。我們將在根/
目錄中分配我們想要調用的swap大小的文件swapfile。
創建交換文件的最佳方法是使用fallocate
。此命令將創建指定大小的文件。
sudo fallocate -l 4G /swapfile ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G 4月 29 20:25 /swapfile
1.5.4 啟用Swap分區
我們需要將swap文件轉換為swap分區。首先,我們需要鎖定文件的權限,以便只有具有root權限的用戶才能讀取內容。
通過輸入以下內容使該文件只能由root訪問:
sudo chmod 600 /swapfile
輸入以下命令驗證權限更改:
ls -lh /swapfile
-rw------- 1 root root 4.0G /swapfile
只有root用戶啟用了讀寫標志。
我們現在可以通過輸入以下內容將文件標記為swap空間
sudo mkswap /swapfile
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=e1a385f2-4431-4881-9beb-966adefd688d
標記文件后,我們可以啟用swap文件:
sudo swapon /swapfile
輸入以下內容驗證交換是否可用:
sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -1
我們可以用free命令再次檢查:
free -h total used free shared buff/cache available Mem: 3.9G 318M 3.3G 17M 230M 3.4G Swap: 4.0G 0B 4.0G
swap已成功設置,操作系統將在必要時使用它。
1.5.5 永久化swap文件
雖然已啟用當前會話中的 swap
文件,但是,如果我們重新啟動的話,服務器將不會自動保留 swap
設置。可以通過將交換文件添加到我們的 /etc/fstab
來進行更改。
為了避免出現任何問題,先備份/etc/fstab
文件:
sudo cp /etc/fstab /etc/fstab.bak
輸入以下內容,將swap文件信息添加到/etc/fstab文件末尾:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
接下來,我們將調整我們的swap空間。
1.5.6 調整Swap設置
(1)調整Swappiness參數
該swappiness參數主要配置系統將數據從RAM交換到交換空間的頻率。該參數的值是介於0和100之間的百分比。
當值接近於零時,除非絕對必要,否則內核不會將數據交換到磁盤。請記住,與swap文件的交互是“費時的”,因為它們比與RAM的交互花費更長的時間,並且它們可能導致性能的顯着降低。
當該值接近100時,其將嘗試將更多數據放入交換中以努力保留更多的RAM空間。我們可以通過輸入以下內容來查看當前的swappiness
值:
cat /proc/sys/vm/swappiness
60
對於服務器本身來說,您可能希望這個數值更接近於0。我們可以使用sysctl
命令將swappiness
設置為不同的值。
例如,要將swappiness
設置為10,我們可以輸入:
sudo sysctl vm.swappiness=10
vm.swappiness = 10
我們可以通過在/etc/sysctl.conf
文件中添加以下行來自動設置此值:
sudo nano /etc/sysctl.conf
在底部,您可以添加:
vm.swappiness=10
完成后保存並關閉文件。
(2)調整緩存壓力設置
您可能想要修改的另一個相關值是vfs_cache_pressure
。這將關系到系統選擇多少緩存inode
和dentry
信息。
您可以通過proc命令來查看當前值:
cat /proc/sys/vm/vfs_cache_pressure
100
我的設置系統會很快地從緩存中刪除inode
信息。我們可以通過輸入以下內容將其設置為更保守的值(如50):
sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50
同樣,這僅適用於我們當前的會話。我們可以通過將其添加到配置文件來改變它,就像我們使用swappiness
設置一樣:
sudo nano /etc/sysctl.conf
在底部,添加指定新值的行:
vm.vfs_cache_pressure=50
完成后保存並關閉文件。
1.6 更換源並更新軟件
Jetson Nano
采用的是 aarch64
架構的Ubuntu 18.04.2 LTS
系統
Nano的鏡像默認是國外的源,速度很慢,國內的源有的上不去,有的包無法安裝,經過測試清華大學的源完美可用,現放上教程
首先備份原本的 source.list
文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #為防止誤操作后無法恢復,先備份原文件sources.list
sudo vim /etc/apt/sources.list
然后刪除所有內容,復制
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
到 sources.list
后保存,之后打開終端輸入
#刷新存儲庫索引 sudo apt-get update #在升級軟件包時自動處理依賴關系 sudo apt-get full-upgrade
由於在使用時經常查看CPU和共享的內存占用,系統自帶的top
命令並不好用,可以使用更好用的 htop,使用如下命令安裝
sudo apt install htop
htop
htop
可以看到每個CPU核心的使用率、共享內存的使用率,方便直觀
1.7 檢查已經安裝的系統組件
Jetson-nano
的OS鏡像已經自帶了JetPack
,cuda
,cudnn
,opencv
等已經安裝好的庫,並有例子,這些例子安裝路徑如下所示
包 | 路徑 |
---|---|
TensorRT | /usr/src/tensorrt/samples/ |
CUDA | /usr/local/cuda-/samples/ |
cuDNN | /usr/src/cudnn_samples_v7/ |
Multimedia API | /usr/src/tegra_multimedia_api/ |
VisionWorks | /usr/share/visionworks/sources/samples/ /usr/share/visionworks-tracking/sources/samples/ /usr/share/visionworks-sfm/sources/samples/ |
OpenCV | /usr/share/OpenCV/samples/ |
1.7.0 檢查系統屬性
#查看Jetson Nano L4T版本: head -n 1 /etc/nv_tegra_release R32 (release), REVISION: 1.0, GCID: 14531094, BOARD: t210ref, EABI: aarch64, DATE: Wed Mar 13 07:46:13 UTC 2019
#查看系統版本
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
#查看系統內核
uname -a
Linux nv 4.9.140-tegra #1 SMP PREEMPT PDT 2019 aarch64 aarch64 aarch64 GNU/Linux
#查看內存
free -m
total used free shared buff/cache available
Mem: 3964 393 2949 25 621 3387
Swap: 4095 0 4095
#查看CPU詳情
lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Vendor ID: ARM
Model: 1
Model name: Cortex-A57
Stepping: r1p1
CPU max MHz: 1428.0000
CPU min MHz: 102.0000
BogoMIPS: 38.40
L1d cache: 32K
L1i cache: 48K
L2 cache: 2048K
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32
#查看硬盤分區
sudo parted -l
Error: /dev/mtdblock0: unrecognised disk label
Model: Unknown (unknown)
Disk /dev/mtdblock0: 4194kB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
Model: SD SC128 (sd/mmc)
Disk /dev/mmcblk0: 128GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
2 1049kB 1180kB 131kB TBC
3 2097kB 2556kB 459kB RP1
4 3146kB 3736kB 590kB EBT
5 4194kB 4260kB 65.5kB WB0
6 5243kB 5439kB 197kB BPF
7 6291kB 6881kB 590kB TOS
8 7340kB 7406kB 65.5kB EKS
9 8389kB 9044kB 655kB LNX
10 9437kB 9896kB 459kB DTB
11 10.5MB 10.6MB 131kB RP4
12 11.5MB 11.6MB 81.9kB BMP
1 12.6MB 128GB 128GB ext4 APP
#查看硬盤空間
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 118G 16G 97G 15% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
tmpfs 2.0G 26M 2.0G 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 397M 12K 397M 1% /run/user/1000
#查看正在運行的進程
htop
#查看USB設備
lsusb
Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
#查看PCI總線
lspci
00:02.0 PCI bridge: NVIDIA Corporation Device 0faf (rev a1)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
#查看系統已載入的相關模塊
lsmod
Module Size Used by
nvs 54527 0
nvgpu 1555053 3
bluedroid_pm 13912 0
ip_tables 19441 0
x_tables 28951 1 ip_tables
#查看硬件
sudo lshw
nv
description: Computer
product: jetson-nano
serial: 04212190206840c08401
width: 64 bits
capabilities: smp cp15_barrier setend swp
*-core
description: Motherboard
physical id: 0
*-cpu:0
description: CPU
product: cpu
physical id: 0
bus info: cpu@0
size: 1428MHz
capacity: 1428MHz
capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpufreq
*-cpu:1
description: CPU
product: cpu
physical id: 1
bus info: cpu@1
size: 1428MHz
capacity: 1428MHz
capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpufreq
*-cpu:2
description: CPU
product: cpu
physical id: 3
bus info: cpu@2
size: 1428MHz
capacity: 1428MHz
capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpufreq
*-cpu:3
description: CPU
product: cpu
physical id: 4
bus info: cpu@3
size: 1428MHz
capacity: 1428MHz
capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpufreq
*-cpu:4 DISABLED
description: CPU
product: idle-states
physical id: 5
bus info: cpu@4
*-cpu:5 DISABLED
description: CPU
product: l2-cache
physical id: 6
bus info: cpu@5
*-memory
description: System memory
physical id: 7
size: 3964MiB
*-pci
description: PCI bridge
product: NVIDIA Corporation
vendor: NVIDIA Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: a1
width: 32 bits
clock: 33MHz
capabilities: pci pm msi ht pciexpress normal_decode bus_master cap_list
configuration: driver=pcieport
resources: irq:84 ioport:1000(size=4096) memory:13000000-130fffff
*-network
description: Ethernet interface
product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
vendor: Realtek Semiconductor Co., Ltd.
physical id: 0
bus info: pci@0000:01:00.0
logical name: eth0
version: 15
serial: 00:04:4b:e4:0c:db
size: 100Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.045.08-NAPI duplex=full ip=192.168.1.115 latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s
resources: irq:404 ioport:1000(size=256) memory:13004000-13004fff memory:13000000-13003fff
*-usbhost:0
product: xHCI Host Controller
vendor: Linux 4.9.140-tegra xhci-hcd
physical id: 1
bus info: usb@1
logical name: usb1
version: 4.09
capabilities: usb-2.00
configuration: driver=hub slots=5 speed=480Mbit/s
*-usb
description: USB hub
product: 4-Port USB 2.1 Hub
vendor: Generic
physical id: 2
bus info: usb@1:2
version: 1.20
capabilities: usb-2.10
configuration: driver=hub slots=4 speed=480Mbit/s
*-usbhost:1
product: xHCI Host Controller
vendor: Linux 4.9.140-tegra xhci-hcd
physical id: 2
bus info: usb@2
logical name: usb2
version: 4.09
capabilities: usb-3.00
configuration: driver=hub slots=4 speed=5000Mbit/s
*-usb
description: USB hub
product: 4-Port USB 3.1 Hub
vendor: Generic
physical id: 1
bus info: usb@2:1
version: 1.20
capabilities: usb-3.20
configuration: driver=hub slots=4 speed=5000Mbit/s
*-network:0
description: Ethernet interface
physical id: 3
logical name: usb0
serial: 96:1a:c2:c7:d8:7f
capabilities: ethernet physical
configuration: broadcast=yes driver=g_ether driverversion=29-May-2008 firmware=tegra-xudc link=no multicast=yes
*-network:1
description: Ethernet interface
physical id: 4
logical name: l4tbr0
serial: 96:1a:c2:c7:d8:7d
capabilities: ethernet physical
configuration: broadcast=yes driver=bridge driverversion=2.3 firmware=N/A ip=192.168.55.1 link=no multicast=yes
*-network:2 DISABLED
description: Ethernet interface
physical id: 5
logical name: dummy0
serial: 96:71:bf:d0:c5:fd
capabilities: ethernet physical
configuration: broadcast=yes driver=dummy driverversion=1.0
*-network:3
description: Ethernet interface
physical id: 6
logical name: rndis0
serial: 96:1a:c2:c7:d8:7d
capabilities: ethernet physical
configuration: broadcast=yes driver=g_ether driverversion=29-May-2008 firmware=tegra-xudc link=no multicast=yes
1.7.1 檢查CUDA
Jetson-nano
中已經安裝了 CUDA10.0
版本,但是此時你如果運行 nvcc -V
是不會成功的,需要你把 CUDA
的路徑寫入環境變量中。OS
中自帶 Vim
工具 ,所以運行下面的命令編輯環境變量
sudo vim ~/.bashrc
在最后添加
export CUBA_HOME=/usr/local/cuda-10.0 export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH export PATH=/usr/local/cuda-10.0/bin:$PATH
然后保存退出
對了最后別忘了source一下這個文件。
source ~/.bashrc
source后,此時再執行 nvcc -V
執行結果如下
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sun_Sep_30_21:09:22_CDT_2018
Cuda compilation tools, release 10.0, V10.0.166
1.7.2 檢查OpenCV
Jetson-nano
中已經安裝了 OpenCV3.3
版本,可以使用命令檢查 OpenCV
是否安裝就緒
#查看opencv版本: pkg-config opencv --modversion 3.3.1
#查看opencv安裝庫
pkg-config opencv --libs
-lopencv_dnn -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
如果 OpenCV
安裝就緒,會顯示版本號,版本是3.3.1
1.7.3 檢查cuDNN
Jetson-nano
中已經安裝好了 cuDNN
,並有例子可供運行,我們運行一下例子,也正好驗證上面的 CUDA
#進入例子目錄 cp -rf /usr/src/cudnn_samples_v7/mnistCUDNN ~/cudnn #編譯一下例子 make # 為可執行文件添加執行權限 chmod a+x mnistCUDNN # 執行 ./mnistCUDNN
如果成功,如下所示
cudnnGetVersion() : 7301 , CUDNN_VERSION from cudnn.h : 7301 (7.3.1) Host compiler version : GCC 7.3.0 There are 1 CUDA capable devices on your machine : device 0 : sms 1 Capabilities 5.3, SmClock 921.6 Mhz, MemSize (Mb) 3964, MemClock 12.8 Mhz, Ecc=0, boardGroupID=0 Using device 0 Testing single precision
Loading image data/one_28x28.pgm
Performing forward propagation ...
Testing cudnnGetConvolutionForwardAlgorithm ...
Fastest algorithm is Algo 1
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.371823 time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.396354 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 5.057344 time requiring 207360 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 16.059010 time requiring 57600 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 5: 25.094376 time requiring 203008 memory
Resulting weights from Softmax:
0.0000000 0.9999399 0.0000000 0.0000000 0.0000561 0.0000000 0.0000012 0.0000017 0.0000010 0.0000000
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 0.9999288 0.0000000 0.0000711 0.0000000 0.0000000 0.0000000 0.0000000
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 0.9999820 0.0000154 0.0000000 0.0000012 0.0000006
Result of classification: 1 3 5
Test passed!
Testing half precision (math in single precision)
Loading image data/one_28x28.pgm
Performing forward propagation ...
Testing cudnnGetConvolutionForwardAlgorithm ...
Fastest algorithm is Algo 1
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.134375 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.168437 time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.287084 time requiring 28800 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 2.512813 time requiring 207360 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 5: 12.629375 time requiring 203008 memory
Resulting weights from Softmax:
0.0000001 1.0000000 0.0000001 0.0000000 0.0000563 0.0000001 0.0000012 0.0000017 0.0000010 0.0000001
Loading image data/three_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000714 0.0000000 0.0000000 0.0000000 0.0000000
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006
Result of classification: 1 3 5
Test passed!
至此,基本組件檢查完畢