±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ×÷ÕßÖìÌì˳,±¾ÎĽ«½éÉÜ»ùÓÚ²úÆ·»¯ÔÆÆ½Ì¨¡ª¡ªZStack£¬À´¹¹½¨¶Ô³õѧÕßÓѺá¢Ò×ÔËά¡¢Ò×ʹÓõÄÉî¶ÈÑ§Ï°ÔÆÆ½ |
|
ǰÑÔ
Éî¶ÈѧϰÊÇ»úÆ÷ѧϰºÍÈ˹¤ÖÇÄÜÑо¿µÄÈÈÃÅ·ÖÖ§£¬Ò²Êǵ±½ñ×îÁ÷ÐеĿÆÑ§Ñо¿Ç÷ÊÆÖ®Ò»¡£Éî¶Èѧϰ·½·¨Îª¼ÆËã»úÊÓ¾õ¡¢»úÆ÷ѧϰ´øÀ´Á˸ïÃüÐԵĽø²½£¬¶øÐµÄÉî¶Èѧϰ¼¼ÊõÒ²ÕýÔÚ²»¶Ïµ®Éú¡£ÓÉÓÚÉî¶ÈѧϰÕý¿ìËÙ·¢Õ¹£¬ÐµÄÑо¿ÕߺÜÄѶÔÕâÒ»¼¼Êõʵʱ¸ú½ø¡£¹úÄÚ¸÷´ó¹«ÓÐÔÆ³§É̶¼ÌṩÁËÏàÓ¦µÄÉî¶ÈѧϰÏà¹Ø²úÆ·£¬µ«¶ÔÓÚ³õѧÕß²¢²»ÄÇôʵÓᣱ¾ÎĽ«½éÉÜ»ùÓÚ²úÆ·»¯ÔÆÆ½Ì¨¡ª¡ªZStack£¬À´¹¹½¨¶Ô³õѧÕßÓѺá¢Ò×ÔËά¡¢Ò×ʹÓõÄÉî¶ÈÑ§Ï°ÔÆÆ½Ì¨¡£
ÓÉÓÚZStackµÄÇáÁ¿ÐÔ£¬ÎÒÃǽöͨ¹ýһ̨ÆÕͨPC»ú¾ÍÄܲ¿ÊðÔÆÆ½Ì¨£¬½ø¶øÊµÏÖÉî¶Èѧϰƽ̨¹¹½¨¡£¶ÁÕ߿ɽáºÏ±¾ÎÄÇáËÉÀ©Õ¹³ö¹æÄ£¸ü´ó¡¢¹¦ÄܸüΪÍ걸µÄÉî¶ÈÑ§Ï°ÔÆÆ½Ì¨¡£
1 ¡¢ZStack¼ò½é
ZStackÊÇÏÂÒ»´ú¿ªÔ´µÄÔÆ¼ÆËãIaaS£¨»ù´¡¼Ü¹¹¼´·þÎñ£©Èí¼þ¡£ËüÖ÷ÒªÃæÏòδÀ´µÄÖÇÄÜÊý¾ÝÖÐÐÄ£¬Í¨¹ýÌáÁé»îÍêÉÆµÄAPIsÀ´¹ÜÀí°üÀ¨¼ÆËã¡¢´æ´¢ºÍÍøÂçÔÚÄÚµÄÊý¾ÝÖÐÐÄ×ÊÔ´¡£Óû§¿ÉÒÔÀûÓÃZStack¿ìËÙ¹¹½¨×Ô¼ºµÄÖÇÄÜÔÆÊý¾ÝÖÐÐÄ£¬Ò²¿ÉÒÔÔÚÎȶ¨µÄZStackÖ®ÉϴÁé»îµÄÔÆÓ¦Óó¡¾°¡£
ZStack¹¦Äܼܹ¹

ZStack²úÆ·ÓÅÊÆ£º
ZStackÊÇ»ùÓÚרÓÐÔÆÆ½Ì¨4S£¨Simple¼òµ¥£¬Strong½¡×³£¬Scalableµ¯ÐÔ£¬SmartÖÇÄÜ£©±ê×¼Éè¼ÆµÄÏÂÒ»´úÔÆÆ½Ì¨IaaSÈí¼þ¡£
1. ¼òµ¥£¨Simple£©
¼òµ¥°²×°²¿Êð£ºÌṩ°²×°ÎļþÍøÂçÏÂÔØ£¬30·ÖÖÓÍê³É´ÓÂã»úµ½ÔÆÆ½Ì¨µÄ°²×°²¿Êð¡£
¼òµ¥´î½¨ÔÆÆ½Ì¨£ºÖ§³ÖÔÆÖ÷»úµÄÅúÁ¿£¨Éú³É£¬É¾³ýµÈ£©²Ù×÷£¬ÌṩÁбíչʾºÍ»¬´°ÏêÇé¡£
¼òµ¥ÊµÓòÙ×÷£ºÏêϸµÄÓû§Êֲᣬ×ãÁ¿µÄ°ïÖúÐÅÏ¢£¬Á¼ºÃµÄÉçÇø£¬±ê×¼µÄAPIÌṩ¡£
ÓѺÃUI½»»¥£ºÉè¼Æ¾«Á¼µÄרҵ²Ù×÷½çÃæ£¬¾«¼ò²Ù×÷ʵÏÖÇ¿´óµÄ¹¦ÄÜ¡£
2. ½¡×³£¨Strong£©
Îȶ¨ÇÒ¸ßЧµÄϵͳ¼Ü¹¹Éè¼Æ£ºÓµÓÐÈ«Òì²½µÄºǫ́¼Ü¹¹£¬½ø³ÌÄÚ΢·þÎñ¼Ü¹¹£¬ÎÞËø¼Ü¹¹£¬ÎÞ״̬·þÎñ¼Ü¹¹£¬Ò»ÖÂÐÔ¹þÏ£»·£¬±£Ö¤ÏµÍ³¼Ü¹¹µÄ¸ßЧÎȶ¨¡£Ä¿Ç°ÒÑʵÏÖ£ºµ¥¹ÜÀí½Úµã¹ÜÀíÉÏÍǫ̀ÎïÀíÖ÷»ú¡¢ÊýÊ®ÍòÌ¨ÔÆÖ÷»ú£»¶ø¶à¸ö¹ÜÀí½Úµã¹¹½¨µÄ¼¯ÈºÊ¹ÓÃÒ»¸öÊý¾Ý¿â¡¢Ò»Ì×ÏûÏ¢×ÜÏ߿ɹÜÀíÊ®Íǫ̀ÎïÀíÖ÷»ú¡¢Êý°ÙÍòÌ¨ÔÆÖ÷»ú¡¢²¢·¢´¦ÀíÊýÍò¸öAPI¡£
Ö§³Å¸ß²¢·¢µÄAPIÇëÇ󣺵¥ZStack¹ÜÀí½Úµã¿ÉÒÔÇáËÉ´¦ÀíÿÃëÉÏÍò¸ö²¢·¢APIµ÷ÓÃÇëÇó¡£
Ö§³ÖHAµÄÑϸñÒªÇó£ºÔÚÍøÂç»ò½ÚµãʧЧÇé¿öÏ£¬ÒµÎñÔÆÖ÷»ú¿É×Ô¶¯Çл»µ½ÆäËü½¡¿µ½ÚµãÔËÐУ»ÀûÓùÜÀí½ÚµãÐéÄ⻯ʵÏÖÁ˵¥¹ÜÀí½ÚµãµÄ¸ß¿ÉÓ㬹ÊÕÏʱ֧³Ö¹ÜÀí½Úµã¶¯Ì¬Ç¨ÒÆ¡£
3. µ¯ÐÔ£¨Scalable£©
Ö§³Å¹æÄ£ÎÞÏÞÖÆ£ºµ¥¹ÜÀí½Úµã¿É¹ÜÀí´Óһ̨µ½ÉÏÍǫ̀ÎïÀíÖ÷»ú£¬ÊýÊ®ÍòÌ¨ÔÆÖ÷»ú¡£
È«API½»¸¶£ºZStackÌṩÁËÈ«Ì×IaaS API£¬Óû§¿ÉʹÓÃÕâЩAPIsÍê³ÉÈ«ÐÂ¿çµØÓòµÄ¿ÉÓÃÇøÓò´î½¨¡¢
ÍøÂçÅäÖñä¸ü¡¢ÒÔ¼°ÎïÀí·þÎñÆ÷µÄÉý¼¶¡£
×ÊÔ´¿É°´Ðèµ÷Åä£ºÔÆÖ÷»úºÍÔÆ´æ´¢µÈÖØÒª×ÊÔ´¿É¸ù¾ÝÓû§ÐèÇó½øÐÐÀ©ËõÈÝ¡£ZStack²»½öÖ§³Ö¶ÔÔÆÖ÷
»úµÄCPU¡¢ÄÚ´æµÈ×ÊÔ´½øÐÐÔÚÏ߸ü¸Ä£¬»¹¿É¶ÔÔÆÖ÷»úµÄÍøÂç´ø¿í¡¢´ÅÅÌ´ø¿íµÈ×ÊÔ´½øÐж¯Ì¬µ÷Õû¡£
4. ÖÇÄÜ£¨Smart£©
×Ô¶¯»¯ÔËά¹ÜÀí£ºÔÚZStack»·¾³ÀһÇÐÓÉAPIsÀ´¹ÜÀí¡£ZStackÀûÓÃAnsible¿âʵÏÖÈ«×Ô¶¯²¿ÊðºÍ
Éý¼¶£¬×Ô¶¯Ì½²âºÍÖØÁ¬£¬ÔÚÍøÂç¶¶¶¯»òÎïÀíÖ÷»úÖØÆôºóÄÜ×Ô¶¯»ØÁ¬¸÷½Úµã¡£ÆäÖж¨Ê±ÈÎÎñÖ§³Ö¶¨Ê±
¿ª¹ØÔÆÖ÷»úÒÔ¼°¶¨Ê±¶ÔÔÆÖ÷»ú¿ìÕÕµÈÂÖѯ²Ù×÷¡£
ÔÚÏßÎÞ·ìÉý¼¶£º5·ÖÖÓÒ»¼üÎÞ·ìÉý¼¶£¬Óû§Ö»ÐèÉý¼¶¹Ü¿Ø½Úµã¡£¼ÆËã½Úµã¡¢´æ´¢½Úµã¡¢ÍøÂç½ÚµãÔÚ
¹Ü¿ØÈí¼þÆô¶¯ºó×Ô¶¯Éý¼¶¡£
ÖÇÄÜ»¯µÄUI½»»¥½çÃæ£ºÊµÊ±µÄ×ÊÔ´¼ÆË㣬±ÜÃâÓû§Îó²Ù×÷¡£
ʵʱµÄÈ«¾Ö¼à¿Ø£ºÊµÊ±ÕÆÎÕÕû¸öÔÆÆ½Ì¨µ±Ç°ÏµÍ³×ÊÔ´µÄÏûºÄÇé¿ö£¬Í¨¹ýʵʱ¼à¿Ø£¬ÖÇÄÜ»¯µ÷Å䣬´Ó
¶ø½ÚÊ¡ITµÄÈíÓ²¼þ×ÊÔ´¡£
0x2 ¹¹½¨Éî¶Èѧϰƽ̨
2.1 ×é¼þ²¿Êð½éÉÜ
TensorFlow
ÊÇÒ»¸ö¿ª·ÅÔ´´úÂëÈí¼þ¿â£¬ÓÃÓÚ½øÐиßÐÔÄÜÊýÖµ¼ÆËã¡£½èÖúÆäÁé»îµÄ¼Ü¹¹£¬Óû§¿ÉÒÔÇáËɵؽ«¼ÆË㹤×÷²¿Êðµ½¶àÖÖÆ½Ì¨£¨CPU¡¢GPU¡¢TPU£©ºÍÉ豸£¨×ÀÃæÉ豸¡¢·þÎñÆ÷¼¯Èº¡¢Òƶ¯É豸¡¢±ßÔµÉ豸µÈ£©¡£TensorFlow×î³õÊÇÓÉ
Google Brain ÍŶÓÖеÄÑо¿ÈËÔ±ºÍ¹¤³Ìʦ¿ª·¢µÄ£¬¿ÉΪ»úÆ÷ѧϰºÍÉî¶ÈѧϰÌṩǿÁ¦Ö§³Ö£¬²¢ÇÒÆäÁé»îµÄÊýÖµ¼ÆËãºËÐĹ㷺ӦÓÃÓÚÐí¶àÆäËû¿ÆÑ§ÁìÓò¡£
cuDNN
NVIDIA CUDAÉî²ãÉñ¾ÍøÂç¿â£¨cuDNN£©ÊÇÒ»ÖÖÓÃÓÚÉî²ãÉñ¾ÍøÂçµÄGPU¼ÓËÙ¿âÔʼͼÐΡ£cuDNNΪ±ê×¼Àý³ÌÌṩÁ˸߶ȵ÷ÓŵÄʵÏÖ£¬ÈçǰÏòºÍºóÏò¾í»ý¡¢³Ø»¯¡¢¹éÒ»»¯ºÍ¼¤»î²ã¡£cuDNNÊÇNVIDIAÉî¶ÈѧϰSDKµÄÒ»²¿·Ö¡£
TensorBoard
ÊÇÒ»¸ö¿ÉÊÓ»¯¹¤¾ß£¬Äܹ»ÓÐЧµØÕ¹Ê¾TensorflowÔÚÔËÐйý³ÌÖеļÆËãͼ¡¢¸÷ÖÖÖ¸±êËæ×Åʱ¼äµÄ±ä»¯Ç÷ÊÆÒÔ¼°ÑµÁ·ÖÐʹÓõ½µÄÊý¾ÝÐÅÏ¢¡£
Jupyter
JupyterÊÇÒ»¸ö½»»¥Ê½µÄ±Ê¼Ç±¾£¬¿ÉÒԺܷ½±ãµØ´´½¨ºÍ¹²ÏíÎÄѧ»¯³ÌÐòÎĵµ£¬Ö§³Öʵʱ´úÂ룬Êýѧ·½³Ì£¬¿ÉÊÓ»¯ºÍ
markdown¡£Ò»°ãÓÃÓë×öÊý¾ÝÇåÀíºÍת»»£¬ÊýֵģÄ⣬ͳ¼Æ½¨Ä££¬»úÆ÷ѧϰµÈµÈ¡£
2.2 ÔÆÆ½Ì¨»·¾³×¼±¸
»·¾³½éÉÜ
±¾´ÎʹÓÃÈçÏÂÅäÖù¹½¨Éî¶Èѧϰƽ̨£º

±¾´ÎʹÓÃһ̨ÆÕͨPC»ú²¿ÊðZStackÔÆÆ½Ì¨£¬Ê¹ÓÃÔÆÆ½Ì¨ÖÐGPU͸´«¹¦Äܽ«Ò»¿éNVIDIA QuadroP2000ÏÔ¿¨Í¸´«¸øÒ»¸öCentOS7.4ÐéÄâ»ú£¬½øÐÐÆ½Ì¨µÄ¹¹½¨¡£
ZStackÔÆÆ½Ì¨²¿Êð²½ÖèÏêÇé²Î¿¼¹Ù·½Îĵµ£ºhttps://www.zstack.io/help/product_manuals/user_guide/3.html#c3
2.2.1 ´´½¨ÔÆÖ÷»ú


Ñ¡Ôñ¡°ÔÆ×ÊÔ´³Ø¡±µã»÷¡°ÔÆÖ÷»ú¡±µã»÷¡°´´½¨ÔÆÖ÷»ú°´Å¥¡±´ò¿ªÔÆÖ÷»ú´´½¨Ò³Ã棻
´´½¨ÔÆÖ÷»úµÄ²½Ö裺
1¡¢Ñ¡ÔñÌí¼Ó·½Ê½£» ƽ̨֧³Ö´´½¨µ¥¸öÔÆÖ÷»úºÍ´´½¨¶à¸öÔÆÖ÷»ú£¬¸ù¾ÝÐèÇó½øÐÐÑ¡Ôñ¡£
2¡¢ÉèÖÃÔÆÖ÷»úÃû³Æ£»ÔÚÉèÖÃÃû³ÆÊ±½¨ÒéÒÔÒµÎñϵͳÃû³Æ½øÐÐÃüÃû£¬·½±ã¹ÜÀíÔËά¡£
3¡¢Ñ¡Ôñ¼ÆËã¹æ¸ñ£»¸ù¾Ý¶¨ÒåµÄ¼ÆËã¹æ¸ñ½áºÏÒµÎñÐèÇóÑ¡ÔñÊʺϵļÆËã¹æ¸ñ¡£
4¡¢Ñ¡Ôñ¾µÏñÄ£°å£»¸ù¾ÝÒµÎñÐèÇóÑ¡ÔñÏàÓ¦µÄ¾µÏñÄ£°å¡£
5¡¢Ñ¡ÔñÈý²ãÍøÂ磻ÔÚа汾ÖÐÆ½Ì¨Èý²ãÍøÂçͬʱ֧³ÖIPv4ºÍIPv6£¬Çë¸ù¾Ý×ÔÉíÒµÎñÐèÇó½øÐÐÑ¡Ôñ£»Í¬Ê±Ò²¿ÉÒÔÔÚ´´½¨ÔÆÖ÷»ú¹ý³ÌÖÐÉèÖÃÍø¿¨ÊôÐÔ¡£
6¡¢È·ÈÏÅäÖÃÎÞÎóºóµã»÷¡°È·¶¨¡±¿ªÊ¼´´½¨¡£
2.2.2 ͸´«GPU²Ù×÷

µã»÷ÔÆÖ÷»úÃû³Æµã»÷ÅäÖÃÐÅÏ¢£»

ÕÒµ½GPUÉ豸±êÇ©£¬µã»÷²Ù×÷Ñ¡Ôñ¼ÓÔØ£¬È»ºóÑ¡ÔñÏàÓ¦µÄGPUÉ豸¸øÔÆÖ÷»úÖ±½ÓʹÓá£
0x3 ¿ªÊ¼²¿Êð
3.1 ÔËÐл·¾³×¼±¸
°²×°pip
# curl https://bootstrap.pypa.io/get-pip.py -o
get-pip.py
# python get-pip.py
# pip --version
pip 18.1 from /usr/lib/python2.7/site-packages/pip
(python 2.7)
# python --version
Python 2.7.5
°²×°GCC G++
# yum install gcc gcc-c++
# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
°²×°Ò»Ð©ÐèÒªµÄ°ü
#yum -y install zlib*
#yum install openssl-devel -y
#yum install sqlite* -y
Éý¼¶CentOSĬÈÏPython2.7.5°æ±¾µ½3.6.5
ÏÂÔØPythonÔ´Âë°ü
# wget -c https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
½âѹԴÂë°ü
# tar -zvxf Python-3.6.5.tgz
½øÈëÔ´ÂëĿ¼
# cd Python-3.6.5/
# ./configure --with-ssl
±àÒë²¢°²×°
# make && make install
²é¿´Ò»ÏÂа²×°µÄpython3µÄÎļþλÖÃ
# ll /usr/local/bin/python* |

ÉèÖÃpythonĬÈϰ汾ºÅΪ3.x
# mv /usr/bin/python /usr/bin/python.bak
# ln -s /usr/local/bin/python3 /usr/bin/python
²é¿´Ò»ÏÂ2.x°æ±¾µÄÎļþλÖÃ
# ll /usr/bin/python* |

ΪʹyumÃüÁîÕý³£Ê¹Óã¬ÐèÒª½«ÆäÅäÖõÄpythonÒÀȻָÏò2.x°æ±¾
# vim /usr/bin/yum
#vim /usr/libexec/urlgrabber-ext-down
½«ÉÏÃæÁ½¸öÎļþµÄÍ·²¿ÎļþÐÞ¸ÄΪÀϰ汾¼´¿É
!/usr/bin/python --> !/usr/bin/python2.7
°²×°python-dev¡¢python-pip
# yum install python-dev python-pip -y
½ûÓÃ×Ô´øNouveauÇý¶¯
NouveauʹÓÃ
# lsmod | grep nouveau
nouveau 1662531 0
mxm_wmi 13021 1 nouveau
wmi 19086 2 mxm_wmi,nouveau
video 24538 1 nouveau
i2c_algo_bit 13413 1 nouveau
drm_kms_helper 176920 2 qxl,nouveau
ttm 99555 2 qxl,nouveau
drm 397988 5 qxl,ttm,drm_kms_helper,nouveau
i2c_core 63151 5 drm,i2c_piix4,drm_kms_helper,i2c_algo_bit,nouveau
#vim /usr/lib/modprobe.d/dist-blacklist.conf
# nouveau
blacklist nouveau
options nouveau modeset=0
:wq ±£´æÍ˳ö
# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname
-r).img.bak ±¸·ÝÒýµ¼¾µÏñ
# dracut /boot/initramfs-$(uname -r).img $(uname
-r) ÖØ½¨Òýµ¼¾µÏñ
# reboot
#lsmod | grep nouveau ÔÙ´ÎÑéÖ¤½ûÓÃÊÇ·ñÉúЧ |

3.2 °²×°CUDA
Éý¼¶Äںˣº
# rpm -import https://www.elrepo.org/ RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo -release-7.0-2.el7.elrepo.noarch.rpm
# yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64
kernel-ml-devel.x86_64
²é¿´Äں˰汾ĬÈÏÆô¶¯Ë³Ðò£º
awk -F\' '$1=="menuentry " {print $2}'
/etc/grub2.cfg
CentOS Linux (4.20.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue -c4581dac5b734c11a1881c8eb10d6b09)
7 (Core)
#vim /etc/default/grub
GRUB_DEFAULT=saved ¸ÄΪGRUB_0=saved
ÔËÐÐgrub2-mkconfigÃüÁîÀ´ÖØÐ´´½¨ÄÚºËÅäÖÃ
# grub2-mkconfig -o /boot/grub2/grub.cfg
#reboot
# uname -r ÖØÆôºóÑéÖ¤Ò»ÏÂÄں˰汾
4.20.0-1.el7.elrepo.x86_64
CUDA Toolkit°²×°ÓÐÁ½ÖÖ·½Ê½£º
Package°²×° (RPM and Deb packages)
Runfile°²×°
ÕâÀïÑ¡ÔñʹÓÃRunfileģʽ½øÐа²×°
°²×°°üÏÂÔØ£ºhttps://developer.nvidia.com/compute/cuda
/10.0/Prod/ local_installers/ cuda_10.0.130_410.48_linux
¸ù¾Ý×ÔÉí²Ù×÷ϵͳ½øÐа²×°°üɸѡ£¬²¢ÏÂÔØ¡£¸´ÖÆÏÂÔØÁ´½ÓÖ±½ÓÓÃwget -cÃüÁî½øÐÐÏÂÔØ
# wget -c https://developer.nvidia.com/compute/cuda/10.0/
Prod/local_installers/ cuda_10.0.130_410.48_linux
#chmod +x cuda_10.0.130_410.48_linux
#./cuda_10.0.130_410.48_linux
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for
Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: y
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]:
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
[ default is /root ]:
ÅäÖÃCUDAÔËÐл·¾³±äÁ¿£º
# vim /etc/profile
# CUDA
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH= /usr/local/cuda-10.0/lib64$ {LD_LIBRARY_PATH:+:$ {LD_LIBRARY_PATH}}
# source /etc/profile
¼ì²é°æ±¾
# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
ʹÓÃʵÀýÑéÖ¤²âÊÔCUDAÊÇ·ñÕý³££º
#cd /root/NVIDIA_CUDA-10.0_Samples/ 1_Utilities/deviceQuery
# make
"/usr/local/cuda-10.0"/bin/nvcc -ccbin
g++ -I../../common/inc -m64 -gencode arch=compute_30,code=sm_30
-gencode arch=compute_35,code=sm_35 -gencode arch =compute_37,code=sm_37
-gencode arch=compute_50,code=sm_50 -gencode arch =compute_52,code=sm_52
-gencode arch=compute_60,code=sm_60 -gencode arch =compute_61,code=sm_61
-gencode arch=compute_70,code=sm_70 -gencode arch =compute_75,code=sm_75
-gencode arch=compute_75,code= compute_75 -o deviceQuery.o
-c deviceQuery.cpp
"/usr/local/cuda-10.0"/bin/nvcc -ccbin
g++ -m64 -gencode arch=compute_30,code=sm_30 -gencode
arch=compute_35,code=sm_35 -gencode arch =compute_37,code=sm_37
-gencode arch=compute_50, code=sm_50 -gencode arch =compute_52,code=sm_52
-gencode arch=compute_60, code=sm_60 -gencode arch =compute_61,code=sm_61
-gencode arch=compute_70, code=sm_70 -gencode arch =compute_75,code=sm_75
-gencode arch=compute_75, code=compute_75 -o deviceQuery
deviceQuery.o
mkdir -p ../../bin/x86_64/linux/release
cp deviceQuery ../../bin/x86_64/linux/release
# cd ../../bin/x86_64/linux/release/
# ./deviceQuery
#./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART
static linking)
Detected 1 CUDA Capable device(s)
Device 0: "Quadro P2000"
CUDA Driver Version / Runtime Version 10.0 / 10.0
CUDA Capability Major/ Minor version number: 6.1
Total amount of global memory: 5059 MBytes (5304745984
bytes)
( 8) Multiprocessors, (128) CUDA Cores/MP: 1024
CUDA Cores
GPU Max Clock rate: 1481 MHz (1.48 GHz)
Memory Clock rate: 3504 Mhz
Memory Bus Width: 160-bit
L2 Cache Size: 1310720 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(131072),
2D=(131072, 65536), 3D=(16384, 16384, 16384)
Maximum Layered 1D Texture Size, (num) layers
1D=(32768), 2048 layers
Maximum Layered 2D Texture Size, (num) layers
2D=(32768, 32768), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152
bytes
Total number of registers available per block:
65536
Warp size: 32
Maximum number of threads per multiprocessor:
2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z):
(1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647,
65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with
2 copy engine(s)
Run time limit on kernels: No
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device supports Compute Preemption: Yes
Supports Cooperative Kernel Launch: Yes
Supports MultiDevice Co-op Kernel Launch: Yes
Device PCI Domain ID / Bus ID / location ID: 0
/ 0 / 11
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice()
with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver
Version = 10.0, CUDA Runtime Version = 10.0, NumDevs
= 1
Result = PASS
Result = PASSÇÒ²âÊÔ¹ý³ÌÖÐÎÞ±¨´í£¬±íʾ²âÊÔͨ¹ý£¡ |
3.3°²×° cuDNN
cuDNNµÄÈ«³ÆÎªNVIDIA CUDA? Deep Neural
Network library£¬ÊÇNVIDIAרÃÅÕë¶ÔÉî¶ÈÉñ¾ÍøÂ磨Deep Neural Networks£©ÖеĻù´¡²Ù×÷¶øÉè¼Æ»ùÓÚGPUµÄ¼ÓËÙ¿â¡£cuDNNΪÉî¶ÈÉñ¾ÍøÂçÖеıê×¼Á÷³ÌÌṩÁ˸߶ÈÓÅ»¯µÄʵÏÖ·½Ê½¡£
ÏÂÔØ°²×°°ü£ºhttps://developer.nvidia.com/rdp/cudnn-download
×¢£ºÏÂÔØÇ°ÐèÏÈ×¢²á NVIDIA Developer Program£¬È»ºó²ÅÄÜÏÂÔØ¡£ |

¿ÉÒÔ¸ù¾Ý×ÔÉíµÄ»·¾³Ñ¡ÔñÏàÓ¦°æ±¾½øÐÐÏÂÔØ£¬Õâ¸öÓÐÉí·ÝÑéÖ¤Ö»ÄÜä¯ÀÀÆ÷ÏÂÔØÈ»ºóÔÙÉÏ´«µ½ÔÆÖ÷»úÖС£
°²×°£º
#rpm -ivh libcudnn7-7.4.2.24-1.cuda10.0.x86_64.rpm
libcudnn7-devel-7.4.2.24-1.cuda10.0.x86_64.rpm
libcudnn7-doc-7.4.2.24-1.cuda10.0.x86_64.rpm
×¼±¸ÖÐ... ################################# [100%]
ÕýÔÚÉý¼¶/°²×°...
1:libcudnn7-7.4.2.24-1.cuda10.0 #################################
[ 33%]
2:libcudnn7-devel-7.4.2.24-1.cuda10#################################
[ 67%]
3:libcudnn7-doc-7.4.2.24-1.cuda10.0#################################
[100%]
ÑéÖ¤cuDNN£º
# cp -r /usr/src/cudnn_samples_v7/ $HOME
# cd $HOME/cudnn_samples_v7/mnistCUDNN
# make clean && make
rm -rf *o
rm -rf mnistCUDNN
/usr/local/cuda/bin/nvcc -ccbin g++ -I/usr/local/cuda/include
-IFreeImage/include -m64 -gencode arch=compute_30,code=sm_30
-gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50
-gencode arch=compute_53,code=sm_53 -gencode arch=compute_53,code=compute_53
-o fp16_dev.o -c fp16_dev.cu
g++ -I/usr/local/cuda/include -IFreeImage/include
-o fp16_emu.o -c fp16_emu.cpp
g++ -I/usr/local/cuda/include -IFreeImage/include
-o mnistCUDNN.o -c mnistCUDNN.cpp
/usr/local/cuda/bin/nvcc -ccbin g++ -m64 -gencode
arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35
-gencode arch=compute_50,code=sm_50 -gencode arch=compute_53,code=sm_53
-gencode arch=compute_53,code=compute_53 -o mnistCUDNN
fp16_dev.o fp16_emu.o mnistCUDNN.o -I/usr/local/cuda/include
-IFreeImage/include -LFreeImage/lib/linux/x86_64
-LFreeImage/lib/linux -lcudart -lcublas -lcudnn
-lfreeimage -lstdc++ -lm
# ./mnistCUDNN
cudnnGetVersion() : 7402 , CUDNN_VERSION from
cudnn.h : 7402 (7.4.2)
Host compiler version : GCC 4.8.5
There are 1 CUDA capable devices on your machine
:
device 0 : sms 8 Capabilities 6.1, SmClock 1480.5
Mhz, MemSize (Mb) 5059, MemClock 3504.0 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 0: 0.036864
time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.044032
time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.053248
time requiring 57600 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 0.116544
time requiring 207360 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 7: 0.181248
time requiring 2057744 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.032896
time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.036448
time requiring 3464 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.044000
time requiring 28800 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 0.115488
time requiring 207360 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 7: 0.180224
time requiring 2057744 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!
Test passed!ÇÒ²âÊÔ¹ý³ÌÖÐÎÞ±¨´í£¬±íʾ²âÊÔͨ¹ý£¡ |
3.4°²×° TensorFlow
# pip3 install
--upgrade setuptools==30.1.0
# pip3 install tf-nightly-gpu
ÑéÖ¤²âÊÔ£º
ÔÚ Python ½»»¥Ê½ shell ÖÐÊäÈëÒÔϼ¸Ðмò¶ÌµÄ³ÌÐò´úÂ룺
# python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
Èç¹ûϵͳÊä³öÒÔÏÂÄÚÈÝ£¬¾Í˵Ã÷Äú¿ÉÒÔ¿ªÊ¼±àд TensorFlow ³ÌÐòÁË£º
Hello, TensorFlow!
ͬʱʹÓÃnvidia-smiÃüÁî¿ÉÒÔ¿´µ½µ±Ç°ÏÔ¿¨µÄ´¦ÀíÈÎÎñ¡£ |

3.5 °²×°TensorBoard ¿ÉÊÓ»¯¹¤¾ß
¿ÉÒÔÓà TensorBoard À´Õ¹ÏÖ TensorFlow ͼ£¬»æÖÆÍ¼ÏñÉú³ÉµÄ¶¨Á¿Ö¸±êͼÒÔ¼°ÏÔʾ¸½¼ÓÊý¾Ý£¨ÈçÆäÖд«µÝµÄͼÏñ£©¡£Í¨¹ý
pip °²×° TensorFlow ʱ£¬Ò²»á×Ô¶¯°²×° TensorBoard£º
ÑéÖ¤°æ±¾£º
# pip3 show tensorboard
Name: tensorboard
Version: 1.12.2
Summary: TensorBoard lets you watch Tensors Flow
Home-page: https://github.com/tensorflow/tensorboard
Author: Google Inc.
Author-email: opensource@google.com
License: Apache 2.0
Location: /usr/lib/python2.7/site-packages
Requires: protobuf, numpy, futures, grpcio, wheel,
markdown, werkzeug, six
Required-by:
Æô¶¯·þÎñ£º
# tensorboard --logdir /var/log/tensorboard.log
TensorBoard 1.13.0a20190107 at http://GPU-TF:6006
(Press CTRL+C to quit)
¸ù¾ÝÌáʾÔÚä¯ÀÀÆ÷ÉÏÊäÈëhttp://·þÎñÆ÷IP:6006 |

3.6 °²×°Jupyter
JupyterÊÇÒ»¸ö½»»¥Ê½µÄ±Ê¼Ç±¾£¬¿ÉÒԺܷ½±ãµØ´´½¨ºÍ¹²ÏíÎÄѧ»¯³ÌÐòÎĵµ£¬Ö§³Öʵʱ´úÂ룬Êýѧ·½³Ì£¬¿ÉÊÓ»¯ºÍ
markdown¡£Ò»°ãÓÃÓë×öÊý¾ÝÇåÀíºÍת»»£¬ÊýֵģÄ⣬ͳ¼Æ½¨Ä££¬»úÆ÷ѧϰµÈµÈ¡£
°²×°£º
# sudo pip3 install jupyter
Éú³ÉÅäÖÃÎļþ£º
# jupyter notebook --generate-config
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
Éú³ÉJupyterÃÜÂ룺
# python
Python 3.6.5 (default, Jan 15 2019, 02:51:51)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright",
"credits" or "license" for
more information.
>>> from notebook.auth import passwd;
>>> passwd()
Enter password:
Verify password:
'sha1:6067bcf7350b:8407670bb3f94487c9404ed3c20c1ebf7ddee32e'
>>>
½«Éú³ÉµÄhash´®Ð´ÈëJupyterÅäÖÃÎļþ£º
# vim /root/.jupyter/jupyter_notebook_config.py
|

Æô¶¯·þÎñ
# jupyter notebook --allow-root --ip='192.168.66.11'
ä¯ÀÀÆ÷µÇ½ |

ÊäÈëÃÜÂëºóµÇ½£º¼´¿ÉÕý³£·ÃÎÊ
Ö´ÐвâÊÔÈÎÎñ£º
ÔËÐÐTensorFlow DemoʾÀý
JupyterÖÐн¨ HelloWorld ʾÀý£¬´úÂëÈçÏ£º
import tensorflow as tf
# Simple hello world using TensorFlow
# Create a Constant op
# The op is added as a node to the default graph.
#
# The value returned by the constructor represents
the output
# of the Constant op.
hello = tf.constant('Hello, TensorFlow!')
# Start tf session
sess = tf.Session()
# Run the op
print(sess.run(hello)) |

0x4×ܽá
ͨ¹ýʹÓÃZStackÔÆÆ½Ì¨¿ÉÒÔ¿ìËÙ¹¹½¨Éî¶Èѧϰƽ̨£¬ÔÆÆ½Ì¨×ÔÉíÎÞÐèÌ«¶àµÄ¸´ÔÓÅäÖã¬ÔÚ°²×°¸÷ÖÖÇý¶¯¼°Éî¶Èѧϰ×é¼þʱҲÓëÎïÀí»úÎÞÒì¡£°²×°ºÃÇý¶¯ºó½øÐÐÐÔÄܲâÊÔ·¢ÏÖÓëͬÅäÖÃÎïÀíÂß¼ÐÔÄÜÏ൱£¬GPU²¿·ÖûÓÐÈκÎÐÔÄÜËðʧ¡£
µ±ÉÏÊöÈí¼þ»·¾³¶¼×¼±¸Íê³ÉÒԺ󣬿ÉÅäÖöà¿éGPU²¢´ÓÄ£°å´´½¨¶à¸öÔÆÖ÷»úһһ͸´«£¬½áºÏZStack±¾ÉíµÄ¶à×â»§ÊôÐÔ£¬¿ÉʹµÃ¶àÈËÔÚͬһÌ×»·¾³Öл¥²»Ó°Ïì½øÐпª·¢»òÕßÔËÐÐÓ¦ÓóÌÐò£¬´Ó¶ø³ÉΪһ¸öÕæÕýµÄÉî¶Èѧϰ¡°ÔÆ¡±Æ½Ì¨¡£ |