@mhg/blog
Version:
1 lines • 140 kB
HTML
<!DOCTYPE html><html lang="zh-CN"><head hexo-theme="https://github.com/volantis-x/hexo-theme-volantis/#6.0.0-alpha.0"><meta name="generator" content="Hexo 6.3.0"><meta name="Volantis" content="6.0.0-alpha.0"><meta charset="utf-8"><link rel="canonical" href="https://blog.mhuig.top/p/56213be8/"><meta http-equiv="x-dns-prefetch-control" content="on"><link rel="dns-prefetch" href="https://static.mhuig.top"><link rel="preconnect" href="https://static.mhuig.top" crossorigin><meta name="renderer" content="webkit"><meta name="force-rendering" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"><meta name="HandheldFriendly" content="True"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=5"><meta content="black-translucent" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><script>function registerServiceWorker(e){"localhost"!=window.location.hostname&&"serviceWorker"in navigator&&navigator.serviceWorker.register(`${e}`).then((function(e){"localhost"==window.location.hostname&&(e.onupdatefound=function(){var r=e.installing;r.onstatechange=function(){switch(r.state){case"installed":navigator.serviceWorker.controller?console.log("Updated Service Worker."):console.log("Service Worker Sucess!");break;case"redundant":console.log("The installing service worker became redundant.")}}})})).catch((function(e){console.error("Error during service worker registration:",e),"undefined"==typeof swinstallretry&&(swinstallretry=1,registerServiceWorker("/jquery.js?v=0258ff4f79"))}))}registerServiceWorker("/jquery.js?v=0258ff4f79")</script><link rel="apple-touch-icon" sizes="180x180" href="/lib/favicon/apple-touch-icon.png?v=e035908f18"><link rel="icon" type="image/png" sizes="32x32" href="/lib/favicon/favicon-32x32.png?v=b9d9ae54cc"><link rel="icon" type="image/png" sizes="192x192" href="/lib/favicon/android-chrome-192x192.png?v=8bf02188e3"><link rel="icon" type="image/png" sizes="144x144" href="/lib/favicon/android-chrome-144x144.png?v=5c8eadcbb7"><link rel="icon" type="image/png" sizes="16x16" href="/lib/favicon/favicon-16x16.png?v=f896f2f634"><link rel="manifest" href="/lib/favicon/site.webmanifest?v=f138de5899"><link rel="mask-icon" href="/lib/favicon/safari-pinned-tab.svg?v=87d61e51a5" color="#5bbad5"><meta name="apple-mobile-web-app-title" content="MHuiG's Blog"><meta name="application-name" content="MHuiG's Blog"><meta name="msapplication-TileColor" content="#87ceeb"><meta name="msapplication-TileImage" content="/lib/favicon/mstile-144x144.png"><meta name="theme-color" content="#87ceeb" media="(prefers-color-scheme: light)"><meta name="theme-color" content="#21232f" media="(prefers-color-scheme: dark)"><link href="/opensearch.xml?v=2f4fd4e7e0" rel="search" title="MHuiG's Blog" type="application/opensearchdescription+xml"><link rel="preload" href="/css/style.css?v=2d24f6fe3e" as="style"><link rel="preload" href="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/fonts/VarelaRound/VarelaRound-Regular.ttf" as="font" type="font/ttf" crossorigin="anonymous"><link rel="alternate" href="/atom.xml?v=fe8205151a" title="MHuiG" type="application/atom+xml"><link rel="alternate" href="/rss2.xml?v=6b8706d024" title="MHuiG" type="application/rss+xml"><title>尝试使用 GPU 加速计算 - MHuiG</title><meta name="keywords" content="Data mining,Machine Learning,Blog, IT, BigData, MHuiG, @MHuiG, iMHuiG, 博客, 梦幻岛, Neverland, 技术博客"><meta desc name="description" content="大规模训练,gpu 和 cpu 速度差别很大。 - MHuiG - MHuiG"><meta property="og:type" content="article"><meta property="og:title" content="尝试使用 GPU 加速计算"><meta property="og:url" content="https://blog.mhuig.top/p/56213be8/"><meta property="og:site_name" content="MHuiG"><meta property="og:description" content="大规模训练,gpu 和 cpu 速度差别很大。"><meta property="og:locale" content="zh_CN"><meta property="og:image" content="https://blog.mhuig.top/lib/favicon/android-chrome-192x192.png"><meta property="article:published_time" content="2020-10-11T01:11:44.000Z"><meta property="article:modified_time" content="2020-10-11T01:11:44.000Z"><meta property="article:author" content="MHuiG"><meta property="article:tag" content="Data mining"><meta property="article:tag" content="Machine Learning"><meta name="twitter:card" content="summary"><meta name="twitter:image" content="https://blog.mhuig.top/lib/favicon/android-chrome-192x192.png"><meta name="twitter:creator" content="@iMHuiG"><meta name="twitter:site" content="@iMHuiG"><style>#safearea{display:none}.post-story+.post-story{content-visibility:auto;contain-intrinsic-size:10px 500px}:root{--color-site-body:#87ceeb;--color-site-bg:#87ceeb;--color-site-inner:#555;--color-site-footer:#666;--color-card:#fff;--color-text:#444;--color-block:#f6f6f6;--color-inlinecode:#d56d28;--color-codeblock:#fff7ea;--color-h1:#3a3a3a;--color-h2:#3a3a3a;--color-h3:#333;--color-h4:#444;--color-h5:#555;--color-h6:#666;--color-p:#444;--color-list:#666;--color-list-hl:#1a78c2;--color-meta:#888;--color-read-bkg:#e0d8c8;--color-read-post:#f8f1e2;--color-copyright-bkg:#f5f5f5}*{box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;outline:0;margin:0;padding:0}::-webkit-scrollbar{height:4px;width:4px}::-webkit-scrollbar-track-piece{background:0 0}::-webkit-scrollbar-thumb{background:#2196f3;cursor:pointer;border-radius:2px;-webkit-border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#ff5722}html{color:var(--color-text);width:100%;height:100%;font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,Menlo,Monaco,monospace,sans-serif;font-size:16px}html>::-webkit-scrollbar{height:4px;width:4px}html>::-webkit-scrollbar-track-piece{background:0 0}html>::-webkit-scrollbar-thumb{background:#2196f3;cursor:pointer;border-radius:2px;-webkit-border-radius:2px}html>::-webkit-scrollbar-thumb:hover{background:#ff5722}body{background-color:var(--color-site-body);text-rendering:optimizelegibility;-webkit-tap-highlight-color:transparent;line-height:1.6;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body.modal-active{overflow:hidden}@media screen and (max-width:680px){body.modal-active{position:fixed;top:0;right:0;bottom:0;left:0}}a{color:#2196f3;cursor:pointer;text-decoration:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}a:hover{color:#ff5722}a:active,a:hover{outline:0}ol,ul{padding-left:0}ol li,ul li{list-style:none}header{display:-webkit-box;display:-moz-box;display:block}img{border:0;background:0 0;max-width:100%}svg:not(:root){overflow:hidden}hr{-moz-box-sizing:content-box;box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;height:0;border:0;border-radius:1px;-webkit-border-radius:1px;border-bottom:1px solid rgba(68,68,68,.1)}button,input{color:inherit;font:inherit;margin:0}button{overflow:visible;text-transform:none;-webkit-appearance:button;cursor:pointer}@supports (backdrop-filter:blur(20px)){.blur{background:rgba(255,255,255,.9)!important;backdrop-filter:saturate(200%) blur(20px)}}.shadow{box-shadow:0 1px 2px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.shadow.floatable{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.shadow.floatable:hover{box-shadow:0 2px 4px 0 rgba(0,0,0,.1),0 4px 8px 0 rgba(0,0,0,.1),0 8px 16px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.1),0 4px 8px 0 rgba(0,0,0,.1),0 8px 16px 0 rgba(0,0,0,.1)}#l_cover{min-height:64px}.cover-wrapper{top:0;left:0;max-width:100%;height:100vh;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-khtml-flex-wrap:nowrap;-moz-flex-wrap:nowrap;-o-flex-wrap:nowrap;-ms-flex-wrap:nowrap;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;align-self:center;align-content:center;color:var(--color-site-inner);padding:0 16px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;position:relative;overflow:hidden;margin-bottom:-100px}.cover-wrapper .cover-bg{position:absolute;width:100%;height:100%;background-position:center;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover}.cover-wrapper .cover-bg.lazyload:not(.loaded){opacity:0;-webkit-opacity:0;-moz-opacity:0}.cover-wrapper .cover-bg.lazyload.loaded{animation-delay:0s;animation-duration:.5s;animation-fill-mode:forwards;animation-timing-function:ease-out;animation-name:fadeIn}@-moz-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-webkit-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-o-keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@keyframes fadeIn{0%{opacity:0;-webkit-opacity:0;-moz-opacity:0;filter:blur(12px);transform:scale(1.02);-webkit-transform:scale(1.02);-khtml-transform:scale(1.02);-moz-transform:scale(1.02);-o-transform:scale(1.02);-ms-transform:scale(1.02)}100%{opacity:1;-webkit-opacity:1;-moz-opacity:1}}.cover-wrapper .cover-body{z-index:1;position:relative;width:100%;height:100%}.cover-wrapper#full{height:calc(100vh + 100px);padding-bottom:100px}.cover-wrapper#half{max-height:640px;min-height:400px;height:calc(36vh - 64px + 200px)}.cover-wrapper #scroll-down{width:100%;height:64px;position:absolute;bottom:100px;text-align:center;cursor:pointer}.cover-wrapper #scroll-down .scroll-down-effects{color:#fff;font-size:24px;line-height:64px;position:absolute;width:24px;left:calc(50% - 12px);text-shadow:0 1px 2px rgba(0,0,0,.1);animation:scroll-down-effect 1.5s infinite;-webkit-animation:scroll-down-effect 1.5s infinite;-khtml-animation:scroll-down-effect 1.5s infinite;-moz-animation:scroll-down-effect 1.5s infinite;-o-animation:scroll-down-effect 1.5s infinite;-ms-animation:scroll-down-effect 1.5s infinite}@-moz-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-webkit-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@-o-keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}@keyframes scroll-down-effect{0%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}50%{top:-16px;opacity:.4;-webkit-opacity:0.4;-moz-opacity:0.4}100%{top:0;opacity:1;-webkit-opacity:1;-moz-opacity:1}}.cover-wrapper .cover-body{margin-top:64px;margin-bottom:100px}.cover-wrapper .cover-body,.cover-wrapper .cover-body .bottom,.cover-wrapper .cover-body .top{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;max-width:100%}.cover-wrapper .cover-body .bottom{margin-top:32px}.cover-wrapper .cover-body .title{font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,Helvetica,monospace;font-size:3.125rem;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.1)}.cover-wrapper .cover-body .subtitle{font-size:20px}.cover-wrapper .cover-body .logo{max-height:120px;max-width:calc(100% - 4 * 16px)}@media screen and (min-height:1024px){.cover-wrapper .cover-body .title{font-size:3rem}.cover-wrapper .cover-body .subtitle{font-size:1.05rem}.cover-wrapper .cover-body .logo{max-height:150px}}.cover-wrapper .cover-body .m_search{position:relative;max-width:calc(100% - 16px);width:320px;vertical-align:middle}.cover-wrapper .cover-body .m_search .form{position:relative;display:-webkit-box;display:-moz-box;display:block;width:100%}.cover-wrapper .cover-body .m_search .icon,.cover-wrapper .cover-body .m_search .input{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.cover-wrapper .cover-body .m_search .icon{position:absolute;display:-webkit-box;display:-moz-box;display:block;line-height:2.5rem;width:32px;top:0;left:5px;color:rgba(68,68,68,.75)}.cover-wrapper .cover-body .m_search .input{display:-webkit-box;display:-moz-box;display:block;height:2.5rem;width:100%;box-shadow:none;-webkit-box-shadow:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;font-size:.875rem;-webkit-appearance:none;padding-left:36px;border-radius:1.4rem;-webkit-border-radius:1.4rem;background:rgba(255,255,255,.6);backdrop-filter:blur(10px);border:none;color:var(--color-text)}@media screen and (max-width:500px){.cover-wrapper .cover-body .m_search .input{padding-left:36px}}.cover-wrapper .cover-body .m_search .input:hover{background:rgba(255,255,255,.8)}.cover-wrapper .cover-body .m_search .input:focus{background:#fff}.cover-wrapper .list-h{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;flex-wrap:wrap;-webkit-flex-wrap:wrap;-khtml-flex-wrap:wrap;-moz-flex-wrap:wrap;-o-flex-wrap:wrap;-ms-flex-wrap:wrap;align-items:stretch;border-radius:4px;-webkit-border-radius:4px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cover-wrapper .list-h a{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1 0;-ms-flex:1 0;flex:1 0;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;font-weight:600}.cover-wrapper .list-h a img{display:-webkit-box;display:-moz-box;display:block;border-radius:2px;-webkit-border-radius:2px;margin:4px;min-width:40px;max-width:44px}@media screen and (max-width:768px){.cover-wrapper .list-h a img{min-width:36px;max-width:40px}}@media screen and (max-width:500px){.cover-wrapper .list-h a img{margin:2px 4px;min-width:32px;max-width:36px}}@media screen and (max-width:375px){.cover-wrapper .list-h a img{min-width:28px;max-width:32px}}.cover-wrapper{max-width:100%}.cover-wrapper.search .bottom .menu{margin-top:16px}.cover-wrapper.search .bottom .menu .list-h a{white-space:nowrap;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;align-items:baseline;padding:2px;margin:4px;color:var(--color-site-inner);opacity:.75;-webkit-opacity:0.75;-moz-opacity:0.75;text-shadow:0 1px 2px rgba(0,0,0,.05);border-bottom:2px solid transparent}.cover-wrapper.search .bottom .menu .list-h a i{margin-right:4px}.cover-wrapper.search .bottom .menu .list-h a p{font-size:.9375rem}.cover-wrapper.search .bottom .menu .list-h a.active,.cover-wrapper.search .bottom .menu .list-h a:active,.cover-wrapper.search .bottom .menu .list-h a:hover{opacity:1;-webkit-opacity:1;-moz-opacity:1;border-bottom:2px solid var(--color-site-inner)}.cover-wrapper.dock .menu,.cover-wrapper.featured .menu,.cover-wrapper.focus .menu{border-radius:6px;-webkit-border-radius:6px}.cover-wrapper.dock .menu .list-h a,.cover-wrapper.featured .menu .list-h a,.cover-wrapper.focus .menu .list-h a{-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;align-items:center;padding:12px;line-height:24px;border-radius:4px;-webkit-border-radius:4px;border-bottom:none;text-align:center;align-content:flex-end;color:rgba(68,68,68,.7);font-size:1.5rem}@media screen and (max-width:500px){.cover-wrapper.dock .menu .list-h a,.cover-wrapper.featured .menu .list-h a,.cover-wrapper.focus .menu .list-h a{padding:12px 8px}}.cover-wrapper.dock .menu .list-h a i,.cover-wrapper.featured .menu .list-h a i,.cover-wrapper.focus .menu .list-h a i{margin:8px}.cover-wrapper.dock .menu .list-h a p,.cover-wrapper.featured .menu .list-h a p,.cover-wrapper.focus .menu .list-h a p{font-size:.875rem}.cover-wrapper.dock .menu .list-h a.active,.cover-wrapper.featured .menu .list-h a.active,.cover-wrapper.focus .menu .list-h a.active{background:var(--color-card);backdrop-filter:none}.cover-wrapper.dock .menu .list-h a.active i,.cover-wrapper.dock .menu .list-h a.active i+p,.cover-wrapper.featured .menu .list-h a.active i,.cover-wrapper.featured .menu .list-h a.active i+p,.cover-wrapper.focus .menu .list-h a.active i,.cover-wrapper.focus .menu .list-h a.active i+p{color:#2196f3}.cover-wrapper.dock .menu .list-h a.active img+p,.cover-wrapper.featured .menu .list-h a.active img+p,.cover-wrapper.focus .menu .list-h a.active img+p{color:var(--color-text)}.cover-wrapper.dock .menu .list-h a:hover,.cover-wrapper.featured .menu .list-h a:hover,.cover-wrapper.focus .menu .list-h a:hover{background:var(--color-card)}.cover-wrapper.featured .menu .list-h{margin:-2px}.cover-wrapper.featured .menu .list-h a{margin:2px;background:rgba(255,255,255,.5)}@supports (backdrop-filter:blur(20px)){.cover-wrapper.featured .menu .list-h a{background:rgba(255,255,255,.5);backdrop-filter:saturate(200%) blur(20px)}}@media (prefers-color-scheme:dark){:root{--color-mode:'dark'}:root:not([color-scheme]){--color-site-body:#121212;--color-read-bkg:#21232f;--color-read-post:#252d38;--color-site-bg:#21232f;--color-site-inner:#efefef;--color-site-footer:#666;--color-card:#252d38;--color-text:rgba(238,238,238,0.871);--color-block:rgba(68,68,68,0.65);--color-codeblock:rgba(68,68,68,0.65);--color-inlinecode:#d56d28;--color-h1:rgba(255,255,255,0.871);--color-h2:rgba(255,255,255,0.871);--color-h3:rgba(255,255,255,0.6);--color-h4:rgba(255,255,255,0.6);--color-h5:rgba(255,255,255,0.6);--color-h6:rgba(255,255,255,0.6);--color-p:rgba(217,217,217,0.871);--color-list:rgba(217,217,217,0.871);--color-list-hl:#4dabf5;--color-meta:rgba(191,191,191,0.871);--color-link:rgba(191,191,191,0.871);--color-copyright-bkg:#21252b}:root:not([color-scheme]) img{filter:brightness(70%)!important}:root:not([color-scheme]) .blur{background:rgba(33,35,47,.9)!important}:root:not([color-scheme]) .white-box.blur{background:rgba(37,45,56,.9)!important}:root:not([color-scheme]) .nav-main .u-search-input{background:var(--color-card)!important}:root:not([color-scheme]) #l_main .article .prev-next>a{background:var(--color-block)!important}:root:not([color-scheme]) #l_main .article .prev-next>a:hover{background:var(--color-site-bg)!important}:root:not([color-scheme]) .article blockquote{background:var(--color-block)!important}:root:not([color-scheme]) .article-title a{color:var(--color-h1)!important}:root:not([color-scheme]) details>summary{color:var(--color-p)!important;background:var(--color-site-bg)!important}:root:not([color-scheme]) details{border:1px solid var(--color-site-bg)!important;background:var(--color-site-bg)!important}:root:not([color-scheme]) #u-search .modal,:root:not([color-scheme]) #u-search .modal-body,:root:not([color-scheme]) #u-search .modal-header{background:var(--color-card)!important}:root:not([color-scheme]) #u-search .modal-body .modal-results .result:hover{background:var(--color-block)!important}:root:not([color-scheme]) .u-search-input:hover{background:var(--color-block)!important}:root:not([color-scheme]) .u-search-input:focus{background:var(--color-site-body)!important}}[color-scheme=dark]{--color-site-body:#121212;--color-read-bkg:#21232f;--color-read-post:#252d38;--color-site-bg:#21232f;--color-site-inner:#efefef;--color-site-footer:#666;--color-card:#252d38;--color-text:rgba(238,238,238,0.871);--color-block:rgba(68,68,68,0.65);--color-codeblock:rgba(68,68,68,0.65);--color-inlinecode:#d56d28;--color-h1:rgba(255,255,255,0.871);--color-h2:rgba(255,255,255,0.871);--color-h3:rgba(255,255,255,0.6);--color-h4:rgba(255,255,255,0.6);--color-h5:rgba(255,255,255,0.6);--color-h6:rgba(255,255,255,0.6);--color-p:rgba(217,217,217,0.871);--color-list:rgba(217,217,217,0.871);--color-list-hl:#4dabf5;--color-meta:rgba(191,191,191,0.871);--color-link:rgba(191,191,191,0.871);--color-copyright-bkg:#21252b}[color-scheme=dark] img{filter:brightness(70%)!important}[color-scheme=dark] .blur{background:rgba(33,35,47,.9)!important}[color-scheme=dark] .white-box.blur{background:rgba(37,45,56,.9)!important}[color-scheme=dark] .nav-main .u-search-input{background:var(--color-card)!important}[color-scheme=dark] #l_main .article .prev-next>a{background:var(--color-block)!important}[color-scheme=dark] #l_main .article .prev-next>a:hover{background:var(--color-site-bg)!important}[color-scheme=dark] .article blockquote{background:var(--color-block)!important}[color-scheme=dark] .article-title a{color:var(--color-h1)!important}[color-scheme=dark] details>summary{color:var(--color-p)!important;background:var(--color-site-bg)!important}[color-scheme=dark] details{border:1px solid var(--color-site-bg)!important;background:var(--color-site-bg)!important}[color-scheme=dark] #u-search .modal,[color-scheme=dark] #u-search .modal-body,[color-scheme=dark] #u-search .modal-header{background:var(--color-card)!important}[color-scheme=dark] #u-search .modal-body .modal-results .result:hover{background:var(--color-block)!important}[color-scheme=dark] .u-search-input:hover{background:var(--color-block)!important}[color-scheme=dark] .u-search-input:focus{background:var(--color-site-body)!important}@media screen and (max-width:500px){[color-scheme=dark] .l_header .m_search{background:var(--color-site-bg)!important}}@font-face{font-family:'Varela Round';src:url("");font-weight:'normal';font-style:'normal';font-display:swap}@font-face{font-family:'Varela Round';src:url("https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/fonts/VarelaRound/VarelaRound-Regular.ttf");font-weight:'normal';font-style:'normal';font-display:swap}.l_header{position:fixed;z-index:1000;top:0;width:100%;height:64px;background:var(--color-card);box-shadow:0 1px 2px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.1)}.l_header.auto{transition:opacity .4s ease;-webkit-transition:opacity .4s ease;-khtml-transition:opacity 0.4s ease;-moz-transition:opacity .4s ease;-o-transition:opacity .4s ease;-ms-transition:opacity .4s ease;visibility:hidden}.l_header.auto.show{opacity:1!important;-webkit-opacity:1!important;-moz-opacity:1!important;visibility:visible}.l_header .container{margin-left:16px;margin-right:16px}.l_header #wrapper{height:100%;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.l_header #wrapper .nav-main,.l_header #wrapper .nav-sub{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-khtml-flex-wrap:nowrap;-moz-flex-wrap:nowrap;-o-flex-wrap:nowrap;-ms-flex-wrap:nowrap;justify-content:space-between;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-o-justify-content:space-between;-ms-justify-content:space-between;align-items:center}.l_header #wrapper .nav-main{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.l_header #wrapper.sub .nav-main{transform:translateY(-64px);-webkit-transform:translateY(-64px);-khtml-transform:translateY(-64px);-moz-transform:translateY(-64px);-o-transform:translateY(-64px);-ms-transform:translateY(-64px)}.l_header #wrapper .nav-sub{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;opacity:0;-webkit-opacity:0;-moz-opacity:0;height:64px;width:calc(100% - 2 * 16px);position:absolute}.l_header #wrapper .nav-sub ::-webkit-scrollbar{display:-webkit-box;display:-moz-box;display:none}@media screen and (min-width:2048px){.l_header #wrapper .nav-sub{max-width:55vw;margin:auto}}.l_header #wrapper.sub .nav-sub{opacity:1;-webkit-opacity:1;-moz-opacity:1}.l_header #wrapper .title{position:relative;color:var(--color-text);padding-left:24px;max-height:64px}.l_header #wrapper .nav-main .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0;line-height:64px;padding:0 24px;font-size:1.25rem;font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,Helvetica,monospace}.l_header #wrapper .nav-main .title img{height:64px}.l_header .nav-sub{max-width:1080px;margin:auto}.l_header .nav-sub .title{font-weight:700;font-family:"Varela Round","PingFang SC","Microsoft YaHei",Helvetica,Arial,Menlo,Monaco,monospace,sans-serif;line-height:1.2;max-height:64px;white-space:normal;flex-shrink:1}.l_header .switcher{display:-webkit-box;display:-moz-box;display:none;line-height:64px;align-items:center}.l_header .switcher .s-toc{display:-webkit-box;display:-moz-box;display:none}@media screen and (max-width:768px){.l_header .switcher .s-toc{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex}}.l_header .switcher>li{height:48px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;margin:2px}@media screen and (max-width:500px){.l_header .switcher>li{margin:0 1px;height:48px}}.l_header .switcher>li>a{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;align-items:center;width:48px;height:48px;padding:.85em 1.1em;border-radius:100px;-webkit-border-radius:100px;border:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;color:#2196f3}.l_header .switcher>li>a:hover{border:none}.l_header .switcher>li>a.active,.l_header .switcher>li>a:active{border:none;background:var(--color-site-bg)}@media screen and (max-width:500px){.l_header .switcher>li>a{width:36px;height:48px}}.l_header .nav-sub .switcher{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex}.l_header .m_search{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;height:64px;width:240px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}@media screen and (max-width:1024px){.l_header .m_search{width:44px;min-width:44px}.l_header .m_search input::placeholder{opacity:0;-webkit-opacity:0;-moz-opacity:0}.l_header .m_search:hover{width:240px}.l_header .m_search:hover input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@media screen and (min-width:500px){.l_header .m_search:hover .input{width:100%}.l_header .m_search:hover .input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}@media screen and (max-width:500px){.l_header .m_search{min-width:0}.l_header .m_search input::placeholder{opacity:1;-webkit-opacity:1;-moz-opacity:1}}.l_header .m_search .form{position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;width:100%;align-items:center}.l_header .m_search .icon{position:absolute;width:36px;left:5px;color:var(--color-meta)}@media screen and (max-width:500px){.l_header .m_search .icon{display:-webkit-box;display:-moz-box;display:none}}.l_header .m_search .input{display:-webkit-box;display:-moz-box;display:block;padding-top:8px;padding-bottom:8px;line-height:1.3;width:100%;color:var(--color-text);background:#fafafa;box-shadow:none;-webkit-box-shadow:none;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding-left:40px;font-size:.875rem;border-radius:8px;-webkit-border-radius:8px;border:none;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}@media screen and (min-width:500px){.l_header .m_search .input:focus{box-shadow:0 4px 8px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.1)}}@media screen and (max-width:500px){.l_header .m_search .input{background:var(--color-block);padding-left:8px;border:none}.l_header .m_search .input:focus,.l_header .m_search .input:hover{border:none}}@media (max-width:500px){.l_header .m_search{left:0;width:0;overflow:hidden;position:absolute;background:#fff;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.l_header .m_search .input{border-radius:32px;-webkit-border-radius:32px;margin-left:16px;padding-left:16px}.l_header.z_search-open .m_search{width:100%}.l_header.z_search-open .m_search .input{width:calc(100% - 120px)}}ul.m-pc>li>a{color:inherit;border-bottom:2px solid transparent}ul.m-pc>li>a.active,ul.m-pc>li>a:active{border-bottom:2px solid #2196f3}ul.list-v li:hover>ul.list-v,ul.m-pc li:hover>ul.list-v{display:-webkit-box;display:-moz-box;display:block}ul.nav-list-h{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;align-items:stretch}ul.nav-list-h>li{position:relative;justify-content:center;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-o-justify-content:center;-ms-justify-content:center;height:100%;line-height:2.4;border-radius:4px;-webkit-border-radius:4px}ul.nav-list-h>li>a{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:600}ul.list-v{z-index:1;display:-webkit-box;display:-moz-box;display:none;position:absolute;background:var(--color-card);box-shadow:0 2px 4px 0 rgba(0,0,0,.08),0 4px 8px 0 rgba(0,0,0,.08),0 8px 16px 0 rgba(0,0,0,.08);-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08),0 4px 8px 0 rgba(0,0,0,.08),0 8px 16px 0 rgba(0,0,0,.08);margin-top:-6px;border-radius:4px;-webkit-border-radius:4px;padding:8px 0}ul.list-v.show{display:-webkit-box;display:-moz-box;display:block}ul.list-v hr{margin-top:8px;margin-bottom:8px}ul.list-v>li{white-space:nowrap;word-break:keep-all}ul.list-v>li.header{font-size:.78125rem;font-weight:700;line-height:2em;color:var(--color-meta);margin:8px 16px 4px}ul.list-v>li.header i{margin-right:8px}ul.list-v>li ul{margin-left:0;display:-webkit-box;display:-moz-box;display:none;margin-top:-40px}ul.list-v .aplayer-container{min-height:64px;padding:6px 16px}ul.list-v>li>a{transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease;display:-webkit-box;display:-moz-box;display:block;color:var(--color-list);font-size:.875rem;font-weight:700;line-height:36px;padding:0 20px 0 16px;text-overflow:ellipsis;margin:0 4px;border-radius:4px;-webkit-border-radius:4px}@media screen and (max-width:1024px){ul.list-v>li>a{line-height:40px}}ul.list-v>li>a>i{margin-right:8px}ul.list-v>li>a.active,ul.list-v>li>a:active{color:var(--color-list-hl)}ul.list-v>li>a:hover{color:var(--color-list-hl);background:var(--color-site-bg)}.l_header .menu>ul>li>a{display:-webkit-box;display:-moz-box;display:block;padding:0 8px}.l_header .menu>ul>li>a>i{margin-right:4px}.l_header ul.nav-list-h>li{color:var(--color-list);line-height:64px}.l_header ul.nav-list-h>li>a{max-height:64px;overflow:hidden;color:inherit}.l_header ul.nav-list-h>li>a.active,.l_header ul.nav-list-h>li>a:active{color:#2196f3}.l_header ul.nav-list-h>li:hover>a{color:var(--color-list-hl)}.l_header ul.nav-list-h>li i.music{animation:rotate-effect 1.5s linear infinite;-webkit-animation:rotate-effect 1.5s linear infinite;-khtml-animation:rotate-effect 1.5s linear infinite;-moz-animation:rotate-effect 1.5s linear infinite;-o-animation:rotate-effect 1.5s linear infinite;-ms-animation:rotate-effect 1.5s linear infinite}@-moz-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@-webkit-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@-o-keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}@keyframes rotate-effect{0%{transform:rotate(0);-webkit-transform:rotate(0);-khtml-transform:rotate(0);-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0)}25%{transform:rotate(90deg);-webkit-transform:rotate(90deg);-khtml-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}50%{transform:rotate(180deg);-webkit-transform:rotate(180deg);-khtml-transform:rotate(180deg);-moz-transform:rotate(180deg);-o-transform:rotate(180deg);-ms-transform:rotate(180deg)}75%{transform:rotate(270deg);-webkit-transform:rotate(270deg);-khtml-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);-ms-transform:rotate(270deg)}100%{transform:rotate(360deg);-webkit-transform:rotate(360deg);-khtml-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg)}}.menu-phone li ul.list-v{right:calc(100% - .5 * 16px)}.menu-phone li ul.list-v ul{right:calc(100% - .5 * 16px)}#wrapper{max-width:1080px;margin:auto}@media screen and (min-width:2048px){#wrapper{max-width:55vw}}#wrapper .menu{-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1 1;-ms-flex:1 1;flex:1 1;margin:0 16px 0 0}#wrapper .menu .list-v ul{left:calc(100% - .5 * 16px)}.menu-phone{display:-webkit-box;display:-moz-box;display:none;margin-top:16px;right:8px;transition:all .28s ease;-webkit-transition:all .28s ease;-khtml-transition:all 0.28s ease;-moz-transition:all .28s ease;-o-transition:all .28s ease;-ms-transition:all .28s ease}.menu-phone ul{right:calc(100% - .5 * 16px)}@media screen and (max-width:500px){.menu-phone{display:-webkit-box;display:-moz-box;display:block}}.l_header{max-width:65vw;left:calc((100% - 65vw) * .5);border-bottom-left-radius:8px;border-bottom-right-radius:8px}@media screen and (max-width:2048px){.l_header{max-width:1112px;left:calc((100% - 1112px) * .5)}}@media screen and (max-width:1112px){.l_header{left:0;border-radius:0;-webkit-border-radius:0;max-width:100%}}@media screen and (max-width:500px){.l_header .container{margin-left:0;margin-right:0}.l_header #wrapper .nav-main .title{padding-left:16px;padding-right:16px}.l_header #wrapper .nav-sub{width:100%}.l_header #wrapper .nav-sub .title{overflow-y:scroll;margin-top:2px;padding:8px 16px}.l_header #wrapper .switcher{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;display:flex;margin-right:8px}.l_header .menu{display:-webkit-box;display:-moz-box;display:none}}@media screen and (max-width:500px){.list-v li{max-width:270px}}#u-search{display:-webkit-box;display:-moz-box;display:none;position:fixed;top:0;left:0;width:100%;height:100%;padding:60px 20px;z-index:1001}@media screen and (max-width:680px){#u-search{padding:0}}@media screen and (prefers-color-scheme:dark) and (max-width:500px){.l_header .m_search{background:var(--color-site-bg)!important}}.cover-wrapper .cover-body .subtitle{font-size:.875rem}.fa-brands.color-github,.fa-duotone.color-github,.fa-light.color-github,.fa-regular.color-github,.fa-solid.color-github,.fa-thin.color-github,.fa.color-github,.fad.color-github,.fal.color-github,.far.color-github,.fas.color-github,.iziToast>.iziToast-body .iziToast-icon.color-github{color:#000}.fa-brands.color-friends,.fa-duotone.color-friends,.fa-light.color-friends,.fa-regular.color-friends,.fa-solid.color-friends,.fa-thin.color-friends,.fa.color-friends,.fad.color-friends,.fal.color-friends,.far.color-friends,.fas.color-friends,.iziToast>.iziToast-body .iziToast-icon.color-friends{color:#d31ee9}.fa-brands.color-about,.fa-duotone.color-about,.fa-light.color-about,.fa-regular.color-about,.fa-solid.color-about,.fa-thin.color-about,.fa.color-about,.fad.color-about,.fal.color-about,.far.color-about,.fas.color-about,.iziToast>.iziToast-body .iziToast-icon.color-about{color:#0095ff}.fa-brands.color-travellings,.fa-duotone.color-travellings,.fa-light.color-travellings,.fa-regular.color-travellings,.fa-solid.color-travellings,.fa-thin.color-travellings,.fa.color-travellings,.fad.color-travellings,.fal.color-travellings,.far.color-travellings,.fas.color-travellings,.iziToast>.iziToast-body .iziToast-icon.color-travellings{color:#734ae6}</style><link rel="stylesheet" href="/css/style.css?v=2d24f6fe3e" media="print" onload="this.media="all",this.onload=null"><noscript><link rel="stylesheet" href="/css/style.css?v=2d24f6fe3e"></noscript><script>let userColorScheme=localStorage.getItem("color-scheme");userColorScheme&&document.documentElement.setAttribute("color-scheme",userColorScheme)</script><script>window.MSInputMethodContext&&document.documentMode&&document.write('<style>html{overflow-x: hidden !important;overflow-y: hidden !important;}.kill-ie{text-align:center;height: 100%;margin-top: 15%;margin-bottom: 5500%;}.kill-t{font-size: 2rem;}.kill-c{font-size: 1.2rem;}#l_header,#l_body{display: none;}</style><div class="kill-ie"><span class="kill-t"><b>抱歉,您的浏览器无法访问本站</b></span><br/><span class="kill-c">微软已经于2016年终止了对 Internet Explorer (IE) 10 及更早版本的支持,<br/>继续使用存在极大的安全隐患,请使用当代主流的浏览器进行访问。</span><br/><a target="_blank" rel="noopener" href="https://blogs.windows.com/windowsexperience/2021/05/19/the-future-of-internet-explorer-on-windows-10-is-in-microsoft-edge/"><strong>了解详情 ></strong></a></div>')</script><noscript><style>html{overflow-x:hidden!important;overflow-y:hidden!important}.kill-noscript{text-align:center;height:100%;margin-top:15%;margin-bottom:5500%}.kill-t{font-size:2rem}.kill-c{font-size:1.2rem}#l_body,#l_header{display:none}</style><div class="kill-noscript"> <span class="kill-t"><b>抱歉,您的浏览器无法访问本站</b></span><br> <span class="kill-c">本页面需要浏览器支持(启用)JavaScript</span><br> <a target="_blank" rel="external nofollow noopener noreferrer" href="https://www.baidu.com/s?wd=启用JavaScript"><strong>了解详情 ></strong></a></div></noscript><script>function volantisEventListener(e,t,o){this.type=e,this.f=t,this.ele=o}function volantisDom(e){return e||(e=document.createElement("div")),this.ele=e,this.ele.find=e=>{let t=this.ele.querySelector(e);if(t)return new volantisDom(t)},this.ele.hasClass=e=>this.ele.className.match(new RegExp("(\\s|^)"+e+"(\\s|$)")),this.ele.addClass=e=>(this.ele.classList.add(e),this.ele),this.ele.removeClass=e=>(this.ele.classList.remove(e),this.ele),this.ele.toggleClass=e=>(this.ele.hasClass(e)?this.ele.removeClass(e):this.ele.addClass(e),this.ele),this.ele.on=(e,t,o=1)=>(this.ele.addEventListener(e,t,!1),o&&volantis.EventListener.list.push(new volantisEventListener(e,t,this.ele)),this.ele),this.ele.click=(e,t)=>(this.ele.on("click",e,t),this.ele),this.ele.scroll=(e,t)=>(this.ele.on("scroll",e,t),this.ele),this.ele.html=e=>(this.ele.innerHTML=e,this.ele),this.ele.hide=e=>(this.ele.style.display="none",this.ele),this.ele.show=e=>(this.ele.style.display="block",this.ele),this.ele}function RunItem(){function e(e,t){this.name=t||e.name,this.run=()=>{try{e()}catch(e){console.log(e)}}}this.list=[],this.start=()=>{for(var e=0;e<this.list.length;e++)this.list[e].run()},this.push=(t,o,n=!0)=>{let l=t;n&&(l=()=>{volantis.requestAnimationFrame(t)});var s=new e(l,o);this.list.push(s)},this.remove=e=>{for(let t=0;t<this.list.length;t++){this.list[t].name==e&&this.list.splice(t,1)}}}function errorImgAvatar(e){e.src="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/avatar/round/3442075.svg",e.onerror=null}function errorImgCover(e){e.src="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/cover/76b86c0226ffd.svg",e.onerror=null}window.volantis={},volantis.debug="false",volantis.dom={},volantis.EventListener={},volantis.EventListener.list=[],volantis.EventListener.remove=()=>{volantis.EventListener.list.forEach((function(e){e.ele.removeEventListener(e.type,e.f,!1)})),volantis.EventListener.list=[]},volantis.dom.$=e=>e?new volantisDom(e):null,volantis.pjax={},volantis.pjax.method={complete:new RunItem,error:new RunItem,send:new RunItem},volantis.pjax=Object.assign(volantis.pjax,{push:volantis.pjax.method.complete.push,error:volantis.pjax.method.error.push,send:volantis.pjax.method.send.push}),volantis.rightmenu={},volantis.rightmenu.method={handle:new RunItem},volantis.rightmenu=Object.assign(volantis.rightmenu,{handle:volantis.rightmenu.method.handle.push}),volantis.dark={},volantis.dark.method={toggle:new RunItem},volantis.dark=Object.assign(volantis.dark,{push:volantis.dark.method.toggle.push}),volantis.js=(e,t)=>new Promise((o=>{setTimeout((function(){var n=document.getElementsByTagName("head")[0]||document.documentElement,l=document.createElement("script");if(l.setAttribute("type","text/javascript"),t)if(JSON.stringify(t))for(let e in t)"onload"==e?l[e]=()=>{t[e](),o()}:(l[e]=t[e],l.onload=o);else l.onload=()=>{t(),o()};else l.onload=o;l.setAttribute("src",e),n.appendChild(l)}))})),volantis.css=e=>new Promise((t=>{setTimeout((function(){var o=document.createElement("link");o.rel="stylesheet",o.href=e,o.onload=t,document.getElementsByTagName("head")[0].appendChild(o)}))})),volantis.import={jQuery:()=>"undefined"==typeof jQuery?volantis.js("https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"):new Promise((e=>{e()}))},volantis.requestAnimationFrame=e=>{window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame),window.requestAnimationFrame(e)},volantis.layoutHelper=(e,t,o)=>{function n(e,t,o){volantis.tempDiv=document.createElement("div"),volantis.tempDiv.innerHTML=t;let n=document.querySelector("#layoutHelper-"+e);n&&(o&&(n.innerHTML=""),n.append(volantis.tempDiv))}o=Object.assign({clean:!1,pjax:!0},o),n(e,t,o.clean),o.pjax&&volantis.pjax.push((()=>{n(e,t,o.clean)}),"layoutHelper-"+e)},volantis.scroll={engine:new RunItem,unengine:new RunItem},volantis.scroll=Object.assign(volantis.scroll,{push:volantis.scroll.engine.push}),volantis.scroll.getScrollTop=()=>{let e;return window.pageYOffset?e=window.pageYOffset:document.compatMode&&"BackCompat"!=document.compatMode?e=document.documentElement.scrollTop:document.body&&(e=document.body.scrollTop),e},volantis.scroll.scrollHeight=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},volantis.scroll.offsetHeight=function(){return Math.max(document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},volantis.scroll.progress=function(){return volantis.scroll.getScrollTop()/(volantis.scroll.scrollHeight()-volantis.scroll.offsetHeight())},volantis.scroll.handleScrollEvents=()=>{volantis.scroll.lastScrollTop=volantis.scroll.getScrollTop(),volantis.requestAnimationFrame((function e(){const t=volantis.scroll.getScrollTop();volantis.scroll.lastScrollTop!==t?(volantis.scroll.del=t-volantis.scroll.lastScrollTop,volantis.scroll.lastScrollTop=t,volantis.scroll.unengine.list=[],volantis.scroll.engine.start()):volantis.scroll.unengine.start(),volantis.requestAnimationFrame(e)}))},volantis.scroll.handleScrollEvents(),volantis.scroll.ele=null,volantis.scroll.to=(e,t={})=>{e&&(volantis.scroll.ele=e,opt={top:e.getBoundingClientRect().top+document.documentElement.scrollTop,behavior:"smooth"},"top"in t&&(opt.top=t.top),"behavior"in t&&(opt.behavior=t.behavior),"addTop"in t&&(opt.top+=t.addTop),"observerDic"in t||(t.observerDic=100),window.scrollTo(opt),t.observer&&setTimeout((()=>{volantis.scroll.ele==e&&volantis.scroll.unengine.push((()=>{let o=e.getBoundingClientRect().top;o>=-t.observerDic&&o<=t.observerDic||volantis.scroll.to(e,t),volantis.scroll.unengine.remove("unengineObserver")}),"unengineObserver")}),1e3))},volantis.cleanContentVisibility=()=>{document.querySelector(".post-story")&&(console.log("cleanContentVisibility"),document.querySelectorAll(".post-story").forEach((e=>{e.classList.remove("post-story")})))}</script><script>volantis.GLOBAL_CONFIG={root:"/",debug:!1,default:{avatar:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/avatar/round/3442075.svg",link:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/link/8f277b4ee0ecd.svg",cover:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/cover/76b86c0226ffd.svg",image:"https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/media/placeholder/image/2659360.svg"},lastupdate:new Date(1739832285375),cdn:{izitoast_css:"https://cdn.bootcdn.net/ajax/libs/izitoast/1.4.0/css/iziToast.min.css",izitoast_js:"https://cdn.bootcdn.net/ajax/libs/izitoast/1.4.0/js/iziToast.min.js",fancybox_css:"https://cdn.bootcdn.net/ajax/libs/fancyapps-ui/4.0.31/fancybox.min.css",fancybox_js:"https://cdn.bootcdn.net/ajax/libs/fancyapps-ui/4.0.31/fancybox.umd.min.js"},sidebar:{for_page:["blogger","navigation","webinfo"],for_post:["toc"],webinfo:{lastupd:{enable:!1,friendlyShow:!0},runtime:{data:"2019/08/19",unit:"天"}}},plugins:{message:{enable:!1,icon:{default:"fa-solid fa-info-circle light-blue",quection:"fa-solid fa-question-circle light-blue"},time:{default:5e3,quection:2e4},position:"topRight",transitionIn:"bounceInLeft",transitionOut:"fadeOutRight",titleColor:"var(--color-text)",messageColor:"var(--color-text)",backgroundColor:"var(--color-card)",zindex:2147483647,copyright:{enable:!0,title:"知识共享许可协议",message:"请遵守 CC BY-NC-SA 4.0 协议。",icon:"far fa-copyright light-blue"},aplayer:{enable:!0,play:"fa-solid fa-play",pause:"fa-solid fa-pause"},rightmenu:{enable:!0,notice:!0}},aplayer:{id:1480000098,enable:!0}},search:{dataPath:("/".endsWith("/")?"/":"//")+"content.json"},languages:{search:{hits_empty:"找不到您查询的内容:${query}",hits_stats:"找到 ${hits} 条结果,用时 ${time} 毫秒"}}}</script></head><body itemscope itemtype="http://schema.org/WebPage"><header itemscope itemtype="http://schema.org/WPHeader" id="l_header" class="l_header auto shadow floatable blur show" style="opacity:0"><div class="container"><div id="wrapper"><div class="nav-sub"><p class="title"></p><ul class="switcher nav-list-h m-phone" id="pjax-header-nav-list"><li><a id="s-comment" class="fa-solid fa-comments fa-fw" target="_self" title="comment"></a></li><li><a id="s-toc" class="s-toc fa-solid fa-list fa-fw" target="_self" title="toc"></a></li></ul></div><div class="nav-main"> <a class="title flat-box" target="_self" href="/">MHuiG's Blog</a><div class="menu navigation"><ul class="nav-list-h m-pc"><li><a class="menuitem flat-box faa-parent animated-hover" title="索引"><i class="fa-duotone fa-list-alt fa-fw"></i> 索引</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/notes/" title="便签" active-action="action-notes"><i class="fa-duotone fa-books fa-fw"></i> 便签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/categories/" title="分类" active-action="action-categories"><i class="fa-duotone fa-folder-open fa-fw"></i> 分类</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/tags/" title="标签" active-action="action-tags"><i class="fa-duotone fa-tags fa-fw"></i> 标签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/archives/" title="归档" active-action="action-archives"><i class="fa-duotone fa-archive fa-fw"></i> 归档</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/friends/" title="友链" active-action="action-pagesfriends"><i class="fa-duotone fa-link fa-fw"></i> 友链</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="https://www.travellings.cn/go-by-clouds.html" title="Travelling" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway fa-fw"></i> Travelling</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/about/" title="关于" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie fa-fw"></i> 关于</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="noopener" href="https://mhuig.top/privacy-policy/" title="隐私政策" active-action="action-https:mhuigtopprivacy-policy"><i class="fa-duotone fa-user-secret fa-fw"></i> 隐私政策</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" title="更多"><i class="fa-duotone fa-fan fa-spin fa-fw"></i> 更多</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/beer/" title="Sponsor" active-action="action-pagesbeer"><i class="fa-duotone fa-heart-square fa-fw"></i> Sponsor</a></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="博客管理"><i class="fa-duotone fa-user-shield fa-fw"></i> 博客管理</a><ul class="list-v"><li><a class="menuitem flat-box header toggle-mode-btn"><i class="fa-duotone fa-bat fa-fw"></i> 暗黑模式</a></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/rss/" title="RSS订阅" active-action="action-pagesrss"><i class="fa-duotone fa-rss fa-fw"></i> RSS订阅</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/sitemap.xml" title="站点地图" active-action="action-sitemapxml"><i class="fa-duotone fa-sitemap fa-fw"></i> 站点地图</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://mhuig.instatus.com/" title="Monitors" active-action="action-https:mhuiginstatuscom"><i class="fa-duotone fa-telescope fa-fw"></i> Monitors</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://ssl.mhuig.top/" title="SSL Status" active-action="action-https:sslmhuigtop"><i class="fa-brands fa-expeditedssl fa-fw"></i> SSL Status</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="工具箱"><i class="fa-duotone fa-tools fa-fw"></i> 工具箱</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://rssbox.mhuig.top/" title="RSS Box" active-action="action-https:rssboxmhuigtop"><i class="fa-duotone fa-conveyor-belt-boxes fa-fw"></i> RSS Box</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/havefun/Coco/" title="My Cat" active-action="action-havefunCoco"><i class="fa-duotone fa-cat fa-fw"></i> My Cat</a></li><li><a class="menuitem flat-box"><i class="fa-duotone fa-compact-disc fa-spin fa-fw music"></i> Music</a><ul class="list-v"><li><div class="aplayer-container"><div class="aplayer-local"></div></div></li></ul></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/talk/" title="碎言碎语" active-action="action-pagestalk"><i class="fa-duotone fa-comments fa-fw"></i> 碎言碎语</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" title="GitHub" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github fa-fw"></i> GitHub</a></li></ul></li></ul></div><div class="m_search"><form name="searchform" class="form u-search-form"><i class="icon fa-solid fa-search fa-fw"></i> <input type="text" class="input u-search-input" placeholder="Search..."></form></div><ul class="switcher nav-list-h m-phone"><li><a class="s-search fa-solid fa-search fa-fw" target="_self" title="search"></a></li><li><a class="s-menu fa-solid fa-bars fa-fw" target="_self" title="menu"></a><ul class="menu-phone list-v navigation white-box"><li><a class="menuitem flat-box faa-parent animated-hover" title="索引"><i class="fa-duotone fa-list-alt fa-fw"></i> 索引</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/notes/" title="便签" active-action="action-notes"><i class="fa-duotone fa-books fa-fw"></i> 便签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/categories/" title="分类" active-action="action-categories"><i class="fa-duotone fa-folder-open fa-fw"></i> 分类</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/tags/" title="标签" active-action="action-tags"><i class="fa-duotone fa-tags fa-fw"></i> 标签</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/archives/" title="归档" active-action="action-archives"><i class="fa-duotone fa-archive fa-fw"></i> 归档</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/friends/" title="友链" active-action="action-pagesfriends"><i class="fa-duotone fa-link fa-fw"></i> 友链</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="https://www.travellings.cn/go-by-clouds.html" title="Travelling" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway fa-fw"></i> Travelling</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/about/" title="关于" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie fa-fw"></i> 关于</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="noopener" href="https://mhuig.top/privacy-policy/" title="隐私政策" active-action="action-https:mhuigtopprivacy-policy"><i class="fa-duotone fa-user-secret fa-fw"></i> 隐私政策</a></li></ul></li><li><a class="menuitem flat-box faa-parent animated-hover" title="更多"><i class="fa-duotone fa-fan fa-spin fa-fw"></i> 更多</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/beer/" title="Sponsor" active-action="action-pagesbeer"><i class="fa-duotone fa-heart-square fa-fw"></i> Sponsor</a></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="博客管理"><i class="fa-duotone fa-user-shield fa-fw"></i> 博客管理</a><ul class="list-v"><li><a class="menuitem flat-box header toggle-mode-btn"><i class="fa-duotone fa-bat fa-fw"></i> 暗黑模式</a></li><li></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/rss/" title="RSS订阅" active-action="action-pagesrss"><i class="fa-duotone fa-rss fa-fw"></i> RSS订阅</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/sitemap.xml" title="站点地图" active-action="action-sitemapxml"><i class="fa-duotone fa-sitemap fa-fw"></i> 站点地图</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://mhuig.instatus.com/" title="Monitors" active-action="action-https:mhuiginstatuscom"><i class="fa-duotone fa-telescope fa-fw"></i> Monitors</a></li><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://ssl.mhuig.top/" title="SSL Status" active-action="action-https:sslmhuigtop"><i class="fa-brands fa-expeditedssl fa-fw"></i> SSL Status</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" title="工具箱"><i class="fa-duotone fa-tools fa-fw"></i> 工具箱</a><ul class="list-v"><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://rssbox.mhuig.top/" title="RSS Box" active-action="action-https:rssboxmhuigtop"><i class="fa-duotone fa-conveyor-belt-boxes fa-fw"></i> RSS Box</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/havefun/Coco/" title="My Cat" active-action="action-havefunCoco"><i class="fa-duotone fa-cat fa-fw"></i> My Cat</a></li><li><a class="menuitem flat-box faa-parent animated-hover" href="/pages/talk/" title="碎言碎语" active-action="action-pagestalk"><i class="fa-duotone fa-comments fa-fw"></i> 碎言碎语</a></li></ul></li><hr><li><a class="menuitem flat-box faa-parent animated-hover" target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" title="GitHub" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github fa-fw"></i> GitHub</a></li></ul></li></ul></li></ul></div></div></div></header><div id="l_body"><div id="l_cover"><div id="none" class="cover-wrapper post featured" style="display:none"><div class="cover-bg lazyload placeholder" data-bg></div><div class="cover-body"><div class="top"><p class="title">MHuiG</p><p class="subtitle">「看庭前花开花落,望天上云卷云舒」</p></div><div class="bottom"><div class="menu navigation"><div class="list-h"><a target="_blank" rel="external nofollow noopener noreferrer" href="https://github.com/MHuiG" active-action="action-https:githubcomMHuiG"><i class="fa-brands fa-github color-github fa-fw"></i><p>Github</p></a><a href="/pages/friends/" active-action="action-pagesfriends"><i class="fa-duotone fa-link color-friends fa-fw"></i><p>友链</p></a><a href="/pages/about/" active-action="action-pagesabout"><i class="fa-duotone fa-user-tie color-about fa-fw"></i><p>关于</p></a><a href="https://www.travellings.cn/go-by-clouds.html" target="_blank" active-action="action-https:wwwtravellingscngo-by-cloudshtml" rel="external nofollow noopener noreferrer"><i class="fa-duotone fa-subway color-travellings fa-fw"></i><p>Travelling</p></a></div></div></div></div><div id="scroll-down" style="display:none"><i class="fa fa-chevron-down scroll-down-effects"></i></div></div></div><div id="safearea"><div class="body-wrapper"><div id="l_main" class><article itemscope itemtype="http://schema.org/Article" class="article post white-box reveal md shadow floatable blur article-type-post" id="post" itemprop="blogPost"><link itemprop="mainEntityOfPage" href="https://blog.mhuig.top/p/56213be8/"><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="MHuiG"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/Post"><meta itemprop="name" content="MHuiG"><meta itemprop="description" content="MHuiG&#39;s Blog (MHuiG的博客) MHuiG&#39;s Neverland(MHuiG的梦幻岛) —— MHuiG(@MHuiG) 随便写写画画的地方 - 技术博客"></span><div class="headimg-div"> <a class="headimg-a"><img itemprop="image" class="headimg lazyload" src="https://static.mhuig.top/npm/mhgoos@0.0.1651994754992/2020116102711.webp" data-srcset="https://static.mhuig.top/npm/mhgoos@0.0.1651994754992/2020116102711.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="></a></div><div class="article-meta" id="top"><h1 class="title" itemprop="name headline"> 尝试使用 GPU 加速计算</h1><div class="new-meta-box"><div class="new-meta-item author" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" class="author" target="_blank" href="https://mhuig.top/" rel="nofollow noopener"><img itemprop="image" src="/lib/avatar/avatar-16.webp?v=2199236952" class="lazyload" data-srcset="/lib/avatar/avatar-16.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="><p itemprop="name">MHuiG</p></a></div><div class="new-meta-item wordcount"><a class="notlink"><i class="fa-duotone fa-keyboard fa-fw" aria-hidden="true"></i><p>字数:1.9k 字</p></a></div><div class="new-meta-item readtime"><a class="notlink"><i class="fa-duotone fa-hourglass-half fa-fw" aria-hidden="true"></i><p>时长:10 分钟</p></a></div></div></div><div id="layoutHelper-page-plugins"></div><div id="post-body" itemprop="articleBody"><p>大规模训练,gpu 和 cpu 速度差别很大。</p><span id="more"></span><div class="story post-story"><h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><h3 id="GPU"><a href="#GPU" class="headerlink" title="GPU"></a>GPU</h3><ul><li>CPU (Central Processing Unit) 即中央处理器。</li><li>GPU (Graphics Processing Unit) 即图形处理器。</li></ul><p>当程序员为 CPU 编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,即 Latency。<br>当程序员为 GPU 编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖 Lantency。</p><p><img src="data:image/jpeg;base64,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" alt="GPU"></p><p>其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。</p><p>首先你需要硬件支持,一块能够支持 GPU 加速计算的显卡,这里以 NVIDIA 的 GPU 为例。</p><h3 id="CUDA"><a href="#CUDA" class="headerlink" title="CUDA"></a>CUDA</h3><p>CUDA(Compute Unified Device Architecture),是显卡厂商 NVIDIA 推出的运算平台。 CUDA™是一种由 NVIDIA 推出的通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题。</p><p>CUDA 提供了一种可扩展的编程模型,使得已经写好的 CUDA 代码可以在任意数量核心的 GPU 上运行。只有运行时,系统才知道物理处理器的数量。</p><p><img src="https://static.mhuig.top/npm/imbox@0.0.3/data/2020101183832.png" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.3/data/2020101183832.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="CUDA"></p><h3 id="CUDNN"><a href="#CUDNN" class="headerlink" title="CUDNN"></a>CUDNN</h3><p>NVIDIA cuDNN 是用于深度神经网络的 GPU 加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN 可以集成到更高级别的机器学习框架中,如加州大学伯克利分校的流行 CAFFE 软件。简单的,插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在 GPU 上实现高性能现代并行计算。</p></div><div class="story post-story"><h2 id="支持GPU的计算框架"><a href="#支持GPU的计算框架" class="headerlink" title="支持GPU的计算框架"></a>支持 GPU 的计算框架</h2><h3 id="Tensorflow-GPU"><a href="#Tensorflow-GPU" class="headerlink" title="Tensorflow-GPU"></a>Tensorflow-GPU</h3><p>安装教程参考 <a target="_blank" rel="external nofollow noopener noreferrer" href="https://tensorflow.google.cn/install">https://tensorflow.google.cn/install</a></p><p>需要注意的是 严格对应 tensorflow_gpu、Python、 编译器、 cuDNN、CUDA 的版本关系。</p><p>相关对应关系 windows 平台可参考:</p><p><a target="_blank" rel="external nofollow noopener noreferrer" href="https://tensorflow.google.cn/install/source_windows#gpu">Tensorflow 文档</a></p><p><a target="_blank" rel="external nofollow noopener noreferrer" href="https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html">显卡驱动与 Cuda 版本之间的对应关系</a></p><p><a target="_blank" rel="external nofollow noopener noreferrer" href="https://developer.nvidia.com/rdp/cudnn-archive">cuda 与 cudnn 版本之间的对应关系</a></p><p>打开 NVIDIA 控制面板进入系统信息,可查看当前支持的 CUDA 驱动版本。</p><p><img src="https://static.mhuig.top/npm/mhgoos@0.0.1651994863868/2020101194632.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/mhgoos@0.0.1651994863868/2020101194632.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="查看当前支持的CUDA驱动版本"></p><p>这里的 CUDA 驱动版本是指你只可以安装该版本及以下版本的 CUDA。</p><p>根据实际情况,笔者计划使用的环境是:</p><ul><li>tensorflow_gpu-1.14.0</li><li>python 3.7</li><li>MSVC 2017</li><li>cuDNN 7.4.2.24</li><li>CUDA 10.0.130</li></ul><h4 id="安装CUDA"><a href="#安装CUDA" class="headerlink" title="安装CUDA"></a>安装 CUDA</h4><p>进入 <a target="_blank" rel="external nofollow noopener noreferrer" href="https://developer.nvidia.com/cuda-toolkit-archive">cuda-toolkit-archive</a> 选择需要的 CUDA Toolkit 版本下载安装即可。</p><p>笔者选择 network 安装方式。注意第一个路径是选择临时解压路径。选择自定义安装,取消安装不需要的应用,如 NVIDIA GeForce Experience。</p><p>在 cmd 中执行:</p><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><span class="line">nvcc -V</span><br></pre></td></tr></tbody></table></figure><p><img src="https://static.mhuig.top/npm/imbox@0.0.3/data/2020101194654.png" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.3/data/2020101194654.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="nvcc -V"></p><p>需要注意配置相关环境变量。</p><h4 id="安装CUDNN"><a href="#安装CUDNN" class="headerlink" title="安装CUDNN"></a>安装 CUDNN</h4><p>进入 <a target="_blank" rel="external nofollow noopener noreferrer" href="https://developer.nvidia.com/rdp/cudnn-archive">cudnn-archive</a> 选择需要的 CUDA Toolkit 版本下载解压即可。</p><p>笔者将 CUDA 默认安装在 <code>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0</code></p><p>将 CUDNN 解压到 <code>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0</code> 中即可。</p><p>或者配置单独的环境变量。</p><h4 id="安装Tensorflow-GPU"><a href="#安装Tensorflow-GPU" class="headerlink" title="安装Tensorflow-GPU"></a>安装 Tensorflow-GPU</h4><p>如果之前安装过 cpu 版本的 Tensorflow 需要进行卸载.</p><p>若在虚拟环境中使用 conda 安装,conda 会自动安装相关的 cuda 和 cudnn 依赖。</p><figure class="highlight bash"><table><tbody><tr><td class="code"><pre><span class="line">conda install tensorflow-gpu</span><br></pre></td></tr></tbody></table></figure><p><img src="https://static.mhuig.top/npm/imbox@0.0.3/data/2020101194713.png" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.3/data/2020101194713.png" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="安装Tensorflow-GPU"></p><p>下面给出一段 GPU 测试程序:</p><figure class="highlight python"><table><tbody><tr><td class="code"><pre><span class="line"><span class="keyword">import</span> time</span><br><span class="line"><span class="keyword">import</span> tensorflow <span class="keyword">as</span> tf</span><br><span class="line">begin = time.time()</span><br><span class="line"><span class="keyword">with</span> tf.device(<span class="string">'/gpu:0'</span>):</span><br><span class="line"> rand_t = tf.random_uniform([<span class="number">50</span>,<span class="number">50</span>],<span class="number">0</span>,<span class="number">10</span>,dtype=tf.float32,seed=<span class="number">0</span>)</span><br><span class="line"> a = tf.Variable(rand_t)</span><br><span class="line"> b = tf.Variable(rand_t)</span><br><span class="line"> c = tf.matmul(a,b)</span><br><span class="line"> init = tf.global_variables_initializer()</span><br><span class="line">sess = tf.Session(config=tf.ConfigProto(log_device_placement=<span class="literal">True</span>)) <span class="comment">#强制使用GPU</span></span><br><span class="line">sess.run(init)</span><br><span class="line"><span class="built_in">print</span>(sess.run(c))</span><br><span class="line">end = time.time()</span><br><span class="line"><span class="built_in">print</span>(end-begin,<span class="string">'s'</span>)</span><br></pre></td></tr></tbody></table></figure><p>运行结果:</p><figure class="highlight plaintext"><table><tbody><tr><td class="code"><pre><span class="line">2020-10-11 09:36:56.713905: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2</span><br><span class="line">2020-10-11 09:36:56.742138: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library nvcuda.dll</span><br><span class="line">2020-10-11 09:36:57.193243: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties:</span><br><span class="line">name: GeForce GTX 960M major: 5 minor: 0 memoryClockRate(GHz): 1.176</span><br><span class="line">pciBusID: 0000:01:00.0</span><br><span class="line">2020-10-11 09:36:57.199952: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check.</span><br><span class="line">2020-10-11 09:36:57.204946: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0</span><br><span class="line">2020-10-11 09:36:58.622428: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] Device interconnect StreamExecutor with strength 1 edge matrix:</span><br><span class="line">2020-10-11 09:36:58.626880: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1187] 0</span><br><span class="line">2020-10-11 09:36:58.630073: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1200] 0: N</span><br><span class="line">2020-10-11 09:36:58.633910: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1382 MB memory) -> physical GPU (device: 0, name: GeForce GTX 960M, pci bus id: 0000:01:00.0, compute capability: 5.0)</span><br><span class="line">Device mapping:</span><br><span class="line">/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 960M, pci bus id: 0000:01:00.0, compute capability: 5.0</span><br><span class="line">2020-10-11 09:36:58.657797: I tensorflow/core/common_runtime/direct_session.cc:296] Device mapping:</span><br><span class="line">/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 960M, pci bus id: 0000:01:00.0, compute capability: 5.0</span><br><span class="line"></span><br><span class="line">random_uniform/RandomUniform: (RandomUniform): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.683509: I tensorflow/core/common_runtime/placer.cc:54] random_uniform/RandomUniform: (RandomUniform)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">random_uniform/sub: (Sub): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.690684: I tensorflow/core/common_runtime/placer.cc:54] random_uniform/sub: (Sub)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">random_uniform/mul: (Mul): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.705871: I tensorflow/core/common_runtime/placer.cc:54] random_uniform/mul: (Mul)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">random_uniform: (Add): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.719880: I tensorflow/core/common_runtime/placer.cc:54] random_uniform: (Add)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">Variable: (VariableV2): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.738611: I tensorflow/core/common_runtime/placer.cc:54] Variable: (VariableV2)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">Variable/Assign: (Assign): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.749906: I tensorflow/core/common_runtime/placer.cc:54] Variable/Assign: (Assign)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">Variable/read: (Identity): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.759648: I tensorflow/core/common_runtime/placer.cc:54] Variable/read: (Identity)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">Variable_1: (VariableV2): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.769854: I tensorflow/core/common_runtime/placer.cc:54] Variable_1: (VariableV2)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">Variable_1/Assign: (Assign): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.776819: I tensorflow/core/common_runtime/placer.cc:54] Variable_1/Assign: (Assign)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">Variable_1/read: (Identity): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.792460: I tensorflow/core/common_runtime/placer.cc:54] Variable_1/read: (Identity)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">MatMul: (MatMul): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.808352: I tensorflow/core/common_runtime/placer.cc:54] MatMul: (MatMul)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">init: (NoOp): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.823256: I tensorflow/core/common_runtime/placer.cc:54] init: (NoOp)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">random_uniform/shape: (Const): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.838355: I tensorflow/core/common_runtime/placer.cc:54] random_uniform/shape: (Const)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">random_uniform/min: (Const): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.853758: I tensorflow/core/common_runtime/placer.cc:54] random_uniform/min: (Const)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">random_uniform/max: (Const): /job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">2020-10-11 09:36:58.868493: I tensorflow/core/common_runtime/placer.cc:54] random_uniform/max: (Const)/job:localhost/replica:0/task:0/device:GPU:0</span><br><span class="line">[[1405.2429 1441.7413 1364.38 ... 1480.2251 1279.0061 1620.0938 ]</span><br><span class="line"> [1232.6589 1344.4458 1169.7095 ... 1205.1284 1040.5566 1421.967 ]</span><br><span class="line"> [1209.3164 1180.3206 1158.1396 ... 1200.0344 1014.03217 1222.5107 ]</span><br><span class="line"> ...</span><br><span class="line"> [1298.9648 1262.9236 1205.6918 ... 1396.479 1090.7253 1437.241 ]</span><br><span class="line"> [1118.2473 1209.0151 1077.7229 ... 1180.7025 1076.4694 1139.742 ]</span><br><span class="line"> [1200.8866 1297.2266 1260.01 ... 1289.4297 1165.2448 1433.4183 ]]</span><br><span class="line">2.6225805282592773 s</span><br></pre></td></tr></tbody></table></figure><p>可以看到 GPU 已经在工作了。</p><p>同时可以在 cmd 中运行 nvidia-smi【C:\Program Files\NVIDIA Corporation\NVSMInvidia-smi.exe】监控 GPU 使用情况和更改 GPU 状态。</p><h3 id="Keras-GPU"><a href="#Keras-GPU" class="headerlink" title="Keras-GPU"></a>Keras-GPU</h3><p>conda 直接安装即可,注意需要先安装 tensorflow-gpu。</p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">conda install keras-gpu</span><br></pre></td></tr></tbody></table></figure><h3 id="Pytorch-GPU"><a href="#Pytorch-GPU" class="headerlink" title="Pytorch-GPU"></a>Pytorch-GPU</h3><p>再也找不到比官网更详尽的文档了,请直接参考 <a target="_blank" rel="external nofollow noopener noreferrer" href="https://pytorch.org/%E3%80%82">https://pytorch.org/。</a></p><figure class="highlight shell"><table><tbody><tr><td class="code"><pre><span class="line">conda install pytorch torchvision cudatoolkit=10.0</span><br></pre></td></tr></tbody></table></figure><p>GPU 测试程序:</p><figure class="highlight python"><table><tbody><tr><td class="code"><pre><span class="line"><span class="keyword">import</span> torch</span><br><span class="line">flag = torch.cuda.is_available()</span><br><span class="line"><span class="built_in">print</span>(flag)</span><br><span class="line"></span><br><span class="line">ngpu= <span class="number">1</span></span><br><span class="line"><span class="comment"># Decide which device we want to run on</span></span><br><span class="line">device = torch.device(<span class="string">"cuda:0"</span> <span class="keyword">if</span> (torch.cuda.is_available() <span class="keyword">and</span> ngpu > <span class="number">0</span>) <span class="keyword">else</span> <span class="string">"cpu"</span>)</span><br><span class="line"><span class="built_in">print</span>(device)</span><br><span class="line"><span class="built_in">print</span>(torch.cuda.get_device_name(<span class="number">0</span>))</span><br><span class="line"><span class="built_in">print</span>(torch.rand(<span class="number">3</span>,<span class="number">3</span>).cuda()) </span><br></pre></td></tr></tbody></table></figure><p>输出结果:</p><figure class="highlight python"><table><tbody><tr><td class="code"><pre><span class="line"><span class="literal">True</span></span><br><span class="line">cuda:<span class="number">0</span></span><br><span class="line">GeForce GTX 960M</span><br><span class="line">tensor([[<span class="number">0.0208</span>, <span class="number">0.2799</span>, <span class="number">0.4918</span>],</span><br><span class="line"> [<span class="number">0.0020</span>, <span class="number">0.1067</span>, <span class="number">0.8207</span>],</span><br><span class="line"> [<span class="number">0.5531</span>, <span class="number">0.0994</span>, <span class="number">0.2108</span>]], device=<span class="string">'cuda:0'</span>)</span><br></pre></td></tr></tbody></table></figure></div></div><div class="footer"><div class="copyright license"><div class="license-title">尝试使用 GPU 加速计算</div><div class="license-link"><a href="https://blog.mhuig.top/p/56213be8/">https://blog.mhuig.top/p/56213be8/</a></div><div class="license-meta"><div class="license-meta-item"><div class="license-meta-title">本文作者</div><div class="license-meta-text">MHuiG</div></div><div class="license-meta-item"><div class="license-meta-title">发布于</div><div class="license-meta-text">2020年10月11日</div></div><div class="license-meta-item"><div class="license-meta-title">许可协议</div><div class="license-meta-text"><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh#" target="_blank" rel="external nofollow noopener noreferrer">CC BY-NC-SA 4.0</a></div></div></div><div class="license-statement">署名-非商业性使用-相同方式共享 4.0 国际。</div></div></div><div class="article-meta" id="bottom"><div class="new-meta-box"><div class="new-meta-item category"><i class="fa-duotone fa-folder-open fa-fw" aria-hidden="true"></i> <a class="category-link" href="/categories/Data-mining/">Data mining</a> <span hidden itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/Data-mining/" itemprop="url"><span itemprop="name">Data mining</span></a></span></div><div class="new-meta-item meta-tags"><a class="tag" href="/tags/Data-mining/" rel="nofollow"><i class="fa-duotone fa-hashtag fa-fw" aria-hidden="true"></i><p>Data mining</p></a></div><div class="new-meta-item meta-tags"><a class="tag" href="/tags/Machine-Learning/" rel="nofollow"><i class="fa-duotone fa-hashtag fa-fw" aria-hidden="true"></i><p>Machine Learning</p></a></div> <span hidden itemprop="keywords">Data mining Machine Learning</span><div class="new-meta-item date" itemprop="dateCreated datePublished" datetime="2020-10-11T09:11:44+08:00"><a class="notlink"><i class="fa-duotone fa-calendar-alt fa-fw" aria-hidden="true"></i><p>发布于:2020年10月11日</p></a></div><div class="new-meta-item date" itemprop="dateModified" datetime="2020-10-11T09:11:44+08:00"><a class="notlink"><i class="fa-duotone fa-edit fa-fw" aria-hidden="true"></i><p>更新于:2020年10月11日</p></a></div></div></div><div class="prev-next"><a class="prev" href="/p/48f700eb/"><p class="title"><i class="fa-solid fa-chevron-left" aria-hidden="true"></i>BERT 预训练模型及其应用案例</p><p class="content">预训练模型最开始是在图像领域提出的,获得了良好的效果,近几年才被广泛应用到自然语言处理各项任务中。 (1) 2003 年 Bengio 提出神经网络语言模型 NNLM,从此统一了 NLP 的特...</p></a><a class="next" href="/p/fe073ab3/"><p class="title">R 语言初步<i class="fa-solid fa-chevron-right" aria-hidden="true"></i></p><p class="content">尝试使用 R 语言进行数据处理 安装 R进入 https://www.r-project.org 下载安装包即可. 安装包,载入包的命令安装包install.packages("mlbenc...</p></a></div><div class="recommended-article"><div class="recommended-article-header"><i class="fa-solid fa-bookmark fa-fw" aria-hidden="true"></i> <span>推荐阅读</span></div><div class="recommended-article-group"> <a class="recommended-article-item" href="/notes/Hadoop/mapreduce-mechanism.html" title="大数据处理技术-Hadoop-MapReduce的运行机制" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/54.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/54.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="大数据处理技术-Hadoop-MapReduce的运行机制"> <span class="title">大数据处理技术-Hadoop-MapReduce的运行机制</span></a> <a class="recommended-article-item" href="/notes/Hadoop/wordcount.html" title="大数据处理技术-Hadoop-MapReduce编程模型-WordCount实例分析" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/75.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/75.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="大数据处理技术-Hadoop-MapReduce编程模型-WordCount实例分析"> <span class="title">大数据处理技术-Hadoop-MapReduce编程模型-WordCount实例分析</span></a> <a class="recommended-article-item" href="/notes/Azkaban/deploy.html" title="Azkaban 安装部署" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/108.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/108.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="Azkaban 安装部署"> <span class="title">Azkaban 安装部署</span></a> <a class="recommended-article-item" href="/notes/Hadoop/yarn.html" title="大数据处理技术-Hadoop-Yarn 资源调度" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/50.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/50.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="大数据处理技术-Hadoop-Yarn 资源调度"> <span class="title">大数据处理技术-Hadoop-Yarn 资源调度</span></a> <a class="recommended-article-item" href="/p/2f550c8c/" title="How to Setup Your Python Environment for Machine Learning With Anaconda" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/75.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/75.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="How to Setup Your Python Environment for Machine Learning With Anaconda"> <span class="title">How to Setup Your Python Environment for Machine Learning With Anaconda</span></a> <a class="recommended-article-item" href="/notes/OS/introduction.html" title="操作系统引论" rel="bookmark"><img src="https://static.mhuig.top/npm/imbox@0.0.15/c/40.webp" class="lazyload" data-srcset="https://static.mhuig.top/npm/imbox@0.0.15/c/40.webp" srcset="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="操作系统引论"> <span class="title">操作系统引论</span></a></div></div></article><article class="post white-box shadow floatable blur" id="comments"><span hidden><meta itemprop="discussionUrl" content="/p/56213be8/#comments"></span><p ct><i class="fa-duotone fa-comments"></i> 留言区</p><div id="layoutHelper-comments"></div></article></div><aside id="l_side" itemscope itemtype="http://schema.org/WPSideBar"><div class="widget-sticky pjax"><section class="widget toc-wrapper desktop mobile" id="toc-div"><header><i class="fa-duotone fa-list fa-fw" aria-hidden="true"></i> <span class="name">本文目录</span></header><div class="content"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%A6%82%E8%BF%B0"><span class="toc-text">概述</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#GPU"><span class="toc-text">GPU</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#CUDA"><span class="toc-text">CUDA</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#CUDNN"><span class="toc-text">CUDNN</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%94%AF%E6%8C%81GPU%E7%9A%84%E8%AE%A1%E7%AE%97%E6%A1%86%E6%9E%B6"><span class="toc-text">支持 GPU 的计算框架</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#Tensorflow-GPU"><span class="toc-text">Tensorflow-GPU</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%AE%89%E8%A3%85CUDA"><span class="toc-text">安装 CUDA</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%AE%89%E8%A3%85CUDNN"><span class="toc-text">安装 CUDNN</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#%E5%AE%89%E8%A3%85Tensorflow-GPU"><span class="toc-text">安装 Tensorflow-GPU</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Keras-GPU"><span class="toc-text">Keras-GPU</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#Pytorch-GPU"><span class="toc-text">Pytorch-GPU</span></a></li></ol></li></ol></div></section></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div><div class="pjax"></div></aside><pjax><script>window.pdata={},pdata.ispage=!0,pdata.commentPath="",pdata.commentPlaceholder="",pdata.commentConfig={};var l_header=document.getElementById("l_header");l_header.classList.add("show");var cover_wrapper=document.querySelector("#l_cover .cover-wrapper"),scroll_down=document.getElementById("scroll-down");cover_wrapper.id="none",cover_wrapper.style.display="none",scroll_down.style.display="none"</script></pjax></div><footer class="footer clearfix" itemscope itemtype="http://schema.org/WPFooter"><br><br><div class="aplayer-container"><div class="aplayer-local"></div></div><br><div class="social-wrapper" itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/atom.xml" class="social fa-duotone fa-rss flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://mhuig.top/contact/" class="social fa-duotone fa-envelope flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://github.com/MHuiG" class="social fa-brands fa-github flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a><a href="https://t.me/MHuiG" class="social fa-brands fa-telegram flat-btn" target="_blank" rel="external nofollow noopener noreferrer" itemprop="url"></a></div><div><p>博客内容遵循 <a target="_blank" rel="external nofollow noopener noreferrer" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh">署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议</a></p></div><div class="copyright"><p><a href="https://icp.gov.moe" target="_blank" rel="external nofollow noopener noreferrer">萌ICP备</a> <a href="https://icp.gov.moe/?keyword=2020012138" target="_blank" rel="external nofollow noopener noreferrer">2020012138号</a><br><a target="_blank" rel="noopener" href="https://mhuig.top/">Copyright © Since 2018 MHuiG</a></p></div></footer><a id="s-top" class="fa-solid fa-arrow-up fa-fw" title="top"></a></div></div><div><script>volantis.dom.bodyAnchor=volantis.dom.$(document.getElementById("safearea")),volantis.dom.topBtn=volantis.dom.$(document.getElementById("s-top")),volantis.dom.wrapper=volantis.dom.$(document.getElementById("wrapper")),volantis.dom.coverAnchor=volantis.dom.$(document.querySelector("#l_cover .cover-wrapper")),volantis.dom.switcher=volantis.dom.$(document.querySelector("#l_header .switcher .s-search")),volantis.dom.header=volantis.dom.$(document.getElementById("l_header")),volantis.dom.search=volantis.dom.$(document.querySelector("#l_header .m_search")),volantis.dom.mPhoneList=volantis.dom.$(document.querySelectorAll("#l_header .m-phone .list-v"))</script><script>volantis.css("https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/libs/@fortawesome/fontawesome-pro/css/all.min.css")</script><script src="/js/app.js?v=196690b6a0"></script><script>const rootElement=document.documentElement,darkModeStorageKey="color-scheme",rootElementDarkModeAttributeName="color-scheme",setLS=(e,t)=>{localStorage.setItem(e,t)},removeLS=e=>{localStorage.removeItem(e)},getLS=e=>localStorage.getItem(e),getModeFromCSSMediaQuery=()=>window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",resetRootDarkModeAttributeAndLS=()=>{rootElement.removeAttribute("color-scheme"),removeLS("color-scheme")},validColorModeKeys={dark:!0,light:!0},applyCustomDarkModeSettings=e=>{const t=e||getLS("color-scheme");getCustomDarkMode(),t===getModeFromCSSMediaQuery()?resetRootDarkModeAttributeAndLS():validColorModeKeys[t]?rootElement.setAttribute("color-scheme",t):resetRootDarkModeAttributeAndLS()},invertDarkModeObj={dark:"light",light:"dark"},getCustomDarkMode=()=>{let e=getLS("color-scheme");if(validColorModeKeys[e])e=invertDarkModeObj[e];else{if(null!==e)return;e=invertDarkModeObj[getModeFromCSSMediaQuery()]}volantis.dark.mode="dark"==e?"light":"dark"},toggleCustomDarkMode=()=>{let e=getLS("color-scheme");if(validColorModeKeys[e])e=invertDarkModeObj[e];else{if(null!==e)return;e=invertDarkModeObj[getModeFromCSSMediaQuery()]}return setLS("color-scheme",e),e};function bindToggleButton(){document.querySelectorAll("#wrapper .toggle-mode-btn,#rightmenu-wrapper .toggle-mode-btn").forEach((function(e){volantis.dom.$(e).on("click",volantis.dark.toggle)}))}volantis.dark.toggle=()=>{const e=toggleCustomDarkMode();applyCustomDarkModeSettings(e),volantis.dark.method.toggle.start()},applyCustomDarkModeSettings(),document.addEventListener("DOMContentLoaded",(()=>{volantis.requestAnimationFrame(bindToggleButton)})),volantis.pjax.push(bindToggleButton);const darkModelListeners={dark:e=>{e.matches&&(volantis.dark.mode="dark"),volantis.dark.method.toggle.start()},light:e=>{e.matches&&(volantis.dark.mode="light"),volantis.dark.method.toggle.start()}};window.matchMedia("(prefers-color-scheme: dark)").addListener(darkModelListeners.dark),window.matchMedia("(prefers-color-scheme: light)").addListener(darkModelListeners.light)</script><script>function loadIssuesJS(){null!=document.getElementById("sites-api")&&"undefined"==typeof SitesJS&&volantis.js("/js/plugins/tags/sites.js?v=a7e55dacdf");null!=document.getElementById("friends-api")&&"undefined"==typeof FriendsJS&&volantis.js("/js/plugins/tags/friends.js?v=187f37f894");null!=document.getElementById("contributors-api")&&"undefined"==typeof ContributorsJS&&volantis.js("/js/plugins/tags/contributors.js?v=16e248333a")}loadIssuesJS(),volantis.pjax.push((()=>{loadIssuesJS()}))</script><script defer="defer" src="https://cdn.bootcdn.net/ajax/libs/vanilla-lazyload/17.1.0/lazyload.min.js"></script><script>window.lazyLoadOptions={elements_selector:".lazyload",threshold:0},window.addEventListener("LazyLoad::Initialized",(function(n){window.lazyLoadInstance=n.detail.instance}),!1),document.addEventListener("DOMContentLoaded",(function(){lazyLoadInstance.update()})),document.addEventListener("pjax:complete",(function(){lazyLoadInstance.update()}))</script><script>window.FPConfig={delay:0,ignoreKeywords:["#"],maxRPS:6,hoverDelay:0}</script><script defer="defer" src="https://static.mhuig.top/npm/volantis-static@0.0.1660614606622/libs/flying-pages/flying-pages.min.js"></script><script type="text/javascript">function pjax_scrollrebeal(){ScrollReveal().reveal("#l_main .reveal",{distance:"32px",duration:"800",interval:"20",scale:"1",easing:"ease-out"})}function init_scrollrebeal(){"undefined"==typeof ScrollReveal?volantis.requestAnimationFrame(init_scrollrebeal):pjax_scrollrebeal()}volantis.js("https://cdn.bootcdn.net/ajax/libs/scrollReveal.js/4.0.9/scrollreveal.min.js"),document.addEventListener("DOMContentLoaded",init_scrollrebeal),volantis.pjax.push(pjax_scrollrebeal,"pjax_scrollrebeal",setRequestAnimationFrame=!1)</script><script>volantis.css("https://cdn.bootcdn.net/ajax/libs/aplayer/1.10.1/APlayer.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/aplayer/1.10.1/APlayer.min.js").then((()=>{document.querySelectorAll(".aplayer-local").forEach((e=>{new APlayer({container:e,fixed:!1,order:"list",volume:"0.7",autoplay:!1,loop:"all",theme:"#1BCDFC",listMaxHeight:"320px",listFolded:"true",preload:"auto",lrcType:3,audio:[{name:"虹之间",artist:"钢琴版伴奏",url:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.mp3",lrc:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.lrc",cover:"https://blog.mhuig.top/music-Archive/BetweenTheRainbow.jpg"},{name:"Avem",artist:"Alan Walker",url:"https://blog.mhuig.top/music-Archive/Avem.mp3",lrc:"https://blog.mhuig.top/music-Archive/Avem.lrc",cover:"https://blog.mhuig.top/music-Archive/Avem.jpg"},{name:"Fly",artist:"Marshmello / Leau Culver",url:"https://blog.mhuig.top/music-Archive/fly.mp3",lrc:"https://blog.mhuig.top/music-Archive/fly.lrc",cover:"https://blog.mhuig.top/music-Archive/fly.jpg"},{name:"Alone",artist:"Marshmello",url:"https://blog.mhuig.top/music-Archive/alone.mp3",lrc:"https://blog.mhuig.top/music-Archive/alone.lrc",cover:"https://blog.mhuig.top/music-Archive/alone.jpg"}]})}))}))</script><script>function check_giscus(){return"dark"===volantis.dark.mode?volantis.giscus.Theme="dark":volantis.giscus.Theme="light",document.getElementById("giscus_container")}function pjax_giscus(){const t=check_giscus();if(!t)return;let s=Object.assign({theme:{light:"light",dark:"dark"},repo:"MHuiG/talk","repo-id":"MDEwOlJlcG9zaXRvcnkyODQ4NDg1NTg=",category:"Giscus","category-id":"DIC_kwDOEPpxrs4B_X67",mapping:"pathname","reactions-enabled":"1","emit-metadata":"1",lang:"zh-CN","input-position":"top"},pdata.commentConfig);const e=document.createElement("script");e.setAttribute("src","https://giscus.app/client.js"),Object.keys(s).forEach((t=>{"theme"!=t&&e.setAttribute("data-"+t,s[t])})),e.setAttribute("data-theme",volantis.giscus.Theme),e.setAttribute("crossorigin","anonymous"),t.appendChild(e)}function dark_giscus(){if(!check_giscus())return;const t={setConfig:{theme:volantis.giscus.Theme}};document.querySelector("iframe.giscus-frame").contentWindow.postMessage({giscus:t},"https://giscus.app")}volantis.layoutHelper("comments",'<div id="giscus_container"></div>'),volantis.giscus={},pjax_giscus(),volantis.pjax.push(pjax_giscus),volantis.dark.push(dark_giscus)</script><script>async function loadSearchScript(){return volantis.js("/js/search/hexo.js?v=e2a1e6a8d9");}function loadSearchService(){loadSearchScript(),document.querySelectorAll(".input.u-search-input").forEach((e=>{e.removeEventListener("focus",loadSearchService,!1)})),document.querySelectorAll(".u-search-form").forEach((e=>{e.addEventListener("submit",(e=>{e.preventDefault()}),!1)}))}function OpenSearch(e){"undefined"==typeof SearchService?loadSearchScript().then((()=>{SearchService.setQueryText(e),SearchService.search()})):(SearchService.setQueryText(e),SearchService.search())}if(window.location.search&&/^\?s=/g.test(window.location.search)){OpenSearch(decodeURI(window.location.search).replace(/\ /g,"-").replace(/^\?s=/g,""))}document.querySelectorAll(".input.u-search-input").forEach((e=>{e.addEventListener("focus",loadSearchService,!1)}))</script><script>function pjax_highlightjs_copyCode(){(document.querySelector(".highlight .code pre")||document.querySelector(".article pre code"))&&VolantisApp.utilCopyCode(".highlight .code pre, .article pre code")}volantis.requestAnimationFrame(pjax_highlightjs_copyCode),volantis.pjax.push(pjax_highlightjs_copyCode)</script><script>function load_swiper(){document.querySelectorAll(".swiper-container")[0]&&(volantis.css("https://cdn.bootcdn.net/ajax/libs/Swiper/8.3.2/swiper-bundle.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/Swiper/8.3.2/swiper-bundle.min.js").then((()=>{pjax_swiper()})))}function pjax_swiper(){volantis.swiper=new Swiper(".swiper-container",{slidesPerView:"auto",spaceBetween:8,centeredSlides:!0,loop:!0,pagination:{el:".swiper-pagination",clickable:!0},navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev"}})}load_swiper(),volantis.pjax.push((()=>{document.querySelectorAll(".swiper-container")[0]&&(void 0===volantis.swiper?load_swiper():pjax_swiper())}))</script><script>volantis.css("https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/themes/blue/pace-theme-minimal.min.css"),volantis.js("https://cdn.bootcdn.net/ajax/libs/pace/1.2.4/pace.min.js").then((()=>{Pace.options.restartOnPushState=!1,volantis.pjax.send(Pace.restart),volantis.scroll.push((()=>{Pace.stop(),Pace.trigger("start"),Pace.bar.update(100*volantis.scroll.progress()),document.body.className=document.body.className.replaceAll("pace-running ","")}),"阅读进度")}))</script><pjax></pjax><script>function listenSidebarTOC(){const t=document.querySelectorAll(".toc li");if(!t.length)return;const e=[];Array.from(t).forEach((t=>{const n=t.querySelector(".toc-link"),i=document.getElementById(n.getAttribute("href")?decodeURI(n.getAttribute("href")).replace("#",""):n.getAttribute("toc-action").split("toc-")[1]);return e.push(i),n.getAttribute("href")&&(n.setAttribute("toc-action","toc-"+decodeURI(n.getAttribute("href")).replace("#","")),n.removeAttribute("href")),i&&i.id&&n.addEventListener("click",(t=>{t.preventDefault(),volantis.scroll.to(i,{addTop:5,observer:!0}),history.pushState(null,document.title,"#"+i.id)})),i}));function n(t){if(t.classList.contains("active-current"))return;document.querySelectorAll(".toc .active").forEach((t=>{t.classList.remove("active","active-current")})),t.classList.add("active","active-current");let e=t.parentNode;for(;!e.matches(".toc");)e.matches("li")&&e.classList.add("active"),e=e.parentNode}volantis.activateNavIndex=0,n(t[volantis.activateNavIndex]),e[0]&&volantis.scroll.push((()=>{if(e[0].getBoundingClientRect().top>=0)volantis.activateNavIndex=0;else if(e[e.length-1].getBoundingClientRect().top<0)volantis.activateNavIndex=e.length-1;else for(let t=0;t<e.length;t++){const n=e[t],i=e[(t+1)%e.length];if(n.getBoundingClientRect().top<0&&i.getBoundingClientRect().top>=0){volantis.activateNavIndex=t;break}}n(t[volantis.activateNavIndex])}))}document.addEventListener("DOMContentLoaded",(()=>{volantis.requestAnimationFrame(listenSidebarTOC)})),volantis.pjax.push(listenSidebarTOC)</script><script>try{let e=(e,t,n=2)=>Math.abs(e-t)<=n,t=(t,n)=>!e(t.width,n.width)||!e(t.height,n.height),n=new WeakMap,i=(e,i=e.getClientBoundingRect())=>{let o=n.get(e);o&&!t(o,i)||(n.set(e,i),e.style["contain-intrinsic-size"]=`${i.width}px ${i.height}px`)},o=new IntersectionObserver(((e,t)=>{e.forEach((e=>{i(e.target,e.boundingClientRect)}))}),{rootMargin:"500px 0px 500px 0px"}),r=new ResizeObserver(((e,t)=>{e.forEach((e=>{i(e.target,e.contentRect)}))})),s=e=>{let t=document.querySelectorAll(e);t.length&&(t.forEach((e=>{o.observe(e),r.observe(e)})),requestAnimationFrame((()=>{requestAnimationFrame((()=>{t[0].style["content-visibility"]="auto"}))})))},a=()=>{"content-visibility"in document.documentElement.style&&s(".post-story")};a(),volantis.pjax.push(a)}catch(e){console.log(e)}</script><script>document.onreadystatechange=function(){if("complete"==document.readyState){const{saveData:e,effectiveType:t}=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};("none"==getComputedStyle(document.querySelector("#safearea"),null).display||e||/2g/.test(t))&&(document.querySelectorAll(".reveal").forEach((function(e){e.style.opacity="1"})),document.querySelector("#safearea").style.display="block")}}</script><script type="application/ld+json">[{"@context":"http://schema.org","@type":"Organization","name":"MHuiG's Blog","url":"https://blog.mhuig.top/","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3","width":192,"height":192}},{"@context":"http://schema.org","@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3"},"url":"https://blog.mhuig.top/","sameAs":["https://github.com/MHuiG","https://twitter.com/iMHuiG","https://t.me/MHuiG","https://keybase.io/MHuiG"],"description":"「Be Yourself, Make a Difference.」"},{"@context":"http://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://blog.mhuig.top/","name":"MHuiG"}},{"@type":"ListItem","position":2,"item":{"@id":"https://blog.mhuig.top/categories/Data-mining/","name":"Data mining"}},{"@type":"ListItem","position":3,"item":{"@id":"https://blog.mhuig.top/p/56213be8/","name":"尝试使用 GPU 加速计算"}}]},{"@context":"http://schema.org","@type":"WebSite","name":"MHuiG's Blog","url":"https://blog.mhuig.top/","keywords":"Blog, IT, BigData, MHuiG, @MHuiG, iMHuiG, 博客, 梦幻岛, Neverland, 技术博客","description":"MHuiG&#39;s Blog (MHuiG的博客) MHuiG&#39;s Neverland(MHuiG的梦幻岛) —— MHuiG(@MHuiG) 随便写写画画的地方 - 技术博客","author":{"@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3"},"url":"https://blog.mhuig.top/","description":"「Be Yourself, Make a Difference.」"},"publisher":{"@type":"Organization","name":"MHuiG's Blog","url":"https://blog.mhuig.top/","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3","width":192,"height":192}},"potentialAction":{"@type":"SearchAction","name":"Coco | The Cat of MHuiG","target":{"@type":"EntryPoint","urlTemplate":"https://blog.mhuig.top/havefun/Coco/?s={search_term_string}"},"query-input":"required name=search_term_string"}},{"@context":"http://schema.org","@type":"BlogPosting","headline":"尝试使用 GPU 加速计算","description":"大规模训练,gpu 和 cpu 速度差别很大。","inLanguage":"zh-CN","mainEntityOfPage":{"@type":"WebPage","@id":"https://blog.mhuig.top/p/56213be8/"},"author":{"@type":"Person","name":"MHuiG","image":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3"},"url":"https://blog.mhuig.top/"},"publisher":{"@type":"Organization","name":"MHuiG's Blog","logo":{"@type":"ImageObject","url":"/lib/favicon/android-chrome-192x192.png?v=8bf02188e3","width":192,"height":192}},"url":"https://blog.mhuig.top/p/56213be8/","wordCount":23,"datePublished":"2020-10-11T01:11:44.000Z","dateModified":"2020-10-11T01:11:44.000Z","articleSection":"Data mining","keywords":"Data mining,Machine Learning","image":{"@type":"ImageObject","url":"https://static.mhuig.top/npm/mhgoos@0.0.1651994754992/2020116102711.webp","width":1024,"height":768}}]</script><script src="https://cdn.bootcdn.net/ajax/libs/pjax/0.2.8/pjax.min.js"></script><script>var pjax;document.addEventListener("DOMContentLoaded",(function(){pjax=new Pjax({elements:'a[href]:not([href^="#"]):not([href="javascript:void(0)"]):not([pjax-fancybox]):not([onclick="return false;"]):not([onclick="return!1"]):not([target="_blank"]):not([target="view_window"]):not([href$=".xml"])',selectors:["head title","head meta[name=keywords]","head meta[name=description]","#l_main","#pjax-header-nav-list",".pjax","pjax"],cacheBust:!1,timeout:5e3})})),document.addEventListener("pjax:send",(function(e){try{var t=window.location.pathname,n=e.triggerElement.href,a=[""];""!=a[0]&&a.forEach((e=>{-1==t.indexOf(e)&&-1==n.indexOf(e)||(window.location.href=n)}))}catch(e){}volantis.pjax.method.send.start()})),document.addEventListener("pjax:complete",(function(){document.querySelectorAll("script[data-pjax], .pjax-reload script").forEach((e=>{const t=e.text||e.textContent||e.innerHTML||"",n=document.createElement("script");Object.keys(e.attributes).forEach((t=>{n.setAttribute(e.attributes[t].nodeName,e.attributes[t].nodeValue)})),t&&n.appendChild(document.createTextNode(t)),e.parentNode.replaceChild(n,e)})),volantis.pjax.method.complete.start()})),document.addEventListener("pjax:error",(function(e){"pjax"===volantis.debug?(console.error(e),console.log("pjax error: \n"+JSON.stringify(e))):(volantis.pjax.method.error.start(),window.location.href=e.triggerElement.href)}))</script></div><pjax> <a style="display:none" target="_blank" rel="external nofollow noopener noreferrer" href="https://bot-trap.mhuig.top/">Are You A Robot?</a></pjax><script>top.location!=self.location&&(top.location=self.location),"mhuig.github.io"==window.location.host||"localhost:4000"==window.location.host||/mhuig\.top$/.test(window.location.host)||/kix\.moe$/.test(window.location.host)||/mhuig/.test(window.location.host)||/ipfs/.test(window.location.host)||(window.location.href="https://blog.mhuig.top/")</script></body></html>