Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚZStack¹¹½¨Éî¶ÈÑ§Ï°ÔÆÆ½Ì¨
 
  1776  次浏览      29
 2019-6-10 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ×÷ÕßÖìÌì˳,±¾ÎĽ«½éÉÜ»ùÓÚ²úÆ·»¯ÔÆÆ½Ì¨¡ª¡ª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±¾ÉíµÄ¶à×â»§ÊôÐÔ£¬¿ÉʹµÃ¶àÈËÔÚͬһÌ×»·¾³Öл¥²»Ó°Ïì½øÐпª·¢»òÕßÔËÐÐÓ¦ÓóÌÐò£¬´Ó¶ø³ÉΪһ¸öÕæÕýµÄÉî¶Èѧϰ¡°ÔÆ¡±Æ½Ì¨¡£

   
1776 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤