最近需要用到一台服务器的GPU跑实验,其间 COLMAP 编译过程出错,提示 cuda 版本不支持,cmake虽然通过了,但其实没有找到支持的CUDA架构。

  1. cv@cv:~/mvs_project/colmap/build$ cmake ..
  2. ...
  3. -- Automatic GPU detection failed. Building for common architectures.
  4. -- Autodetected CUDA architecture(s): 3.0;3.5;5.0;5.2;6.0;6.1;7.0;7.0+PTX
  5. -- Enabling CUDA support (version: 9.0, archs: sm_30 sm_35 sm_50 sm_52 sm_60 sm_61 sm_70 compute_70)
  6. ...
  1. cv@cv:~/mvs_project/colmap/build$ make
  2. [ %] Automatic rcc for target flann
  3. [ %] Built target flann_automoc
  4. [ %] Building CXX object lib/FLANN/CMakeFiles/flann.dir/flann.cpp.o
  5. [ %] Building C object lib/FLANN/CMakeFiles/flann.dir/ext/lz4.c.o
  6. [ %] Building C object lib/FLANN/CMakeFiles/flann.dir/ext/lz4hc.c.o
  7. [ %] Linking CXX static library libflann.a
  8. [ %] Built target flann
  9. [ %] Automatic rcc for target graclus
  10. [ %] Built target graclus_automoc
  11. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/util.c.o
  12. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mincover.c.o
  13. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kwayrefine.c.o
  14. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/refine.c.o
  15. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/ometis.c.o
  16. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mmatch.c.o
  17. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mutil.c.o
  18. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mpmetis.c.o
  19. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/balance.c.o
  20. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mfm2.c.o
  21. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mesh.c.o
  22. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/compress.c.o
  23. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/initpart.c.o
  24. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/subdomains.c.o
  25. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kwayvolfm.c.o
  26. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/fortran.c.o
  27. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/pmetis.c.o
  28. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kwayfm.c.o
  29. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/parmetis.c.o
  30. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/coarsen.c.o
  31. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mkwayfmh.c.o
  32. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mbalance2.c.o
  33. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mbalance.c.o
  34. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mmd.c.o
  35. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/pqueue.c.o
  36. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/estmem.c.o
  37. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/myqsort.c.o
  38. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kvmetis.c.o
  39. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/fm.c.o
  40. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/ccgraph.c.o
  41. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/minitpart2.c.o
  42. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/bucketsort.c.o
  43. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/graph.c.o
  44. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mrefine2.c.o
  45. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/frename.c.o
  46. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/stat.c.o
  47. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/debug.c.o
  48. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/srefine.c.o
  49. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/meshpart.c.o
  50. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mrefine.c.o
  51. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kwayvolrefine.c.o
  52. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/match.c.o
  53. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kmetis.c.o
  54. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mkwayrefine.c.o
  55. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/metis.c.o
  56. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mcoarsen.c.o
  57. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/timing.c.o
  58. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mfm.c.o
  59. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/memory.c.o
  60. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/minitpart.c.o
  61. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/sfm.c.o
  62. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mkmetis.c.o
  63. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/separator.c.o
  64. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/multilevelLib/wkkm.c.o
  65. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/multilevelLib/mlkkm.c.o
  66. [ %] Linking C static library libgraclus.a
  67. [ %] Built target graclus
  68. [ %] Automatic rcc for target lsd
  69. [ %] Built target lsd_automoc
  70. [ %] Building C object lib/LSD/CMakeFiles/lsd.dir/lsd.c.o
  71. [ %] Linking C static library liblsd.a
  72. [ %] Built target lsd
  73. [ %] Automatic rcc for target pba
  74. [ %] Built target pba_automoc
  75. [ %] Building NVCC (Device) object lib/PBA/CMakeFiles/pba.dir/pba_generated_ProgramCU.cu.o
  76. CMake Error at pba_generated_ProgramCU.cu.o.cmake: (message):
  77. Error generating
  78. /home/cv/mvs_project/colmap/build/lib/PBA/CMakeFiles/pba.dir//./pba_generated_ProgramCU.cu.o
  79.  
  80. lib/PBA/CMakeFiles/pba.dir/build.make:: recipe for target 'lib/PBA/CMakeFiles/pba.dir/pba_generated_ProgramCU.cu.o' failed
  81. make[]: *** [lib/PBA/CMakeFiles/pba.dir/pba_generated_ProgramCU.cu.o] Error
  82. CMakeFiles/Makefile2:: recipe for target 'lib/PBA/CMakeFiles/pba.dir/all' failed
  83. make[]: *** [lib/PBA/CMakeFiles/pba.dir/all] Error
  84. Makefile:: recipe for target 'all' failed
  85. make: *** [all] Error

colmap_build_error

于是又开始配置环境,首先根据自己机器配置NVIDIA官方网站下载 GeForce 驱动程序

>> 检查机器环境及配置

内核版本及操作系统信息

  1. cv@cv:~/mvs_project/colmap/build$ uname -r
    4.15.0-65-generic
  2.  
  3. cv@cv:~/mvs_project/colmap/build$ lsb_release -a
  4. No LSB modules are available.
  5. Distributor ID: Ubuntu
  6. Description: Ubuntu 16.04. LTS
  7. Release: 16.04
  8. Codename: xenial
  9.  
  10. cv@cv:~/mvs_project/colmap/build$ gcc --version
  11. gcc (Ubuntu 5.4.-6ubuntu1~16.04.) 5.4.
  12. Copyright (C) Free Software Foundation, Inc.
  13. This is free software; see the source for copying conditions. There is NO
  14. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

已经安装过显卡驱动的机器可以直接通过 nvidia-smi 命令显示显卡型号和驱动版本信息

  1. cv@cv:~/mvs_project/colmap/build$ nvidia-smi
  2. Sat Nov ::
  3. +-----------------------------------------------------------------------------+
  4. | NVIDIA-SMI 418.43 Driver Version: 418.43 CUDA Version: 10.1 |
  5. |-------------------------------+----------------------+----------------------+
  6. | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
  7. | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
  8. |===============================+======================+======================|
  9. | GeForce RTX Off | ::00.0 Off | N/A |
  10. | % 65C P0 1W / 210W | 0MiB / 7952MiB | % Default |
  11. +-------------------------------+----------------------+----------------------+
  12.  
  13. +-----------------------------------------------------------------------------+
  14. | Processes: GPU Memory |
  15. | GPU PID Type Process name Usage |
  16. |=============================================================================|
  17. | No running processes found |
  18. +-----------------------------------------------------------------------------+

对尚未安装过显卡驱动的机器,可以通过 lspci 指令查询,grep -i 的意思是忽略后面匹配项的大小写

  1. cv@cv:~/mvs_project/colmap/build$ lspci | grep -i vga | grep -i nvidia
  2. :00.0 VGA compatible controller: NVIDIA Corporation Device 1f07 (rev a1)

这里返回的是一串十六进制代码 1f07,跟我们平常所见略有不同,需要翻译一下,到 PCI devices 查询。打不开网页或者打开很慢的可以参考放在GitHub上的一份常见型号对应表

知道了自己的机器的配置就可以到上面给出的网站(https://www.geforce.cn/drivers)下载对应的驱动程序。

开始安装驱动之前的准备工作

>> 卸载旧版本或安装失败的驱动

  1. cv@cv:~/mvs_project/colmap/build$ cd
  2. cv@cv:~$ sudo ./NVIDIA-Linux-x86_64-418.43.run --uninstall

>> 安装可能需要的依赖

  1. cv@cv:~$ sudo apt update
  2. cv@cv:~$ sudo apt install dkms build-essential linux-headers-generic
  3. cv@cv:~$ sudo apt install gcc-multilib xorg-dev
  4. cv@cv:~$ sudo apt install freeglut3-dev libx11-dev libxmu-dev libxi-dev
  5. cv@cv:~$ sudo apt install libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

>> 禁用 NOUVEAU 驱动

直接使用 VIM 打开,没有该文件时自动新建

  1. cv@cv:~$ sudo vim /etc/modprobe.d/blacklist-nouveau.conf

在文件中添加如下内容,保存退出

  1. blacklist nouveau
  2. blacklist lbm-nouveau
  3. options nouveau modeset=
  4. alias nouveau off
  5. alias lbm-nouveau off

然后执行下面的指令,禁用 nouveau 内核模块,更新配置,重启

  1. cv@cv:~$ echo options nouveau modeset= | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
  2. cv@cv:~$ sudo update-initramfs -u
  3. cv@cv:~$ sudo reboot

CTRL+ALT+F1 进入命令行模式,输入下面的命令,如果没有任何显示则表明禁用驱动成功了。然后关闭图形界面,后面要记得重新打开。

  1. cv@cv:~$ lsmod | grep nouveau
  1. cv@cv:~$ sudo service lightdm stop

然后开始安装显卡驱动

  1. cv@cv:~$ chmod a+x NVIDIA-Linux-x86_64-418.43.run
  2. cv@cv:~$ sudo ./NVIDIA-Linux-x86_64-418.43.run --dkms --no-opengl-files

-dkms  默认开启。在 kernel 自行更新时将驱动程序安装至模块中,从而阻止驱动程序重新安装。

–no-opengl-files  表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环。因为NVIDIA的驱动默认会安装OpenGL,而Ubuntu的内核本身也有OpenGL且与GUI显示息息相关,

一旦NVIDIA的驱动覆盖了OpenGL,在GUI需要动态链接OpenGL库的时候就会出现问题。

–no-x-check  表示安装驱动时不检查X服务,非必需,已经禁用图形界面。

–no-nouveau-check  表示安装驱动时不检查nouveau,非必需,已经禁用nouveau驱动。

–disable-nouveau  禁用nouveau。非必需,因为之前已经手动禁用了nouveau。

安装过程中弹出pre-install script failed的信息,继续安装即可,没有影响。

dkms 选项选yes

32位兼容 选项选yes

x-org 选项保持默认选no

安装完成后打开图形桌面。

  1. cv@cv:~$ sudo service lightdm start
  2. cv@cv:~$ nvidia-smi

如果有显示GPU相关信息表示驱动安装成功。

卸载CUDA

首先卸载以前安装的或安装失败的CUDA,以便我们顺利进行下面的步骤,直接执行CUDA自带的卸载脚本。

  1. cv@cv:~$ sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9..pl

卸载完成后,清除残留文件夹。

  1. cv@cv:~$ sudo rm -rf /usr/local/cuda-9.0/

安装CUDA和CUDNN

>> 首先下载安装文件,我们要安装的是CUDA10.1和CUDNN7.6

根据对应关系到 CUDA 下载页面寻找自己需要的版本,比如我下载的是 CUDA Toolkit 10.1 update2,选择好操作系统,系统架构和安装类型之后下载即可。

到 CUDA Toolkit Archive 网站上下载

cuda_10.1.243_418.87.00_linux.run

然后下载CUDNN,需要注册或登录NVIDIA账号,看清楚版本,到 cuDNN Download 网站上 for CUDA 10.1 下载里面的三个deb安装包

libcudnn7_7.6.5.32-1+cuda10.1_amd64.deb

libcudnn7-dev_7.6.5.32-1+cuda10.1_amd64.deb

libcudnn7-doc_7.6.5.32-1+cuda10.1_amd64.deb

>> 然后开始安装 CUDA

  1. cv@cv:~$ sudo service lightdm stop
  2. cv@cv:~$ chmod a+x cuda_10..243_418..00_linux.run
  3. cv@cv:~$ sudo ./cuda_10..243_418..00_linux.run

是否同意条款 accept

选择安装界面,除了418.87取消勾选之外其他保持默认

剩下的都保持默认即可

然后打开配置文件,并在末尾添加链接路径,保存退出

  1. cv@cv:~$ vim ~/.bashrc
  2. export PATH=/usr/local/cuda-10.1/bin:$PATH
  3. export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

使生效

  1. cv@cv:~$ source ~/.bashrc

这是应该已经可以查看CUDA安装版本了

  1. cv@cv:~$ nvcc --version
  2. nvcc: NVIDIA (R) Cuda compiler driver
  3. Copyright (c) 20xx-20xx NVIDIA Corporation
  4. Built on Tue_Jan_10_13::03_CST_20xx
  5. Cuda compilation tools, release 10.1, V10..x

>> 接着安装 cuDNN

  1. cv@cv:~$ sudo dpkg -i libcudnn7_7.6.5.-+cuda10.1_amd64.deb
  2. cv@cv:~$ sudo dpkg -i libcudnn7-dev_7.6.5.-+cuda10.1_amd64.deb
  3. cv@cv:~$ sudo dpkg -i libcudnn7-doc_7.6.5.-+cuda10.1_amd64.deb

>> 打开图形界面

  1. cv@cv:~$ sudo service lightdm start

验证安装是否成功

>> CUDA 测试,进入到 CUDA 例程路径下,编译并测试

  1. cv@cv:~$ cd NVIDIA_CUDA-.1_Samples/
  2. cv@cv:~/NVIDIA_CUDA-.1_Samples$ make
  3. cv@cv:~/NVIDIA_CUDA-.1_Samples$ cd bin/x86_64/linux/release/
  1. cv@cv:~/NVIDIA_CUDA-.1_Samples/bin/x86_64/linux/release$ ./deviceQuery
  2. ./deviceQuery Starting...
  3.  
  4. CUDA Device Query (Runtime API) version (CUDART static linking)
  5.  
  6. Detected CUDA Capable device(s)
  7.  
  8. Device : "GeForce RTX 2070"
  9. CUDA Driver Version / Runtime Version 10.1 / 10.1
  10. CUDA Capability Major/Minor version number: 7.5
  11. Total amount of global memory: MBytes ( bytes)
  12. () Multiprocessors, ( ) CUDA Cores/MP: CUDA Cores
  13. GPU Max Clock rate: MHz (1.71 GHz)
  14. Memory Clock rate: Mhz
  15. Memory Bus Width: -bit
  16. L2 Cache Size: bytes
  17. Maximum Texture Dimension Size (x,y,z) 1D=(), 2D=(, ), 3D=(, , )
  18. Maximum Layered 1D Texture Size, (num) layers 1D=(), layers
  19. Maximum Layered 2D Texture Size, (num) layers 2D=(, ), layers
  20. Total amount of constant memory: bytes
  21. Total amount of shared memory per block: bytes
  22. Total number of registers available per block:
  23. Warp size:
  24. Maximum number of threads per multiprocessor:
  25. Maximum number of threads per block:
  26. Max dimension size of a thread block (x,y,z): (, , )
  27. Max dimension size of a grid size (x,y,z): (, , )
  28. Maximum memory pitch: bytes
  29. Texture alignment: bytes
  30. Concurrent copy and kernel execution: Yes with copy engine(s)
  31. Run time limit on kernels: No
  32. Integrated GPU sharing Host Memory: No
  33. Support host page-locked memory mapping: Yes
  34. Alignment requirement for Surfaces: Yes
  35. Device has ECC support: Disabled
  36. Device supports Unified Addressing (UVA): Yes
  37. Device supports Compute Preemption: Yes
  38. Supports Cooperative Kernel Launch: Yes
  39. Supports MultiDevice Co-op Kernel Launch: Yes
  40. Device PCI Domain ID / Bus ID / location ID: / /
  41. Compute Mode:
  42. < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
  43.  
  44. deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.1, CUDA Runtime Version = 10.1, NumDevs =
  45. Result = PASS
  1. cv@cv:~/NVIDIA_CUDA-.1_Samples/bin/x86_64/linux/release$ ./bandwidthTest
  2. [CUDA Bandwidth Test] - Starting...
  3. Running on...
  4.  
  5. Device : GeForce RTX
  6. Quick Mode
  7.  
  8. Host to Device Bandwidth, Device(s)
  9. PINNED Memory Transfers
  10. Transfer Size (Bytes) Bandwidth(GB/s)
  11. 12.8
  12.  
  13. Device to Host Bandwidth, Device(s)
  14. PINNED Memory Transfers
  15. Transfer Size (Bytes) Bandwidth(GB/s)
  16. 13.1
  17.  
  18. Device to Device Bandwidth, Device(s)
  19. PINNED Memory Transfers
  20. Transfer Size (Bytes) Bandwidth(GB/s)
  21. 382.0
  22.  
  23. Result = PASS
  24.  
  25. NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

>> cuDNN 测试

  1. cv@cv:~$ cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A -m
  2. #define CUDNN_MAJOR 7
  3. #define CUDNN_MINOR 6
  4. #define CUDNN_PATCHLEVEL 5
  1. cv@cv:~$ cp -r /usr/src/cudnn_samples_v7/ .
  2. cv@cv:~$ cd cudnn_samples_v7/mnistCUDNN/
  3. cv@cv:~$ make
  4. Linking agains cublasLt = true
  5. CUDA VERSION:
  6. TARGET ARCH: x86_64
  7. HOST_ARCH: x86_64
  8. TARGET OS: linux
  9. SMS:
  10. /usr/local/cuda/bin/nvcc -ccbin g++ -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -m64
  11. -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50
  12. -gencode arch=compute_53,code=sm_53 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61
  13. -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72
  14. -gencode arch=compute_75,code=sm_75 -gencode arch=compute_75,code=compute_75 -o fp16_dev.o -c fp16_dev.cu
  15. g++ -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -o fp16_emu.o -c fp16_emu.cpp
  16. g++ -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -o mnistCUDNN.o -c mnistCUDNN.cpp
  17. /usr/local/cuda/bin/nvcc -ccbin g++ -m64
  18. -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50
  19. -gencode arch=compute_53,code=sm_53 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61
  20. -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72
  21. -gencode arch=compute_75,code=sm_75 -gencode arch=compute_75,code=compute_75 -o mnistCUDNN fp16_dev.o fp16_emu.o mnistCUDNN.o
  22. -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include
  23. -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64 -lcublasLt -LFreeImage/lib/linux/x86_64
  24. -LFreeImage/lib/linux -lcudart -lcublas -lcudnn -lfreeimage -lstdc++ -lm
  1. cv@cv:~/cudnn_samples_v7/mnistCUDNN$ ./mnistCUDNN
  2. cudnnGetVersion() : , CUDNN_VERSION from cudnn.h : (7.6.)
  3. Host compiler version : GCC 5.4.
  4. There are CUDA capable devices on your machine :
  5. device : sms Capabilities 7.5, SmClock 1710.0 Mhz, MemSize (Mb) , MemClock 7001.0 Mhz, Ecc=, boardGroupID=
  6. Using device
  7.  
  8. Testing single precision
  9. Loading image data/one_28x28.pgm
  10. Performing forward propagation ...
  11. Testing cudnnGetConvolutionForwardAlgorithm ...
  12. Fastest algorithm is Algo
  13. Testing cudnnFindConvolutionForwardAlgorithm ...
  14. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.039040 time requiring memory
  15. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.100576 time requiring memory
  16. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.122400 time requiring memory
  17. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.130560 time requiring memory
  18. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.173888 time requiring memory
  19. Resulting weights from Softmax:
  20. 0.0000000 0.9999399 0.0000000 0.0000000 0.0000561 0.0000000 0.0000012 0.0000017 0.0000010 0.0000000
  21. Loading image data/three_28x28.pgm
  22. Performing forward propagation ...
  23. Resulting weights from Softmax:
  24. 0.0000000 0.0000000 0.0000000 0.9999288 0.0000000 0.0000711 0.0000000 0.0000000 0.0000000 0.0000000
  25. Loading image data/five_28x28.pgm
  26. Performing forward propagation ...
  27. Resulting weights from Softmax:
  28. 0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 0.9999820 0.0000154 0.0000000 0.0000012 0.0000006
  29.  
  30. Result of classification:
  31.  
  32. Test passed!
  33.  
  34. Testing half precision (math in single precision)
  35. Loading image data/one_28x28.pgm
  36. Performing forward propagation ...
  37. Testing cudnnGetConvolutionForwardAlgorithm ...
  38. Fastest algorithm is Algo
  39. Testing cudnnFindConvolutionForwardAlgorithm ...
  40. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.022528 time requiring memory
  41. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.061344 time requiring memory
  42. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.065536 time requiring memory
  43. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.070208 time requiring memory
  44. ^^^^ CUDNN_STATUS_SUCCESS for Algo : 0.082592 time requiring memory
  45. Resulting weights from Softmax:
  46. 0.0000001 1.0000000 0.0000001 0.0000000 0.0000563 0.0000001 0.0000012 0.0000017 0.0000010 0.0000001
  47. Loading image data/three_28x28.pgm
  48. Performing forward propagation ...
  49. Resulting weights from Softmax:
  50. 0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000714 0.0000000 0.0000000 0.0000000 0.0000000
  51. Loading image data/five_28x28.pgm
  52. Performing forward propagation ...
  53. Resulting weights from Softmax:
  54. 0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006
  55.  
  56. Result of classification:
  57.  
  58. Test passed!

当这些配置好之后,COLMAP 的编译就很顺利地通过了。

  1. cv@cv:~/mvs_project/colmap/build$ cmake ..
  2. -- The C compiler identification is GNU 5.4.
  3. -- The CXX compiler identification is GNU 5.4.
  4. -- Check for working C compiler: /usr/bin/cc
  5. -- Check for working C compiler: /usr/bin/cc -- works
  6. -- Detecting C compiler ABI info
  7. -- Detecting C compiler ABI info - done
  8. -- Detecting C compile features
  9. -- Detecting C compile features - done
  10. -- Check for working CXX compiler: /usr/bin/c++
  11. -- Check for working CXX compiler: /usr/bin/c++ -- works
  12. -- Detecting CXX compiler ABI info
  13. -- Detecting CXX compiler ABI info - done
  14. -- Detecting CXX compile features
  15. -- Detecting CXX compile features - done
  16. -- Found installed version of Eigen: /usr/lib/cmake/eigen3
  17. -- Found required Ceres dependency: Eigen version 3.2. in /usr/include/eigen3
  18. -- Found required Ceres dependency: glog
  19. -- Performing Test GFLAGS_IN_GOOGLE_NAMESPACE
  20. -- Performing Test GFLAGS_IN_GOOGLE_NAMESPACE - Success
  21. -- Found required Ceres dependency: gflags
  22. -- Found Ceres version: 1.14. installed in: /usr/local with components: [EigenSparse, SparseLinearAlgebraLibrary, LAPACK, SuiteSparse, CXSparse, SchurSpecializations, OpenMP, Multithreading]
  23. -- Boost version: 1.58.
  24. -- Found the following Boost libraries:
  25. -- program_options
  26. -- filesystem
  27. -- graph
  28. -- regex
  29. -- system
  30. -- unit_test_framework
  31. -- Found Eigen3: /usr/include/eigen3 (Required is at least version "2.91.0")
  32. -- Found Eigen
  33. -- Includes : /usr/include/eigen3
  34. -- Found FreeImage
  35. -- Includes : /usr/include
  36. -- Libraries : /usr/lib/x86_64-linux-gnu/libfreeimage.so
  37. -- Found Glog
  38. -- Includes : /usr/include
  39. -- Libraries : /usr/lib/x86_64-linux-gnu/libglog.so
  40. -- Found OpenGL: /usr/lib/x86_64-linux-gnu/libGL.so
  41. -- Found Glew
  42. -- Includes : /usr/include
  43. -- Libraries : /usr/lib/x86_64-linux-gnu/libGLEW.so
  44. -- Found Git: /usr/bin/git (found version "2.7.4")
  45. -- Found Threads: TRUE
  46. -- Found Qt
  47. -- Module : /usr/lib/x86_64-linux-gnu/cmake/Qt5Core
  48. -- Module : /usr/lib/x86_64-linux-gnu/cmake/Qt5OpenGL
  49. -- Module : /usr/lib/x86_64-linux-gnu/cmake/Qt5Widgets
  50. -- Found CGAL
  51. -- Includes : /usr/include
  52. -- Libraries : /usr/lib/x86_64-linux-gnu/libCGAL.so.11.0.
  53. -- Build type not specified, using Release
  54. -- Enabling SIMD support
  55. -- Enabling OpenMP support
  56. -- Disabling interprocedural optimization
  57. -- Autodetected CUDA architecture(s): 7.5
  58. -- Enabling CUDA support (version: 10.1, archs: sm_75)
  59. -- Enabling OpenGL support
  60. -- Disabling profiling support
  61. -- Enabling CGAL support
  62. -- Configuring done
  63. -- Generating done
  64. -- Build files have been written to: /home/cv/mvs_project/colmap/build
  65.  
  66. cv@cv:~/mvs_project/colmap/build$ make
  67. Scanning dependencies of target flann_automoc
  68. [ %] Automatic rcc for target flann
  69. [ %] Built target flann_automoc
  70. Scanning dependencies of target flann
  71. [ %] Building CXX object lib/FLANN/CMakeFiles/flann.dir/flann.cpp.o
  72. [ %] Building C object lib/FLANN/CMakeFiles/flann.dir/ext/lz4.c.o
  73. [ %] Building C object lib/FLANN/CMakeFiles/flann.dir/ext/lz4hc.c.o
  74. [ %] Linking CXX static library libflann.a
  75. [ %] Built target flann
  76. Scanning dependencies of target graclus_automoc
  77. [ %] Automatic rcc for target graclus
  78. [ %] Built target graclus_automoc
  79. Scanning dependencies of target graclus
  80. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/util.c.o
  81. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mincover.c.o
  82. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kwayrefine.c.o
  83. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/refine.c.o
  84. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/ometis.c.o
  85. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mmatch.c.o
  86. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mutil.c.o
  87. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mpmetis.c.o
  88. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/balance.c.o
  89. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mfm2.c.o
  90. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mesh.c.o
  91. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/compress.c.o
  92. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/initpart.c.o
  93. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/subdomains.c.o
  94. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kwayvolfm.c.o
  95. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/fortran.c.o
  96. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/pmetis.c.o
  97. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kwayfm.c.o
  98. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/parmetis.c.o
  99. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/coarsen.c.o
  100. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mkwayfmh.c.o
  101. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mbalance2.c.o
  102. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mbalance.c.o
  103. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mmd.c.o
  104. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/pqueue.c.o
  105. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/estmem.c.o
  106. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/myqsort.c.o
  107. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kvmetis.c.o
  108. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/fm.c.o
  109. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/ccgraph.c.o
  110. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/minitpart2.c.o
  111. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/bucketsort.c.o
  112. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/graph.c.o
  113. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mrefine2.c.o
  114. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/frename.c.o
  115. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/stat.c.o
  116. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/debug.c.o
  117. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/srefine.c.o
  118. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/meshpart.c.o
  119. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mrefine.c.o
  120. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kwayvolrefine.c.o
  121. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/match.c.o
  122. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/kmetis.c.o
  123. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mkwayrefine.c.o
  124. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/metis.c.o
  125. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mcoarsen.c.o
  126. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/timing.c.o
  127. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mfm.c.o
  128. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/memory.c.o
  129. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/minitpart.c.o
  130. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/sfm.c.o
  131. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/mkmetis.c.o
  132. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/metisLib/separator.c.o
  133. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/multilevelLib/wkkm.c.o
  134. [ %] Building C object lib/Graclus/CMakeFiles/graclus.dir/multilevelLib/mlkkm.c.o
  135. [ %] Linking C static library libgraclus.a
  136. [ %] Built target graclus
  137. Scanning dependencies of target lsd_automoc
  138. [ %] Automatic rcc for target lsd
  139. [ %] Built target lsd_automoc
  140. Scanning dependencies of target lsd
  141. [ %] Building C object lib/LSD/CMakeFiles/lsd.dir/lsd.c.o
  142. [ %] Linking C static library liblsd.a
  143. [ %] Built target lsd
  144. Scanning dependencies of target pba_automoc
  145. [ %] Automatic rcc for target pba
  146. [ %] Built target pba_automoc
  147. [ %] Building NVCC (Device) object lib/PBA/CMakeFiles/pba.dir/pba_generated_ProgramCU.cu.o
  148. Scanning dependencies of target pba
  149. [ %] Building CXX object lib/PBA/CMakeFiles/pba.dir/ConfigBA.cpp.o
  150. [ %] Building CXX object lib/PBA/CMakeFiles/pba.dir/CuTexImage.cpp.o
  151. [ %] Building CXX object lib/PBA/CMakeFiles/pba.dir/pba.cpp.o
  152. [ %] Building CXX object lib/PBA/CMakeFiles/pba.dir/SparseBundleCPU.cpp.o
  153. [ %] Building CXX object lib/PBA/CMakeFiles/pba.dir/SparseBundleCU.cpp.o
  154. [ %] Linking CXX static library libpba.a
  155. [ %] Built target pba
  156. Scanning dependencies of target poisson_recon_automoc
  157. [ %] Automatic rcc for target poisson_recon
  158. [ %] Built target poisson_recon_automoc
  159. Scanning dependencies of target poisson_recon
  160. [ %] Building CXX object lib/PoissonRecon/CMakeFiles/poisson_recon.dir/CmdLineParser.cpp.o
  161. [ %] Building CXX object lib/PoissonRecon/CMakeFiles/poisson_recon.dir/Factor.cpp.o
  162. [ %] Building CXX object lib/PoissonRecon/CMakeFiles/poisson_recon.dir/Geometry.cpp.o
  163. [ %] Building CXX object lib/PoissonRecon/CMakeFiles/poisson_recon.dir/MarchingCubes.cpp.o
  164. [ %] Building CXX object lib/PoissonRecon/CMakeFiles/poisson_recon.dir/PlyFile.cpp.o
  165. [ %] Building CXX object lib/PoissonRecon/CMakeFiles/poisson_recon.dir/PoissonRecon.cpp.o
  166. [ %] Building CXX object lib/PoissonRecon/CMakeFiles/poisson_recon.dir/SurfaceTrimmer.cpp.o
  167. [ %] Linking CXX static library libpoisson_recon.a
  168. [ %] Built target poisson_recon
  169. Scanning dependencies of target sift_gpu_automoc
  170. [ %] Automatic rcc for target sift_gpu
  171. [ %] Built target sift_gpu_automoc
  172. [ %] Building NVCC (Device) object lib/SiftGPU/CMakeFiles/sift_gpu.dir/sift_gpu_generated_ProgramCU.cu.o
  173. Scanning dependencies of target sift_gpu
  174. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/FrameBufferObject.cpp.o
  175. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/GlobalUtil.cpp.o
  176. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/GLTexImage.cpp.o
  177. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/ProgramGLSL.cpp.o
  178. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/PyramidGL.cpp.o
  179. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/ShaderMan.cpp.o
  180. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/SiftGPU.cpp.o
  181. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/SiftMatch.cpp.o
  182. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/SiftPyramid.cpp.o
  183. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/CuTexImage.cpp.o
  184. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/PyramidCU.cpp.o
  185. [ %] Building CXX object lib/SiftGPU/CMakeFiles/sift_gpu.dir/SiftMatchCU.cpp.o
  186. [ %] Linking CXX static library libsift_gpu.a
  187. [ %] Built target sift_gpu
  188. Scanning dependencies of target sqlite3_automoc
  189. [ %] Automatic rcc for target sqlite3
  190. [ %] Built target sqlite3_automoc
  191. Scanning dependencies of target sqlite3
  192. [ %] Building C object lib/SQLite/CMakeFiles/sqlite3.dir/sqlite3.c.o
  193. [ %] Linking C static library libsqlite3.a
  194. [ %] Built target sqlite3
  195. Scanning dependencies of target vlfeat_automoc
  196. [ %] Automatic rcc for target vlfeat
  197. [ %] Built target vlfeat_automoc
  198. ...

colmap_build


参考资料

[1] NVIDIA DEVELOPER

[2] CUDA TOOLKIT DOCUMENTATION

[3] Linux(Ubuntu)系统查看显卡型号

[4] 最全面解析 Ubuntu 16.04 安装nvidia驱动 以及各种错误

[5] Ubuntu安装和卸载CUDA和CUDNN

[6] Ubuntu server16.04安装配置驱动418.87、cuda10.1、cudnn7.6.4.38、anaconda、pytorch超详细解决

[7] Ubuntu 16.04 安装 CUDA10.1 (解决循环登陆的问题)

[8] 【目标检测】Ubuntu16.04+RTX2070+CUDA10.0+pytorch1.1搭建CenterNet环境

Ubuntu16.04+GTX2070+Driver418.43+CUDA10.1+cuDNN7.6的更多相关文章

  1. 深度学习环境配置:Ubuntu16.04下安装GTX1080Ti+CUDA9.0+cuDNN7.0完整安装教程(多链接多参考文章)

    本来就对Linux不熟悉,经过几天惨痛的教训,参考了不知道多少篇文章,终于把环境装好了,每篇文章或多或少都有一些用,但没有一篇完整的能解决我安装过程碰到的问题,所以决定还是自己写一篇我安装过程的教程, ...

  2. Ubuntu16.04下nvidia驱动+nvidia-docker+cuda9+cudnn7安装

    一.宿主机安装nvidia驱动 打开终端,先删除旧的驱动: sudo apt-get purge nvidia* 禁用自带的 nouveau nvidia驱动 sudo gedit /etc/modp ...

  3. (解决某些疑难杂症)Ubuntu16.04 + NVIDIA显卡驱动 + cuda10 + cudnn 安装教程

    一.NVIDIA显卡驱动 打开终端,输入: sudo nautilus 在新打开的文件夹中,进入以下路径(不要用命令行): 左下角点计算机,lib,modules 这时会有几个文件夹,对每个文件夹都进 ...

  4. ubuntu16.04 安装NVIDIA和CUDA9.2 cudNN7.1

    1.安装NVIDIA驱动 (1)查询NVIDIA驱动 首先去官网(http://www.nvidia.com/Download/index.aspx?lang=en-us)查看适合自己显卡的驱动(下载 ...

  5. 【MindSpore】Ubuntu16.04上成功安装GPU版MindSpore1.0.1

    本文是在宿主机Ubuntu16.04上拉取cuda10.1-cudnn7-ubuntu18.04的镜像,在容器中通过Miniconda3创建python3.7.5的环境并成功安装mindspore_g ...

  6. ubuntu16.04配置tensorflow-gpu环境

    1.安装驱动 参考: 史上最全的ubuntu16.04安装nvidia驱动+cuda9.0+cuDnn7.0 https://blog.csdn.net/qq_31215157/article/det ...

  7. Ubuntu16.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook 深度学习环境配置

    目录 一.Ubuntu16.04 LTS系统的安装 二.设置软件源的国内镜像 1. 设置方法 2.关于ubuntu镜像的小知识 三.Nvidia显卡驱动的安装 1. 首先查看显卡型号和推荐的显卡驱动 ...

  8. Ubuntu16.04安装cuda9.0+cudnn7.0

    Ubuntu16.04安装cuda9.0+cudnn7.0 这篇记录拖了好久,估计是去年6月份就已经安装过几遍,然后一方面因为俺比较懒,一方面后面没有经常在自己电脑上跑算法,比较少装cuda和cudn ...

  9. ubuntu16.04+cuda9+cudnn7+tensorflow+pycharm环境搭建

    安装环境:ubuntu16.04+cuda9+cudnn7+tensorflow+pycharm 1)前期搭建过程主要是按照这篇博文,对于版本选择,安装步骤都讲得很详细,亲测有效! https://b ...

随机推荐

  1. UDP 协议的那点事儿

    最近在回顾计算机网络的知识,以前上课没有认真学,只记得几个高大上的术语,所以趁着这次回顾,把学到的知识用博客的形式记录下来,一来加深自己的印象,二来希望让你对这些基础知识有一个更深入的了解.当然,我会 ...

  2. API规范约定

    为了高效开发,节约编写文档的成本,API服务使用Swagger来描述 一.API设计原则 控制API的粒度和数量 命名要遵循简单.可读.统一原则: 优先设计API,然后编码 二.URL设计[针对后端开 ...

  3. usermod命令、用户密码管理、mkpasswd命令 使用介绍

    第3周第2次课(4月3日) 课程内容:3.4 usermod命令3.5 用户密码管理3.6 mkpasswd命令 3.4 usermod命令 usermod可以修改用户的UID和GID 命令使用格式: ...

  4. vim介绍、颜色显示和移动光标、一般模式下移动光标及复制、剪切和粘贴

    第4周第4次课(4月12日) 课程内容: 5.1 vim介绍5.2 vim颜色显示和移动光标5.3 vim一般模式下移动光标5.4 vim一般模式下复制.剪切和粘贴 5.1 vim介绍 centos7 ...

  5. split分割(拆分)文件

    split分割(拆分)文件 需求:指定文件大小拆分文件 # ll -h test/ |grep vmcore -rw-r--r-- 1 root root  12G 12月  7 00:20 vmco ...

  6. MyBatis开发Dao的原始Dao开发和Mapper动态代理开发

    目录 咳咳...初学者看文字(Mapper接口开发四个规范)属实有点费劲,博主我就废了点劲做了如下图,方便理解: 原始Dao开发方式 1. 编写映射文件 3.编写Dao实现类 4.编写Dao测试 Ma ...

  7. redis数据类型--hash

    /** Redis应用之Hash数据类型* 问题1:操作命令* 问题2:存储实现原理和数据结构* 问题3:应用场景* */ 先了解下什么是hash,什么是hash碰撞:hash:是包含键值对的kv的数 ...

  8. docker的安装及常用命令

    一:概述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用 ...

  9. 【原创】(十三)Linux内存管理之vma/malloc/mmap

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  10. [TimLinux] JavaScript AJAX接收到的数据转换为JSON格式

    1. 接收数据 AJAX接收数据是通过xhr.responseText属性,这是一个属性不是一个方法,这个属性得到的数据为字符串. 2. 字符串内容 当服务器发送的是一个JsonResponse({' ...