Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wangkx1
easy_tools
Commits
c0705977
"vscode:/vscode.git/clone" did not exist on "1260282382b262c3a78af486ca260ed99c324489"
Commit
c0705977
authored
Apr 08, 2026
by
wangkaixiong
🚴🏼
Browse files
init
parent
d3982d85
Changes
189
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
3909 additions
and
0 deletions
+3909
-0
docs/DCU/docs/build/html/download.html
docs/DCU/docs/build/html/download.html
+150
-0
docs/DCU/docs/build/html/faq_cuda_hip.html
docs/DCU/docs/build/html/faq_cuda_hip.html
+355
-0
docs/DCU/docs/build/html/genindex.html
docs/DCU/docs/build/html/genindex.html
+589
-0
docs/DCU/docs/build/html/get_started.html
docs/DCU/docs/build/html/get_started.html
+347
-0
docs/DCU/docs/build/html/index.html
docs/DCU/docs/build/html/index.html
+289
-0
docs/DCU/docs/build/html/install_dcu_on_os/base_install_intro.html
...docs/build/html/install_dcu_on_os/base_install_intro.html
+146
-0
docs/DCU/docs/build/html/install_dcu_on_os/centos.html
docs/DCU/docs/build/html/install_dcu_on_os/centos.html
+519
-0
docs/DCU/docs/build/html/install_dcu_on_os/ubuntu.html
docs/DCU/docs/build/html/install_dcu_on_os/ubuntu.html
+526
-0
docs/DCU/docs/build/html/objects.inv
docs/DCU/docs/build/html/objects.inv
+0
-0
docs/DCU/docs/build/html/search.html
docs/DCU/docs/build/html/search.html
+604
-0
docs/DCU/docs/build/html/searchindex.js
docs/DCU/docs/build/html/searchindex.js
+1
-0
docs/DCU/docs/dev/template.md
docs/DCU/docs/dev/template.md
+20
-0
docs/DCU/docs/make.bat
docs/DCU/docs/make.bat
+35
-0
docs/DCU/docs/requirements.txt
docs/DCU/docs/requirements.txt
+24
-0
docs/DCU/docs/zh_cn/Anaconda_Docker.md
docs/DCU/docs/zh_cn/Anaconda_Docker.md
+129
-0
docs/DCU/docs/zh_cn/Hy-SMI.md
docs/DCU/docs/zh_cn/Hy-SMI.md
+32
-0
docs/DCU/docs/zh_cn/NV_GPU_TO_DCU.md
docs/DCU/docs/zh_cn/NV_GPU_TO_DCU.md
+49
-0
docs/DCU/docs/zh_cn/_static/css/readthedocs.css
docs/DCU/docs/zh_cn/_static/css/readthedocs.css
+18
-0
docs/DCU/docs/zh_cn/_static/css/readthedocs.css.bak
docs/DCU/docs/zh_cn/_static/css/readthedocs.css.bak
+62
-0
docs/DCU/docs/zh_cn/_static/image/DCU-logo.svg
docs/DCU/docs/zh_cn/_static/image/DCU-logo.svg
+14
-0
No files found.
docs/DCU/docs/build/html/download.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/><meta
name=
"generator"
content=
"Docutils 0.18.1: http://docutils.sourceforge.net/"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
下载中心:
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"_static/jquery.js"
></script>
<script
src=
"_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"./"
id=
"documentation_options"
src=
"_static/documentation_options.js"
></script>
<script
src=
"_static/doctools.js"
></script>
<script
src=
"_static/sphinx_highlight.js"
></script>
<script
src=
"_static/clipboard.min.js"
></script>
<script
src=
"_static/copybutton.js"
></script>
<script
src=
"_static/translations.js"
></script>
<script
src=
"_static/js/theme.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"genindex.html"
/>
<link
rel=
"search"
title=
"搜索"
href=
"search.html"
/>
<link
rel=
"next"
title=
"1. 开发者社区 DCU 环境安装手册"
href=
"install_dcu_on_os/base_install_intro.html"
/>
<link
rel=
"prev"
title=
"操作系统版本兼容列表"
href=
"get_started.html"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"index.html"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"search.html"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id3"
><strong>
兼容性(必读)
</strong></a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul
class=
"current"
>
<li
class=
"toctree-l1 current"
><a
class=
"current reference internal"
href=
"#"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"index.html"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"index.html"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
>
下载中心:
</li>
<li
class=
"wy-breadcrumbs-aside"
>
<a
href=
"_sources/download.md.txt"
rel=
"nofollow"
>
查看页面源码
</a>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<section
id=
"id1"
>
<h1>
下载中心:
<a
class=
"headerlink"
href=
"#id1"
title=
"此标题的永久链接"
>
</a></h1>
<ul
class=
"simple"
>
<li><p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/6/main"
><strong>
驱动下载地址
</strong></a>
→ latest 驱动→ rock-xxx-xxx.aio.run
</p></li>
<li><p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/1/main"
><strong>
DTK下载地址
</strong></a>
→ latest → 对应的操作系统 → DTK-version-OS-version-x86_64.tar.gz
</p></li>
<li><p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/5/main"
><strong>
工具包地址(DCU直通、Kubernets插件、HyQual压力测试、工具包文档)
</strong></a></p></li>
<li><p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/4/main/"
><strong>
DAS生态包下载地址
</strong></a></p></li>
<li><p><a
class=
"reference external"
href=
"https://sourcefind.cn/#/main-page"
><strong>
光源地址
</strong></a></p></li>
</ul>
</section>
</div>
</div>
<footer><div
class=
"rst-footer-buttons"
role=
"navigation"
aria-label=
"页脚"
>
<a
href=
"get_started.html"
class=
"btn btn-neutral float-left"
title=
"操作系统版本兼容列表"
accesskey=
"p"
rel=
"prev"
><span
class=
"fa fa-arrow-circle-left"
aria-hidden=
"true"
></span>
上一页
</a>
<a
href=
"install_dcu_on_os/base_install_intro.html"
class=
"btn btn-neutral float-right"
title=
"1. 开发者社区 DCU 环境安装手册"
accesskey=
"n"
rel=
"next"
>
下一页
<span
class=
"fa fa-arrow-circle-right"
aria-hidden=
"true"
></span></a>
</div>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/faq_cuda_hip.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/><meta
name=
"generator"
content=
"Docutils 0.18.1: http://docutils.sourceforge.net/"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
问题一、纹理内存报错:
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"_static/jquery.js"
></script>
<script
src=
"_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"./"
id=
"documentation_options"
src=
"_static/documentation_options.js"
></script>
<script
src=
"_static/doctools.js"
></script>
<script
src=
"_static/sphinx_highlight.js"
></script>
<script
src=
"_static/clipboard.min.js"
></script>
<script
src=
"_static/copybutton.js"
></script>
<script
src=
"_static/translations.js"
></script>
<script
src=
"_static/js/theme.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"genindex.html"
/>
<link
rel=
"search"
title=
"搜索"
href=
"search.html"
/>
<link
rel=
"prev"
title=
"1 从NV的GPU迁移到DCU"
href=
"NV_GPU_TO_DCU.html"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"index.html"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"search.html"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id3"
><strong>
兼容性(必读)
</strong></a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"download.html"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
CUDA 与 HIP 移植常见问题
</span></p>
<ul
class=
"current"
>
<li
class=
"toctree-l1 current"
><a
class=
"current reference internal"
href=
"#"
>
问题一、纹理内存报错:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id2"
><strong>
解决方法:
</strong></a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#launch-bounds-256"
>
问题二、 launch bounds (256) 报错:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id3"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#asm"
>
问题三、asm 代码,内联汇编代码编译报错;
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id4"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#cuda-math-h"
>
问题四、 cuda应用不转码适配找不到 math.h 头文件
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id5"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#pycuda-cu"
>
问题五、使用开源的pycuda 无法编译 cu文件
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id6"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#cu"
>
问题六、如何针对一个文件夹的cu代码进行转码
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id7"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#hip"
>
问题七、hip转码后部分宏定义不规范不会被转换,可能导致出现问题:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id8"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#math-constants-h"
>
问题八、 math_constants.h 找不到:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id9"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#hip-min"
>
问题九、转码后部分hip核函数不识别 min:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id10"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#dtk-25-04"
>
问题十、使用 DTK-25.04 之后的软件栈编译报头文件错:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id11"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#g-hipruntime-hipmallochipmemcpy"
>
问题十一、g++ 编译 hipRuntime(hipMalloc、hipMemcpy)等接口代码,编译报错:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id12"
>
解决方法:
</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"index.html"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"index.html"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
>
问题一、纹理内存报错:
</li>
<li
class=
"wy-breadcrumbs-aside"
>
<a
href=
"_sources/faq_cuda_hip.md.txt"
rel=
"nofollow"
>
查看页面源码
</a>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<p>
FAQ-cuda以及hip移植常见问题处理经验
</p>
<section
id=
"id1"
>
<h1>
问题一、纹理内存报错:
<a
class=
"headerlink"
href=
"#id1"
title=
"此标题的永久链接"
>
</a></h1>
<ol
class=
"arabic simple"
>
<li><p>
/data/wkx/develop/ppl.cv/src/ppl/cv/cuda/warp.hpp:31:8: error: no
template named ‘texture’
</p></li>
<li><p>
static texture
<
float4, cudaTextureType2D,
</p></li>
<li><p>
^
</p></li>
<li><p>
/data/wkx/develop/ppl.cv/src/ppl/cv/cuda/warp.hpp/data/wkx/develop/ppl.cv/src/ppl/cv/cuda/warp.hpp::3131::88::
</p></li>
<li><p>
error: error: no template named ‘texture’no template named
‘texture’
</p></li>
<li><ol
class=
"arabic simple"
start=
"7"
>
<li><p>
static texture
<
float4, cudaTextureType2D,
</p></li>
</ol>
</li>
<li><p>
static texture
<
float4, cudaTextureType2D,
</p></li>
</ol>
<section
id=
"id2"
>
<h2><strong>
解决方法:
</strong><a
class=
"headerlink"
href=
"#id2"
title=
"此标题的永久链接"
>
</a></h2>
<p><strong>
CUDA 的 texture 类型在较新版本(CUDA 12
及以上)中已被弃用或移除
</strong>
。旧版 CUDA(如 CUDA 10 或 11)中可以使用
texture
<
T, …
>
这种全局变量声明方式,但在
<strong>
CUDA 12+
中,这种语法不再支持
</strong>
,必须改用
<strong>
cudaTextureObject_t +
cudaResourceDesc/cudaTextureDesc
</strong>
的方式来创建纹理对象
</p>
<p>
使用DCU的cuda-11.8编译老旧代码即可顺利通过;
</p>
</section>
</section>
<section
id=
"launch-bounds-256"
>
<h1>
问题二、 launch bounds (256) 报错:
<a
class=
"headerlink"
href=
"#launch-bounds-256"
title=
"此标题的永久链接"
>
</a></h1>
<p>
Launch params (1024, 1, 1) are larger than launch bounds (256) for
kernel _ZL12rms_norm_f32ILi1024EEvPKfPfif please add launch_bounds
to kernel define or use –gpu-max-threads-per-block recompile program !
</p>
<section
id=
"id3"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id3"
title=
"此标题的永久链接"
>
</a></h2>
<p>
解决方法1:
</p>
<ol
class=
"arabic simple"
>
<li><p>
所有的核函数 __global__ 替换为 __global__
__launch_bounds__(1024)
</p></li>
</ol>
<p>
解决方法2:
</p>
<p>
nvcc或者hip编译增加: –gpu-max-threads-per-block=1024
</p>
</section>
</section>
<section
id=
"asm"
>
<h1>
问题三、asm 代码,内联汇编代码编译报错;
<a
class=
"headerlink"
href=
"#asm"
title=
"此标题的永久链接"
>
</a></h1>
<p><img
alt=
"4XDLESZEAAQE6"
src=
"media/image1.png"
/>
{width=”5.763888888888889in”
height=”1.8840080927384077in”}
</p>
<section
id=
"id4"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id4"
title=
"此标题的永久链接"
>
</a></h2>
<p>
内嵌 PTX 功能开启需要主动加”-fnline-asm-ptx”选项。
</p>
<p><img
alt=
"LMVLGSZEABAFG"
src=
"media/image2.png"
/>
{width=”5.763888888888889in”
height=”2.996674321959755in”}
</p>
</section>
</section>
<section
id=
"cuda-math-h"
>
<h1>
问题四、 cuda应用不转码适配找不到 math.h 头文件
<a
class=
"headerlink"
href=
"#cuda-math-h"
title=
"此标题的永久链接"
>
</a></h1>
<p><img
alt=
"CISLKSZEACABE"
src=
"media/image3.png"
/>
{width=”5.763888888888889in”
height=”1.9728018372703413in”}
</p>
<section
id=
"id5"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id5"
title=
"此标题的永久链接"
>
</a></h2>
<p>
cmake 编译中增加的 -isystem /usr/include 与 nvcc
编译器同时使用会存在冲突。
</p>
<p>
开启打印,关注编译过程的 完整头文件、库文件的依赖,去掉 -isystem
/usr/include 即可编译成功。
</p>
<p>
make VERBOSE=1
<
project
>
</p>
</section>
</section>
<section
id=
"pycuda-cu"
>
<h1>
问题五、使用开源的pycuda 无法编译 cu文件
<a
class=
"headerlink"
href=
"#pycuda-cu"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"id6"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id6"
title=
"此标题的永久链接"
>
</a></h2>
<p>
参考这个,更改下 compiler.py 适配 hip 编译;
</p>
<p><a
class=
"reference external"
href=
"https://ontrack.hygon.cn/browse/CSD-10705"
>
[https://ontrack.hygon.cn/browse/CSD-10705]{.underline}
</a></p>
</section>
</section>
<section
id=
"cu"
>
<h1>
问题六、如何针对一个文件夹的cu代码进行转码
<a
class=
"headerlink"
href=
"#cu"
title=
"此标题的永久链接"
>
</a></h1>
<p>
详细可以参考:
</p>
<p><img
alt=
"ppt"
src=
"media/image4.png"
/>
{width=”0.1527777777777778in”
height=”0.1527777777777778in”}
<a
class=
"reference external"
href=
"https://www.kdocs.cn/l/cmD2M59DD2vk"
>
[DCU应用移植介绍-程顺延]{.underline}
</a></p>
<section
id=
"id7"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id7"
title=
"此标题的永久链接"
>
</a></h2>
<ol
class=
"arabic simple"
>
<li><p>
hipconvertinplace-perl.sh
<
cuda代码文件夹
>
</p></li>
</ol>
<p>
cuda 文件夹下原有的代码,转码后以 org-name.h/cu.prehip
形式存储在当前目录
</p>
<p>
由于要使用hip编译, 因此所有的 cu 后缀, 修改为 hip 或者 cpp;
</p>
</section>
</section>
<section
id=
"hip"
>
<h1>
问题七、hip转码后部分宏定义不规范不会被转换,可能导致出现问题:
<a
class=
"headerlink"
href=
"#hip"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"id8"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id8"
title=
"此标题的永久链接"
>
</a></h2>
<ul
class=
"simple"
>
<li><p>
CublasHandleManager.h
</p></li>
</ul>
<ol
class=
"arabic simple"
>
<li><p>
#if !defined(ROCM_SYMLINK_HIPBLAS_H)
</p></li>
<li><p>
#error hipblas.h must be included at the very top of any file
including CublasHandleManager.h
</p></li>
<li><p>
#endif
</p></li>
<li><ol
class=
"arabic simple"
start=
"5"
>
<li><p>
从 CUBLAS_V2_H_ 更改为 ROCM_SYMLINK_HIPBLAS_H
</p></li>
</ol>
</li>
</ol>
</section>
</section>
<section
id=
"math-constants-h"
>
<h1>
问题八、 math_constants.h 找不到:
<a
class=
"headerlink"
href=
"#math-constants-h"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"id9"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id9"
title=
"此标题的永久链接"
>
</a></h2>
<p>
DTK的cuda下有 math_constants.h 会被别的工程依赖;
</p>
<p>
hip下不存在对应的代码,可以直接拷贝 math_constants.h 到工程中使用;
</p>
<p>
math_constants.h 仅仅是一些数学值的定义;
</p>
</section>
</section>
<section
id=
"hip-min"
>
<h1>
问题九、转码后部分hip核函数不识别 min:
<a
class=
"headerlink"
href=
"#hip-min"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"id10"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id10"
title=
"此标题的永久链接"
>
</a></h2>
<p>
EddyMatrixKernels.cpp 中不支持 min 的问题解决
</p>
<ol
class=
"arabic simple"
>
<li><p>
__global__ void QR(// Input
</p></li>
<li><p>
const float *K, // Row-first matrices to decompose
</p></li>
<li><p>
unsigned int m, // Number of rows of K
</p></li>
<li><p>
unsigned int n, // Number of columns of K
</p></li>
<li><p>
unsigned int nmat, // Number of matrices
</p></li>
<li><p>
// Output
</p></li>
<li><p>
float *Qt, // nmat mxm Q matrices
</p></li>
<li><p>
float *R) // nmat mxn R matrices
</p></li>
<li><p>
{
</p></li>
<li><p>
extern __shared__ float scratch[];
</p></li>
<li><ol
class=
"arabic simple"
start=
"12"
>
<li><p>
if (blockIdx.x
<
nmat
&&
threadIdx.x
<
m) {
</p></li>
</ol>
</li>
<li><p>
unsigned int id = threadIdx.x;
</p></li>
<li><p>
// unsigned int ntpm = min(m,blockDim.x); // Number of threads per
matrix
</p></li>
<li><p>
unsigned int ntpm = (m
<
blockDim.x) ? m : blockDim.x;
</p></li>
<li><p>
float *v = scratch;
</p></li>
<li><p>
float *w =
&
scratch[m];
</p></li>
<li><p>
const float *lK =
&
K[blockIdx.x*m*n];
</p></li>
<li><p>
float *lQt =
&
Qt[blockIdx.x*m*m];
</p></li>
<li><p>
float *lR =
&
R[blockIdx.x*m*n];
</p></li>
<li><p>
qr_single(lK,m,n,v,w,id,ntpm,lQt,lR);
</p></li>
<li><p>
}
</p></li>
<li><p>
return;
</p></li>
<li><p>
}
</p></li>
</ol>
</section>
</section>
<section
id=
"dtk-25-04"
>
<h1>
问题十、使用 DTK-25.04 之后的软件栈编译报头文件错:
<a
class=
"headerlink"
href=
"#dtk-25-04"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"id11"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id11"
title=
"此标题的永久链接"
>
</a></h2>
<p>
尽量尝试使用 -std=c++17-std=c++14
</p>
</section>
</section>
<section
id=
"g-hipruntime-hipmallochipmemcpy"
>
<h1>
问题十一、g++ 编译 hipRuntime(hipMalloc、hipMemcpy)等接口代码,编译报错:
<a
class=
"headerlink"
href=
"#g-hipruntime-hipmallochipmemcpy"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"id12"
>
<h2>
解决方法:
<a
class=
"headerlink"
href=
"#id12"
title=
"此标题的永久链接"
>
</a></h2>
<p>
编译时增加宏定义,
</p>
<p>
__HIP_PLATFORM_AMD__
</p>
<p>
链接依赖增加 -l galaxyhip
</p>
</section>
</section>
</div>
</div>
<footer><div
class=
"rst-footer-buttons"
role=
"navigation"
aria-label=
"页脚"
>
<a
href=
"NV_GPU_TO_DCU.html"
class=
"btn btn-neutral float-left"
title=
"1 从NV的GPU迁移到DCU"
accesskey=
"p"
rel=
"prev"
><span
class=
"fa fa-arrow-circle-left"
aria-hidden=
"true"
></span>
上一页
</a>
</div>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/genindex.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
索引
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"_static/jquery.js"
></script>
<script
src=
"_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"./"
id=
"documentation_options"
src=
"_static/documentation_options.js"
></script>
<script
src=
"_static/doctools.js"
></script>
<script
src=
"_static/sphinx_highlight.js"
></script>
<script
src=
"_static/clipboard.min.js"
></script>
<script
src=
"_static/copybutton.js"
></script>
<script
src=
"_static/translations.js"
></script>
<script
src=
"https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js"
></script>
<script
type=
"module"
>
import
mermaid
from
"
https://cdn.jsdelivr.net/npm/mermaid@11.12.1/dist/mermaid.esm.min.mjs
"
;
const
initStyles
=
()
=>
{
const
defaultStyle
=
document
.
createElement
(
'
style
'
);
defaultStyle
.
textContent
=
`pre.mermaid {
/* Same as .mermaid-container > pre */
display: block;
width: 100%;
}
pre.mermaid > svg {
/* Same as .mermaid-container > pre > svg */
height: 500px;
width: 100%;
max-width: 100% !important;
}`
;
document
.
head
.
appendChild
(
defaultStyle
);
const
fullscreenStyle
=
document
.
createElement
(
'
style
'
);
fullscreenStyle
.
textContent
=
`.mermaid-container {
display: flex;
flex-direction: row;
width: 100%;
}
.mermaid-container > pre {
display: block;
width: 100%;
}
.mermaid-container > pre > svg {
height: 500px;
width: 100%;
max-width: 100% !important;
}
.mermaid-fullscreen-btn {
width: 28px;
height: 28px;
background: rgba(255, 255, 255, 0.95);
border: 1px solid rgba(0, 0, 0, 0.3);
border-radius: 4px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.2s;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
font-size: 14px;
line-height: 1;
padding: 0;
color: #333;
}
.mermaid-fullscreen-btn:hover {
opacity: 100% !important;
background: rgba(255, 255, 255, 1);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.3);
transform: scale(1.1);
}
.mermaid-fullscreen-btn.dark-theme {
background: rgba(50, 50, 50, 0.95);
border: 1px solid rgba(255, 255, 255, 0.3);
color: #e0e0e0;
}
.mermaid-fullscreen-btn.dark-theme:hover {
background: rgba(60, 60, 60, 1);
box-shadow: 0 3px 10px rgba(255, 255, 255, 0.2);
}
.mermaid-fullscreen-modal {
display: none;
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 95vw;
height: 100vh;
background: rgba(255, 255, 255, 0.98);
z-index: 9999;
padding: 20px;
overflow: auto;
}
.mermaid-fullscreen-modal.dark-theme {
background: rgba(0, 0, 0, 0.98);
}
.mermaid-fullscreen-modal.active {
display: flex;
align-items: center;
justify-content: center;
}
.mermaid-container-fullscreen {
position: relative;
width: 95vw;
height: 90vh;
max-width: 95vw;
max-height: 90vh;
background: white;
border-radius: 8px;
padding: 20px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
overflow: auto;
display: flex;
align-items: center;
justify-content: center;
}
.mermaid-container-fullscreen.dark-theme {
background: #1a1a1a;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.8);
}
.mermaid-container-fullscreen pre.mermaid {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.mermaid-container-fullscreen .mermaid svg {
height: 100% !important;
width: 100% !important;
cursor: grab;
}
.mermaid-fullscreen-close {
position: fixed !important;
top: 20px !important;
right: 20px !important;
width: 40px;
height: 40px;
background: rgba(255, 255, 255, 0.95);
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 50%;
cursor: pointer;
z-index: 10000;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
transition: all 0.2s;
font-size: 24px;
line-height: 1;
color: #333;
}
.mermaid-fullscreen-close:hover {
background: white;
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);
transform: scale(1.1);
}
.mermaid-fullscreen-close.dark-theme {
background: rgba(50, 50, 50, 0.95);
border: 1px solid rgba(255, 255, 255, 0.2);
color: #e0e0e0;
}
.mermaid-fullscreen-close.dark-theme:hover {
background: rgba(60, 60, 60, 1);
box-shadow: 0 6px 16px rgba(255, 255, 255, 0.2);
}
.mermaid-fullscreen-modal .mermaid-fullscreen-btn {
display: none !important;
}`
;
document
.
head
.
appendChild
(
fullscreenStyle
);
}
// Detect if page has dark background
const
isDarkTheme
=
()
=>
{
// We use a set of heuristics:
// 1. Check for common dark mode classes or attributes
// 2. Check computed background color brightness
if
(
document
.
documentElement
.
classList
.
contains
(
'
dark
'
)
||
document
.
documentElement
.
getAttribute
(
'
data-theme
'
)
===
'
dark
'
||
document
.
body
.
classList
.
contains
(
'
dark
'
)
||
document
.
body
.
getAttribute
(
'
data-theme
'
)
===
'
dark
'
)
{
// console.log("Dark theme detected via class/attribute");
return
true
;
}
if
(
document
.
documentElement
.
classList
.
contains
(
'
light
'
)
||
document
.
documentElement
.
getAttribute
(
'
data-theme
'
)
===
'
light
'
||
document
.
body
.
classList
.
contains
(
'
light
'
)
||
document
.
body
.
getAttribute
(
'
data-theme
'
)
===
'
light
'
)
{
// console.log("Light theme detected via class/attribute");
return
false
;
}
if
(
window
.
matchMedia
&&
window
.
matchMedia
(
'
(prefers-color-scheme: dark)
'
).
matches
)
{
// console.log("Dark theme detected via prefers-color-scheme");
return
true
;
}
const
bgColor
=
window
.
getComputedStyle
(
document
.
body
).
backgroundColor
;
const
match
=
bgColor
.
match
(
/rgb
\((\d
+
)
,
\s
*
(\d
+
)
,
\s
*
(\d
+
)
/
);
if
(
match
)
{
const
r
=
parseInt
(
match
[
1
]);
const
g
=
parseInt
(
match
[
2
]);
const
b
=
parseInt
(
match
[
3
]);
const
brightness
=
(
r
*
299
+
g
*
587
+
b
*
114
)
/
1000
;
// console.log("Background color brightness:", brightness);
return
brightness
<
128
;
}
// console.log("No dark or light theme detected, defaulting to light theme");
return
false
;
};
let
darkTheme
=
isDarkTheme
();
let
modal
=
null
;
let
modalContent
=
null
;
let
previousScrollOffset
=
[
window
.
scrollX
,
window
.
scrollY
];
const
runMermaid
=
async
(
rerun
)
=>
{
console
.
log
(
"
Running mermaid diagrams, rerun =
"
,
rerun
);
// clear all existing mermaid charts
let
all_mermaids
=
document
.
querySelectorAll
(
"
.mermaid
"
);
if
(
rerun
)
{
all_mermaids
.
forEach
((
el
)
=>
{
if
(
!
el
.
hasAttribute
(
"
data-original-code
"
))
{
// store original code
// console.log(`Storing original code for first run: `, el.innerHTML);
el
.
setAttribute
(
'
data-original-code
'
,
el
.
innerHTML
);
}
if
(
el
.
getAttribute
(
"
data-processed
"
)
===
"
true
"
)
{
// remove and restore original
el
.
removeAttribute
(
"
data-processed
"
);
// console.log(`Restoring original code for re-run: `, el.getAttribute('data-original-code'));
el
.
innerHTML
=
el
.
getAttribute
(
'
data-original-code
'
);
}
else
{
// store original code
// console.log(`Storing original code for re-run: `, el.innerHTML);
el
.
setAttribute
(
'
data-original-code
'
,
el
.
innerHTML
);
}
});
await
mermaid
.
run
();
}
all_mermaids
=
document
.
querySelectorAll
(
"
.mermaid
"
);
const
mermaids_processed
=
document
.
querySelectorAll
(
"
.mermaid[data-processed='true']
"
);
if
(
"
False
"
===
"
True
"
)
{
const
mermaids_to_add_zoom
=
-
1
===
-
1
?
all_mermaids
.
length
:
-
1
;
if
(
mermaids_to_add_zoom
>
0
)
{
var
svgs
=
d3
.
selectAll
(
""
);
if
(
all_mermaids
.
length
!==
mermaids_processed
.
length
)
{
setTimeout
(()
=>
runMermaid
(
false
),
200
);
return
;
}
else
if
(
svgs
.
size
()
!==
mermaids_to_add_zoom
)
{
setTimeout
(()
=>
runMermaid
(
false
),
200
);
return
;
}
else
{
svgs
.
each
(
function
()
{
var
svg
=
d3
.
select
(
this
);
svg
.
html
(
"
<g class='wrapper'>
"
+
svg
.
html
()
+
"
</g>
"
);
var
inner
=
svg
.
select
(
"
g
"
);
var
zoom
=
d3
.
zoom
().
on
(
"
zoom
"
,
function
(
event
)
{
inner
.
attr
(
"
transform
"
,
event
.
transform
);
});
svg
.
call
(
zoom
);
});
}
}
}
else
if
(
all_mermaids
.
length
!==
mermaids_processed
.
length
)
{
// Wait for mermaid to process all diagrams
setTimeout
(()
=>
runMermaid
(
false
),
200
);
return
;
}
// Stop here if not adding fullscreen capability
if
(
"
True
"
!==
"
True
"
)
return
;
if
(
modal
!==
null
)
{
// Destroy existing modal
modal
.
remove
();
modal
=
null
;
modalContent
=
null
;
}
modal
=
document
.
createElement
(
'
div
'
);
modal
.
className
=
'
mermaid-fullscreen-modal
'
+
(
darkTheme
?
'
dark-theme
'
:
''
);
modal
.
setAttribute
(
'
role
'
,
'
dialog
'
);
modal
.
setAttribute
(
'
aria-modal
'
,
'
true
'
);
modal
.
setAttribute
(
'
aria-label
'
,
'
Fullscreen diagram viewer
'
);
modal
.
innerHTML
=
`
<button class="mermaid-fullscreen-close
${
darkTheme
?
'
dark-theme
'
:
''
}
" aria-label="Close fullscreen">✕</button>
<div class="mermaid-container-fullscreen
${
darkTheme
?
'
dark-theme
'
:
''
}
"></div>
`
;
document
.
body
.
appendChild
(
modal
);
modalContent
=
modal
.
querySelector
(
'
.mermaid-container-fullscreen
'
);
const
closeBtn
=
modal
.
querySelector
(
'
.mermaid-fullscreen-close
'
);
const
closeModal
=
()
=>
{
modal
.
classList
.
remove
(
'
active
'
);
modalContent
.
innerHTML
=
''
;
document
.
body
.
style
.
overflow
=
''
window
.
scrollTo
({
left
:
previousScrollOffset
[
0
],
top
:
previousScrollOffset
[
1
],
behavior
:
'
instant
'
});
};
closeBtn
.
addEventListener
(
'
click
'
,
closeModal
);
modal
.
addEventListener
(
'
click
'
,
(
e
)
=>
{
if
(
e
.
target
===
modal
)
closeModal
();
});
document
.
addEventListener
(
'
keydown
'
,
(
e
)
=>
{
if
(
e
.
key
===
'
Escape
'
&&
modal
.
classList
.
contains
(
'
active
'
))
{
closeModal
();
}
});
document
.
querySelectorAll
(
'
.mermaid
'
).
forEach
((
mermaidDiv
)
=>
{
if
(
mermaidDiv
.
parentNode
.
classList
.
contains
(
'
mermaid-container
'
)
||
mermaidDiv
.
closest
(
'
.mermaid-fullscreen-modal
'
))
{
// Already processed, adjust button class if needed
const
existingBtn
=
mermaidDiv
.
parentNode
.
querySelector
(
'
.mermaid-fullscreen-btn
'
);
if
(
existingBtn
)
{
existingBtn
.
className
=
'
mermaid-fullscreen-btn
'
+
(
darkTheme
?
'
dark-theme
'
:
''
);
}
return
;
}
const
container
=
document
.
createElement
(
'
div
'
);
container
.
className
=
'
mermaid-container
'
;
mermaidDiv
.
parentNode
.
insertBefore
(
container
,
mermaidDiv
);
container
.
appendChild
(
mermaidDiv
);
const
fullscreenBtn
=
document
.
createElement
(
'
button
'
);
fullscreenBtn
.
className
=
'
mermaid-fullscreen-btn
'
+
(
darkTheme
?
'
dark-theme
'
:
''
);
fullscreenBtn
.
setAttribute
(
'
aria-label
'
,
'
View diagram in fullscreen
'
);
fullscreenBtn
.
textContent
=
'
⛶
'
;
fullscreenBtn
.
style
.
opacity
=
'
50%
'
;
// Calculate dynamic position based on diagram's margin and padding
const
diagramStyle
=
window
.
getComputedStyle
(
mermaidDiv
);
const
marginTop
=
parseFloat
(
diagramStyle
.
marginTop
)
||
0
;
const
marginRight
=
parseFloat
(
diagramStyle
.
marginRight
)
||
0
;
const
paddingTop
=
parseFloat
(
diagramStyle
.
paddingTop
)
||
0
;
const
paddingRight
=
parseFloat
(
diagramStyle
.
paddingRight
)
||
0
;
fullscreenBtn
.
style
.
top
=
`
${
marginTop
+
paddingTop
+
4
}
px`
;
fullscreenBtn
.
style
.
right
=
`
${
marginRight
+
paddingRight
+
4
}
px`
;
fullscreenBtn
.
addEventListener
(
'
click
'
,
()
=>
{
previousScrollOffset
=
[
window
.
scroll
,
window
.
scrollY
];
const
clone
=
mermaidDiv
.
cloneNode
(
true
);
modalContent
.
innerHTML
=
''
;
modalContent
.
appendChild
(
clone
);
const
svg
=
clone
.
querySelector
(
'
svg
'
);
if
(
svg
)
{
svg
.
removeAttribute
(
'
width
'
);
svg
.
removeAttribute
(
'
height
'
);
svg
.
style
.
width
=
'
100%
'
;
svg
.
style
.
height
=
'
auto
'
;
svg
.
style
.
maxWidth
=
'
100%
'
;
svg
.
style
.
sdisplay
=
'
block
'
;
if
(
"
False
"
===
"
True
"
)
{
setTimeout
(()
=>
{
const
g
=
svg
.
querySelector
(
'
g
'
);
if
(
g
)
{
var
svgD3
=
d3
.
select
(
svg
);
svgD3
.
html
(
"
<g class='wrapper'>
"
+
svgD3
.
html
()
+
"
</g>
"
);
var
inner
=
svgD3
.
select
(
"
g
"
);
var
zoom
=
d3
.
zoom
().
on
(
"
zoom
"
,
function
(
event
)
{
inner
.
attr
(
"
transform
"
,
event
.
transform
);
});
svgD3
.
call
(
zoom
);
}
},
100
);
}
}
modal
.
classList
.
add
(
'
active
'
);
document
.
body
.
style
.
overflow
=
'
hidden
'
;
});
container
.
appendChild
(
fullscreenBtn
);
});
};
const
load
=
async
()
=>
{
initStyles
();
await
runMermaid
(
true
);
const
reRunIfThemeChanges
=
async
()
=>
{
const
newDarkTheme
=
isDarkTheme
();
if
(
newDarkTheme
!==
darkTheme
)
{
darkTheme
=
newDarkTheme
;
console
.
log
(
"
Theme change detected, re-running mermaid with
"
,
darkTheme
?
"
dark
"
:
"
default
"
,
"
theme
"
);
await
mermaid
.
initialize
(
{...
JSON
.
parse
(
`{"startOnLoad": false}`
),
...{
darkMode
:
darkTheme
,
theme
:
darkTheme
?
'
dark
'
:
'
default
'
},
}
);
await
runMermaid
(
true
);
}
};
// Update theme classes when theme changes
const
themeObserver
=
new
MutationObserver
(
reRunIfThemeChanges
);
themeObserver
.
observe
(
document
.
documentElement
,
{
attributes
:
true
,
attributeFilter
:
[
'
class
'
,
'
style
'
,
'
data-theme
'
]
});
themeObserver
.
observe
(
document
.
body
,
{
attributes
:
true
,
attributeFilter
:
[
'
class
'
,
'
style
'
,
'
data-theme
'
]
});
};
console
.
log
(
"
Initializing mermaid with
"
,
darkTheme
?
"
dark
"
:
"
default
"
,
"
theme
"
);
mermaid
.
initialize
(
{...
JSON
.
parse
(
`{"startOnLoad": false}`
),
...{
darkMode
:
darkTheme
,
theme
:
darkTheme
?
'
dark
'
:
'
default
'
},
}
);
window
.
addEventListener
(
"
load
"
,
load
);
window
.
runMermaid
=
runMermaid
;
</script>
<script
src=
"_static/js/theme.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"#"
/>
<link
rel=
"search"
title=
"搜索"
href=
"search.html"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"index.html"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"search.html"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id3"
><strong>
兼容性(必读)
</strong></a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"download.html"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
CUDA 与 HIP 移植常见问题
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html"
>
问题一、纹理内存报错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#launch-bounds-256"
>
问题二、 launch bounds (256) 报错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#asm"
>
问题三、asm 代码,内联汇编代码编译报错;
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#cuda-math-h"
>
问题四、 cuda应用不转码适配找不到 math.h 头文件
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#pycuda-cu"
>
问题五、使用开源的pycuda 无法编译 cu文件
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#cu"
>
问题六、如何针对一个文件夹的cu代码进行转码
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#hip"
>
问题七、hip转码后部分宏定义不规范不会被转换,可能导致出现问题:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#math-constants-h"
>
问题八、 math_constants.h 找不到:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#hip-min"
>
问题九、转码后部分hip核函数不识别 min:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#dtk-25-04"
>
问题十、使用 DTK-25.04 之后的软件栈编译报头文件错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#g-hipruntime-hipmallochipmemcpy"
>
问题十一、g++ 编译 hipRuntime(hipMalloc、hipMemcpy)等接口代码,编译报错:
</a></li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"index.html"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"index.html"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
>
索引
</li>
<li
class=
"wy-breadcrumbs-aside"
>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<h1
id=
"index"
>
索引
</h1>
<div
class=
"genindex-jumpbox"
>
</div>
</div>
</div>
<footer>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/get_started.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/><meta
name=
"generator"
content=
"Docutils 0.18.1: http://docutils.sourceforge.net/"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
操作系统版本兼容列表
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"_static/jquery.js"
></script>
<script
src=
"_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"./"
id=
"documentation_options"
src=
"_static/documentation_options.js"
></script>
<script
src=
"_static/doctools.js"
></script>
<script
src=
"_static/sphinx_highlight.js"
></script>
<script
src=
"_static/clipboard.min.js"
></script>
<script
src=
"_static/copybutton.js"
></script>
<script
src=
"_static/translations.js"
></script>
<script
src=
"_static/js/theme.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"genindex.html"
/>
<link
rel=
"search"
title=
"搜索"
href=
"search.html"
/>
<link
rel=
"next"
title=
"下载中心:"
href=
"download.html"
/>
<link
rel=
"prev"
title=
"欢迎来到 DCU 的环境安装教程!"
href=
"index.html"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"index.html"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"search.html"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul
class=
"current"
>
<li
class=
"toctree-l1 current"
><a
class=
"current reference internal"
href=
"#"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"#id3"
><strong>
兼容性(必读)
</strong></a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#dtk"
>
加速卡与DTK的兼容性
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#dtkdas-ai"
>
DTK和DAS(AI生态包)兼容性
</a></li>
</ul>
</li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"download.html"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"index.html"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"index.html"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
>
操作系统版本兼容列表
</li>
<li
class=
"wy-breadcrumbs-aside"
>
<a
href=
"_sources/get_started.md.txt"
rel=
"nofollow"
>
查看页面源码
</a>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<section
id=
"id1"
>
<h1>
操作系统版本兼容列表
<a
class=
"headerlink"
href=
"#id1"
title=
"此标题的永久链接"
>
</a></h1>
<p><strong>
注意
</strong>
:
</p>
<blockquote>
<div><p>
使用
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
iso
</span></code>
镜像安装操作系统时,请勿允许任何操作系统的更新行为, 否则会带来内核版本的升级,导致安装失败;
<br>
可参考
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
构建DCU基础环境
</span></code>
的
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
2.3\3.2
</span></code>
下的常用操作系统安装步骤之中的锁核操作;
</p>
</div></blockquote>
<p><strong>
操作系统
</strong>
:
</p>
<p>
开发者社区推荐操作系统:
</p>
<table
border=
"1"
class=
"docutils"
>
<thead>
<tr>
<th>
操作系统
</th>
<th>
版本
</th>
<th>
内核
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Centos
</td>
<td>
7.6
</td>
<td>
3.10.0-957.el7.x86_64
</td>
</tr>
<tr>
<td>
Centos
</td>
<td>
8.5
</td>
<td>
4.18.0-348.el8.x86_64
</td>
</tr>
<tr>
<td>
Rocky
</td>
<td>
8.6
</td>
<td>
4.18.0-348.el8.x86_64
</td>
</tr>
<tr>
<td>
Rocky
</td>
<td>
9.2
</td>
<td>
4.18.0-348.el8.x86_64
</td>
</tr>
<tr>
<td>
Ubuntu
</td>
<td>
20.04.1
</td>
<td>
5.4.0-42-generic
</td>
</tr>
<tr>
<td>
Ubuntu
</td>
<td>
22.04
</td>
<td>
5.15.0-25-generic
</td>
</tr>
<tr>
<td>
NFS
</td>
<td>
3.2
</td>
<td>
3.10.0-957.nfs.5.x86_64
</td>
</tr>
<tr>
<td>
NFS
</td>
<td>
4.0
</td>
<td>
4.19.113-14.1.nfs4.x86_64
</td>
</tr>
<tr>
<td>
NFS
</td>
<td>
4.0-Desktop
</td>
<td>
5.4.0-49-generic
</td>
</tr>
<tr>
<td>
UOS
</td>
<td>
1021e
</td>
<td>
4.19.90-2109.1.0.0108.up2.uel20.x86_64
</td>
</tr>
<tr>
<td>
Kylin
</td>
<td>
v10 SP2
</td>
<td>
4.19.90-24.4.v2101.ky10.x86_64
</td>
</tr>
<tr>
<td>
Anolis
</td>
<td>
8.4
</td>
<td>
4.19.91-23.4.an8.x86_64
</td>
</tr>
<tr>
<td>
Anolis
</td>
<td>
8.6
</td>
<td>
4.19.91-26.an8.x86_64
</td>
</tr>
<tr>
<td>
openEuler
</td>
<td>
22.03
</td>
<td>
5.10.0-60.18.0.50.oe2203.x86_64
</td>
</tr>
<tr>
<td>
BCLinux
</td>
<td>
8.2
</td>
<td>
4.19.0-240.23.11.el8_2.bclinux.x86_64
</td>
</tr>
</tbody>
</table>
<p><a
class=
"reference external"
href=
"https://docs.qq.com/sheet/DVHdTZHB3RVZOVENI?tab=dklqmf"
>
操作系统兼容性列表包含(兼容性等级等)
</a></p>
<hr
class=
"docutils"
/>
</section>
<section
id=
"dcu"
>
<h1>
支持的DCU型号
<a
class=
"headerlink"
href=
"#dcu"
title=
"此标题的永久链接"
>
</a></h1>
<ul
class=
"simple"
>
<li><p>
Z100
</p></li>
<li><p>
Z100L
</p></li>
<li><p>
K100
</p></li>
<li><p>
K100_AI
</p></li>
</ul>
</section>
<section
id=
"id2"
>
<h1>
DCU软件介绍:
<a
class=
"headerlink"
href=
"#id2"
title=
"此标题的永久链接"
>
</a></h1>
<ul>
<li><p><strong>
DTK
</strong>
:
</p>
<blockquote>
<div><p>
DCU加速卡软件工具包:包括函数库、编译环境、管理工具、性能分析工具等。
</p>
</div></blockquote>
</li>
<li><p><strong>
DAS (DCU AI Software Stack)
</strong>
:
</p>
<blockquote>
<div><p>
目前主要以python的whl形式在光合开发者社区进行发布。
</p>
</div></blockquote>
<ul
class=
"simple"
>
<li><p>
算子层
</p></li>
<li><p>
框架层
</p></li>
<li><p>
扩展组件层
</p></li>
</ul>
</li>
</ul>
</section>
<section
id=
"id3"
>
<h1><strong>
兼容性(必读)
</strong><a
class=
"headerlink"
href=
"#id3"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"dtk"
>
<h2>
加速卡与DTK的兼容性
<a
class=
"headerlink"
href=
"#dtk"
title=
"此标题的永久链接"
>
</a></h2>
<table
border=
"1"
class=
"docutils"
>
<thead>
<tr>
<th>
DCU猩红
</th>
<th>
DTK版本
</th>
<th>
注意
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Z100
</td>
<td>
DTK
>
=21.04
</td>
<td>
推荐使用 DTK
>
= 23.10
</td>
</tr>
<tr>
<td>
Z100L
</td>
<td>
DTK
>
=21.04
</td>
<td>
推荐使用 DTK
>
= 23.10
</td>
</tr>
<tr>
<td>
K100
</td>
<td>
DTK
>
=23.10
</td>
<td></td>
</tr>
<tr>
<td>
K100-AI
</td>
<td>
DTK
>
=24.04
</td>
<td></td>
</tr>
</tbody>
</table>
</section>
<section
id=
"dtkdas-ai"
>
<h2>
DTK和DAS(AI生态包)兼容性
<a
class=
"headerlink"
href=
"#dtkdas-ai"
title=
"此标题的永久链接"
>
</a></h2>
<table
border=
"1"
class=
"docutils"
>
<thead>
<tr>
<th>
DTK版本
</th>
<th>
DAS版本
</th>
<th>
注意
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
DTK-24.04.1
</td>
<td>
DAS1.1
</td>
<td>
见下述 DAS1.1 使用注意
</td>
</tr>
<tr>
<td>
DTK-24.04
</td>
<td>
DAS1.0
</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>
注意:
</strong></p>
<blockquote>
<div><p>
不兼容的版本可能出现严重的环境问题
</p>
</div></blockquote>
<hr
class=
"docutils"
/>
<ul
class=
"simple"
>
<li><p>
DAS1.1 使用注意:
</p>
<ul>
<li><p>
不支持操作系统
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
ubuntu18.04
</span></code>
,
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
Centos7.6
</span></code>
等
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
glibc
</span>
<span
class=
"pre"
>
<
=
</span>
<span
class=
"pre"
>
2.31
</span></code>
的操作系统
</p></li>
<li><p>
glib 版本查看方式:
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
ldd
</span>
<span
class=
"pre"
>
--version
</span></code></p></li>
<li><p>
如果遇到问题, 建议通过 docker 使用 glibc 高版本的容器系统;
</p></li>
</ul>
</li>
</ul>
<hr
class=
"docutils"
/>
</section>
</section>
</div>
</div>
<footer><div
class=
"rst-footer-buttons"
role=
"navigation"
aria-label=
"页脚"
>
<a
href=
"index.html"
class=
"btn btn-neutral float-left"
title=
"欢迎来到 DCU 的环境安装教程!"
accesskey=
"p"
rel=
"prev"
><span
class=
"fa fa-arrow-circle-left"
aria-hidden=
"true"
></span>
上一页
</a>
<a
href=
"download.html"
class=
"btn btn-neutral float-right"
title=
"下载中心:"
accesskey=
"n"
rel=
"next"
>
下一页
<span
class=
"fa fa-arrow-circle-right"
aria-hidden=
"true"
></span></a>
</div>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/index.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/><meta
name=
"generator"
content=
"Docutils 0.18.1: http://docutils.sourceforge.net/"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
欢迎来到 DCU 的环境安装教程!
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"_static/jquery.js"
></script>
<script
src=
"_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"./"
id=
"documentation_options"
src=
"_static/documentation_options.js"
></script>
<script
src=
"_static/doctools.js"
></script>
<script
src=
"_static/sphinx_highlight.js"
></script>
<script
src=
"_static/clipboard.min.js"
></script>
<script
src=
"_static/copybutton.js"
></script>
<script
src=
"_static/translations.js"
></script>
<script
src=
"_static/js/theme.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"genindex.html"
/>
<link
rel=
"search"
title=
"搜索"
href=
"search.html"
/>
<link
rel=
"next"
title=
"操作系统版本兼容列表"
href=
"get_started.html"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"#"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"search.html"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id3"
><strong>
兼容性(必读)
</strong></a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"download.html"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
CUDA 与 HIP 移植常见问题
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html"
>
问题一、纹理内存报错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#launch-bounds-256"
>
问题二、 launch bounds (256) 报错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#asm"
>
问题三、asm 代码,内联汇编代码编译报错;
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#cuda-math-h"
>
问题四、 cuda应用不转码适配找不到 math.h 头文件
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#pycuda-cu"
>
问题五、使用开源的pycuda 无法编译 cu文件
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#cu"
>
问题六、如何针对一个文件夹的cu代码进行转码
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#hip"
>
问题七、hip转码后部分宏定义不规范不会被转换,可能导致出现问题:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#math-constants-h"
>
问题八、 math_constants.h 找不到:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#hip-min"
>
问题九、转码后部分hip核函数不识别 min:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#dtk-25-04"
>
问题十、使用 DTK-25.04 之后的软件栈编译报头文件错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#g-hipruntime-hipmallochipmemcpy"
>
问题十一、g++ 编译 hipRuntime(hipMalloc、hipMemcpy)等接口代码,编译报错:
</a></li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"#"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"#"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
>
欢迎来到 DCU 的环境安装教程!
</li>
<li
class=
"wy-breadcrumbs-aside"
>
<a
href=
"_sources/index.rst.txt"
rel=
"nofollow"
>
查看页面源码
</a>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<section
id=
"dcu"
>
<h1>
欢迎来到 DCU 的环境安装教程!
<a
class=
"headerlink"
href=
"#dcu"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"id1"
>
<h2>
资源下载:
<a
class=
"headerlink"
href=
"#id1"
title=
"此标题的永久链接"
>
</a></h2>
<ul
class=
"simple"
>
<li><p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/6/main"
>
驱动下载
</a>
→ latest 驱动 → rock-xxx-xxx.aio.run
</p></li>
<li><p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/1/main"
>
DTK下载
</a>
→ latest → 对应的操作系统 → DTK-version-OS-version-x86_64.tar.gz
</p></li>
<li><p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/5/main"
>
工具包地址(DCU直通、Kubernets插件、HyQual压力测试、工具包文档)
</a></p></li>
<li><p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/4/main/"
>
DAS生态包下载
</a></p></li>
<li><p><a
class=
"reference external"
href=
"https://sourcefind.cn/#/main-page"
>
光源地址
</a></p></li>
</ul>
</section>
<section
id=
"id4"
>
<h2>
文档
<a
class=
"headerlink"
href=
"#id4"
title=
"此标题的永久链接"
>
</a></h2>
<div
class=
"toctree-wrapper compound"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id3"
><strong>
兼容性(必读)
</strong></a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"get_started.html#dtk"
>
加速卡与DTK的兼容性
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"get_started.html#dtkdas-ai"
>
DTK和DAS(AI生态包)兼容性
</a></li>
</ul>
</li>
</ul>
</div>
<div
class=
"toctree-wrapper compound"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"download.html"
>
下载中心:
</a></li>
</ul>
</div>
<div
class=
"toctree-wrapper compound"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
</div>
<div
class=
"toctree-wrapper compound"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#anaconda"
>
1.1. 安装Anaconda;
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#dcupytorchresnet50"
>
1.2. 使用DCU在Pytorch推理Resnet50分类
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#docker"
>
2.1. 安装Docker
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#id1"
>
2.2. 启动容器
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#id5"
>
2.3. 基于容器执行resetnet50分类的推理代码
</a></li>
</ul>
</li>
</ul>
</div>
<div
class=
"toctree-wrapper compound"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Hy-SMI.html"
>
hy-smi 使用介绍
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"Hy-SMI.html#id1"
>
hy-smi 命令输出介绍
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"Hy-SMI.html#id2"
>
常用用法:
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"Hy-SMI.html#id3"
>
更多用法
</a></li>
</ul>
</li>
</ul>
</div>
<div
class=
"toctree-wrapper compound"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html#dcu"
>
1.1. 构建DCU基础环境
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html#id1"
>
1.2. 替换深度学习算法包
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html#id2"
>
1.3. DCU 适配案例:
</a></li>
</ul>
</li>
</ul>
</div>
<div
class=
"toctree-wrapper compound"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
CUDA 与 HIP 移植常见问题
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html"
>
问题一、纹理内存报错:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id2"
><strong>
解决方法:
</strong></a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#launch-bounds-256"
>
问题二、 launch bounds (256) 报错:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id3"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#asm"
>
问题三、asm 代码,内联汇编代码编译报错;
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id4"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#cuda-math-h"
>
问题四、 cuda应用不转码适配找不到 math.h 头文件
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id5"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#pycuda-cu"
>
问题五、使用开源的pycuda 无法编译 cu文件
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id6"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#cu"
>
问题六、如何针对一个文件夹的cu代码进行转码
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id7"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#hip"
>
问题七、hip转码后部分宏定义不规范不会被转换,可能导致出现问题:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id8"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#math-constants-h"
>
问题八、 math_constants.h 找不到:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id9"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#hip-min"
>
问题九、转码后部分hip核函数不识别 min:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id10"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#dtk-25-04"
>
问题十、使用 DTK-25.04 之后的软件栈编译报头文件错:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id11"
>
解决方法:
</a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#g-hipruntime-hipmallochipmemcpy"
>
问题十一、g++ 编译 hipRuntime(hipMalloc、hipMemcpy)等接口代码,编译报错:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#id12"
>
解决方法:
</a></li>
</ul>
</li>
</ul>
</div>
</section>
</section>
<section
id=
"id5"
>
<h1>
索引与表格
<a
class=
"headerlink"
href=
"#id5"
title=
"此标题的永久链接"
>
</a></h1>
<ul
class=
"simple"
>
<li><p><a
class=
"reference internal"
href=
"genindex.html"
><span
class=
"std std-ref"
>
索引
</span></a></p></li>
<li><p><a
class=
"reference internal"
href=
"search.html"
><span
class=
"std std-ref"
>
搜索页面
</span></a></p></li>
</ul>
</section>
</div>
</div>
<footer><div
class=
"rst-footer-buttons"
role=
"navigation"
aria-label=
"页脚"
>
<a
href=
"get_started.html"
class=
"btn btn-neutral float-right"
title=
"操作系统版本兼容列表"
accesskey=
"n"
rel=
"next"
>
下一页
<span
class=
"fa fa-arrow-circle-right"
aria-hidden=
"true"
></span></a>
</div>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/install_dcu_on_os/base_install_intro.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/><meta
name=
"generator"
content=
"Docutils 0.18.1: http://docutils.sourceforge.net/"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
1. 开发者社区 DCU 环境安装手册
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"../_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"../_static/jquery.js"
></script>
<script
src=
"../_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"../"
id=
"documentation_options"
src=
"../_static/documentation_options.js"
></script>
<script
src=
"../_static/doctools.js"
></script>
<script
src=
"../_static/sphinx_highlight.js"
></script>
<script
src=
"../_static/clipboard.min.js"
></script>
<script
src=
"../_static/copybutton.js"
></script>
<script
src=
"../_static/translations.js"
></script>
<script
src=
"../_static/js/theme.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"../genindex.html"
/>
<link
rel=
"search"
title=
"搜索"
href=
"../search.html"
/>
<link
rel=
"next"
title=
"2 DCU基础环境完整教程-Centos7.6:"
href=
"centos.html"
/>
<link
rel=
"prev"
title=
"下载中心:"
href=
"../download.html"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"../index.html"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"../search.html"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#id3"
><strong>
兼容性(必读)
</strong></a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../download.html"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul
class=
"current"
>
<li
class=
"toctree-l1 current"
><a
class=
"current reference internal"
href=
"#"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"../index.html"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"../index.html"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
>
1. 开发者社区 DCU 环境安装手册
</li>
<li
class=
"wy-breadcrumbs-aside"
>
<a
href=
"../_sources/install_dcu_on_os/base_install_intro.md.txt"
rel=
"nofollow"
>
查看页面源码
</a>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<section
id=
"dcu"
>
<h1>
1. 开发者社区 DCU 环境安装手册
<a
class=
"headerlink"
href=
"#dcu"
title=
"此标题的永久链接"
>
</a></h1>
<p>
该文档主要针对 DCU 加速卡,提供基础软件环境安装部署以及基础测试的参考指导。
</p>
<p>
建议参考如下文档进行安装DCU基础环境:
</p>
<p><a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/1/main/latest/Document"
><strong>
点击,进入开发者社区环境搭建文档
</strong></a>
→ DTK 开发环境安装部署手册.pdf
</p>
</section>
</div>
</div>
<footer><div
class=
"rst-footer-buttons"
role=
"navigation"
aria-label=
"页脚"
>
<a
href=
"../download.html"
class=
"btn btn-neutral float-left"
title=
"下载中心:"
accesskey=
"p"
rel=
"prev"
><span
class=
"fa fa-arrow-circle-left"
aria-hidden=
"true"
></span>
上一页
</a>
<a
href=
"centos.html"
class=
"btn btn-neutral float-right"
title=
"2 DCU基础环境完整教程-Centos7.6:"
accesskey=
"n"
rel=
"next"
>
下一页
<span
class=
"fa fa-arrow-circle-right"
aria-hidden=
"true"
></span></a>
</div>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/install_dcu_on_os/centos.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/><meta
name=
"generator"
content=
"Docutils 0.18.1: http://docutils.sourceforge.net/"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
2 DCU基础环境完整教程-Centos7.6:
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"../_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"../_static/jquery.js"
></script>
<script
src=
"../_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"../"
id=
"documentation_options"
src=
"../_static/documentation_options.js"
></script>
<script
src=
"../_static/doctools.js"
></script>
<script
src=
"../_static/sphinx_highlight.js"
></script>
<script
src=
"../_static/clipboard.min.js"
></script>
<script
src=
"../_static/copybutton.js"
></script>
<script
src=
"../_static/translations.js"
></script>
<script
src=
"../_static/js/theme.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"../genindex.html"
/>
<link
rel=
"search"
title=
"搜索"
href=
"../search.html"
/>
<link
rel=
"next"
title=
"3 DCU基础环境完整教程-ubuntu:"
href=
"ubuntu.html"
/>
<link
rel=
"prev"
title=
"1. 开发者社区 DCU 环境安装手册"
href=
"base_install_intro.html"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"../index.html"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"../search.html"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#id3"
><strong>
兼容性(必读)
</strong></a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../download.html"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul
class=
"current"
>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1 current"
><a
class=
"current reference internal"
href=
"#"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#root"
>
2.1
<strong>
非root用户安装注意事项:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id1"
>
2.2.
<strong>
操作系统设置
</strong>
:
</a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id2"
>
2.3.
<strong>
关闭内核自动更新:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#yum"
>
2.4.
<strong>
更新yum源:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id3"
>
2.5.
<strong>
安装相关依赖:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id4"
>
2.6.
<strong>
校验系统配置:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id5"
>
2.7.
<strong>
安装驱动:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#dtk"
>
2.8.
<strong>
安装DTK:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id6"
>
2.9.
<strong>
验证安装结果:
</strong></a></li>
</ul>
</li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"../index.html"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"../index.html"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</li>
<li
class=
"wy-breadcrumbs-aside"
>
<a
href=
"../_sources/install_dcu_on_os/centos.md.txt"
rel=
"nofollow"
>
查看页面源码
</a>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<section
id=
"dcu-centos7-6"
>
<h1><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
<a
class=
"headerlink"
href=
"#dcu-centos7-6"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"root"
>
<h2>
2.1
<strong>
非root用户安装注意事项:
</strong><a
class=
"headerlink"
href=
"#root"
title=
"此标题的永久链接"
>
</a></h2>
<ul>
<li><p>
确保非root用户已加入
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
video
</span></code>
组,以便能够使用DCU。
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 对于有sudo权限的非root用户
</span>
sudo
<span
class=
"w"
>
</span>
usermod
<span
class=
"w"
>
</span>
-aG
<span
class=
"w"
>
</span>
video
<span
class=
"w"
>
</span><span
class=
"nv"
>
$USER
</span>
<span
class=
"c1"
>
# 对于无sudo权限的用户,由root执行
</span>
usermod
<span
class=
"w"
>
</span>
-aG
<span
class=
"w"
>
</span>
video
<span
class=
"w"
>
</span>
<
userid
>
</pre></div>
</div>
</li>
</ul>
</section>
<section
id=
"id1"
>
<h2>
2.2.
<strong>
操作系统设置
</strong>
:
<a
class=
"headerlink"
href=
"#id1"
title=
"此标题的永久链接"
>
</a></h2>
<p>
确保启动项中不包含nomodeset选项,如果内核以nomodeset选项启动,则驱动可能无法成功加载。
</p>
<ul>
<li><p>
需要保证系统纯净,命令行运行
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
lsmod
</span>
<span
class=
"pre"
>
|
</span>
<span
class=
"pre"
>
grep
</span>
<span
class=
"pre"
>
amdgpu
</span></code>
为空
</p></li>
<li><p>
关闭 selinux(可选)
</p>
<p>
修改
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
/etc/selinux/config
</span></code>
,设置
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
SELINUX=disabled
</span></code></p>
</li>
<li><p>
关闭 firewalld(可选)
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span>
systemctl
<span
class=
"w"
>
</span>
stop
<span
class=
"w"
>
</span>
firewalld
systemctl
<span
class=
"w"
>
</span>
disable
<span
class=
"w"
>
</span>
firewalld
</pre></div>
</div>
</li>
</ul>
</section>
<section
id=
"id2"
>
<h2>
2.3.
<strong>
关闭内核自动更新:
</strong><a
class=
"headerlink"
href=
"#id2"
title=
"此标题的永久链接"
>
</a></h2>
<ul>
<li><p>
编辑
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
/etc/yum.conf
</span></code>
,在
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
[main]
</span></code>
部分添加:
</p>
<div
class=
"highlight-default notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"n"
>
exclude
</span><span
class=
"o"
>
=
</span><span
class=
"n"
>
kernel
</span><span
class=
"o"
>
*
</span>
<span
class=
"n"
>
exclude
</span><span
class=
"o"
>
=
</span><span
class=
"n"
>
centos
</span><span
class=
"o"
>
-
</span><span
class=
"n"
>
release
</span><span
class=
"o"
>
*
</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section
id=
"yum"
>
<h2>
2.4.
<strong>
更新yum源:
</strong><a
class=
"headerlink"
href=
"#yum"
title=
"此标题的永久链接"
>
</a></h2>
<ul>
<li><p>
替换为中科大源,针对CentOS 7.6的示例, (注意使用双引号):
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
sed
<span
class=
"w"
>
</span>
-e
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
s|^mirrorlist=|#mirrorlist=|g
"
</span><span
class=
"w"
>
</span>
-e
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
s|^#baseurl=http://mirror.centos.org/centos/\$releasever|baseurl=https://mirrors.ustc.edu.cn/centos-vault/
</span><span
class=
"nv"
>
$minorver
</span><span
class=
"s2"
>
|g
"
</span><span
class=
"w"
>
</span>
-i.bak
<span
class=
"w"
>
</span>
/etc/yum.repos.d/CentOS-*.repo
</pre></div>
</div>
</li>
<li><p>
替换
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
CentOS-CR.repo
</span></code>
并且
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
enable
</span></code>
(安装python3需要)
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
sed
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
s|^baseurl=http://mirror.centos.org/centos/\$releasever|baseurl=https://mirrors.ustc.edu.cn/centos-vault/
</span><span
class=
"nv"
>
$minorver
</span><span
class=
"s2"
>
|g;s|enabled=0|enabled=1|g
"
</span><span
class=
"w"
>
</span>
/etc/yum.repos.d/CentOS-CR.repo
</pre></div>
</div>
</li>
<li><p>
对 Centos7 配置 SCLo 源(安装devtoolset需要):
</p>
<p>
编辑
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
/etc/yum.repos.d/CentOS-SCLo.repo
</span></code>
配置文件;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
vi
<span
class=
"w"
>
</span>
/etc/yum.repos.d/CentOS-SCLo.repo
</pre></div>
</div>
<p>
在
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
/etc/yum.repos.d/CentOS-SCLo.repo
</span></code>
写入以下内容,
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
Esc
</span>
<span
class=
"pre"
>
+
</span>
<span
class=
"pre"
>
:wq
</span></code>
保存退出
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"o"
>
[
</span>
centos-sclo-sclo
<span
class=
"o"
>
]
</span>
<span
class=
"nv"
>
name
</span><span
class=
"o"
>
=
</span>
CentOS-7
<span
class=
"w"
>
</span>
-
<span
class=
"w"
>
</span>
SCLo
<span
class=
"w"
>
</span>
sclo
<span
class=
"nv"
>
baseurl
</span><span
class=
"o"
>
=
</span>
https://mirrors.ustc.edu.cn/centos/7/sclo/
<span
class=
"nv"
>
$basearch
</span>
/sclo/
<span
class=
"nv"
>
gpgcheck
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
0
</span>
<span
class=
"nv"
>
enabled
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
1
</span>
<span
class=
"nv"
>
gpgkey
</span><span
class=
"o"
>
=
</span>
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
<span
class=
"o"
>
[
</span>
centos-sclo-rh
<span
class=
"o"
>
]
</span>
<span
class=
"nv"
>
name
</span><span
class=
"o"
>
=
</span>
CentOS-7
<span
class=
"w"
>
</span>
-
<span
class=
"w"
>
</span>
SCLo
<span
class=
"w"
>
</span>
rh
<span
class=
"nv"
>
baseurl
</span><span
class=
"o"
>
=
</span>
https://mirrors.ustc.edu.cn/centos/7/sclo/
<span
class=
"nv"
>
$basearch
</span>
/rh/
<span
class=
"nv"
>
gpgcheck
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
0
</span>
<span
class=
"nv"
>
enabled
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
1
</span>
<span
class=
"nv"
>
gpgkey
</span><span
class=
"o"
>
=
</span>
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
</pre></div>
</div>
</li>
<li><p>
对 Centos7 配置 epel 源(安装cmake3需要)
</p>
<p>
编辑
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
/etc/yum.repos.d/epel-7.repo
</span></code>
配置文件;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
vi
<span
class=
"w"
>
</span>
/etc/yum.repos.d/epel-7.repo
</pre></div>
</div>
<p>
在/etc/yum.repos.d/epel-7.repo写入以下内容,
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
Esc
</span>
<span
class=
"pre"
>
+
</span>
<span
class=
"pre"
>
:wq
</span></code>
保存退出;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"o"
>
[
</span>
epel
<span
class=
"o"
>
]
</span>
<span
class=
"nv"
>
name
</span><span
class=
"o"
>
=
</span>
Extra
<span
class=
"w"
>
</span>
Packages
<span
class=
"w"
>
</span><span
class=
"k"
>
for
</span><span
class=
"w"
>
</span>
Enterprise
<span
class=
"w"
>
</span>
Linux
<span
class=
"w"
>
</span><span
class=
"m"
>
7
</span><span
class=
"w"
>
</span>
-
<span
class=
"w"
>
</span><span
class=
"nv"
>
$basearch
</span>
<span
class=
"nv"
>
baseurl
</span><span
class=
"o"
>
=
</span>
http://mirrors.aliyun.com/epel/7/
<span
class=
"nv"
>
$basearch
</span>
<span
class=
"nv"
>
failovermethod
</span><span
class=
"o"
>
=
</span>
priority
<span
class=
"nv"
>
enabled
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
1
</span>
<span
class=
"nv"
>
gpgcheck
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
0
</span>
<span
class=
"nv"
>
gpgkey
</span><span
class=
"o"
>
=
</span>
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
<span
class=
"o"
>
[
</span>
epel-debuginfo
<span
class=
"o"
>
]
</span>
<span
class=
"nv"
>
name
</span><span
class=
"o"
>
=
</span>
Extra
<span
class=
"w"
>
</span>
Packages
<span
class=
"w"
>
</span><span
class=
"k"
>
for
</span><span
class=
"w"
>
</span>
Enterprise
<span
class=
"w"
>
</span>
Linux
<span
class=
"w"
>
</span><span
class=
"m"
>
7
</span><span
class=
"w"
>
</span>
-
<span
class=
"w"
>
</span><span
class=
"nv"
>
$basearch
</span><span
class=
"w"
>
</span>
–
<span
class=
"w"
>
</span>
Debug
<span
class=
"nv"
>
baseurl
</span><span
class=
"o"
>
=
</span>
http://mirrors.aliyun.com/epel/7/
<span
class=
"nv"
>
$basearch
</span>
/debug
<span
class=
"nv"
>
failovermethod
</span><span
class=
"o"
>
=
</span>
priority
<span
class=
"nv"
>
enabled
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
0
</span>
<span
class=
"nv"
>
gpgkey
</span><span
class=
"o"
>
=
</span>
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
<span
class=
"nv"
>
gpgcheck
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
0
</span>
<span
class=
"o"
>
[
</span>
epel-source
<span
class=
"o"
>
]
</span>
<span
class=
"nv"
>
name
</span><span
class=
"o"
>
=
</span>
Extra
<span
class=
"w"
>
</span>
Packages
<span
class=
"w"
>
</span><span
class=
"k"
>
for
</span><span
class=
"w"
>
</span>
Enterprise
<span
class=
"w"
>
</span>
Linux
<span
class=
"w"
>
</span><span
class=
"m"
>
7
</span><span
class=
"w"
>
</span>
-
<span
class=
"w"
>
</span><span
class=
"nv"
>
$basearch
</span><span
class=
"w"
>
</span>
–
<span
class=
"w"
>
</span>
Source
<span
class=
"nv"
>
baseurl
</span><span
class=
"o"
>
=
</span>
http://mirrors.aliyun.com/epel/7/SRPMS
<span
class=
"nv"
>
failovermethod
</span><span
class=
"o"
>
=
</span>
priority
<span
class=
"nv"
>
enabled
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
0
</span>
<span
class=
"nv"
>
gpgkey
</span><span
class=
"o"
>
=
</span>
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
<span
class=
"nv"
>
gpgcheck
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
0
</span>
</pre></div>
</div>
</li>
<li><p>
更新cache
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
yum
<span
class=
"w"
>
</span>
clean
<span
class=
"w"
>
</span>
all
<span
class=
"w"
>
</span>
yum
<span
class=
"w"
>
</span>
makecache
<span
class=
"w"
>
</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section
id=
"id3"
>
<h2>
2.5.
<strong>
安装相关依赖:
</strong><a
class=
"headerlink"
href=
"#id3"
title=
"此标题的永久链接"
>
</a></h2>
<ul>
<li><p>
联网执行以下命令安装必要的依赖包:
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
#安装 DCU 加速卡驱动所需的依赖包命令
</span>
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
gcc
<span
class=
"w"
>
</span>
gcc-c++
<span
class=
"w"
>
</span>
rpm-build
<span
class=
"w"
>
</span>
autoconf
<span
class=
"w"
>
</span>
kernel-devel-
<span
class=
"k"
>
$(
</span>
uname
<span
class=
"w"
>
</span>
-r
<span
class=
"k"
>
)
</span><span
class=
"w"
>
</span>
kernel-headers-
<span
class=
"k"
>
$(
</span>
uname
<span
class=
"w"
>
</span>
-r
<span
class=
"k"
>
)
</span>
<span
class=
"c1"
>
#安装cmake3
</span>
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
cmake3
<span
class=
"w"
>
</span>
ln
<span
class=
"w"
>
</span>
-s
<span
class=
"w"
>
</span>
/usr/bin/cmake3
<span
class=
"w"
>
</span>
/usr/bin/cmake
<span
class=
"c1"
>
#安装 DTK 开发环境所需的依赖包命令
</span>
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
centos-release-scl
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
gcc
<span
class=
"w"
>
</span>
gcc-c++
<span
class=
"w"
>
</span>
gcc-gfortran
<span
class=
"w"
>
</span>
elfutils
<span
class=
"w"
>
</span>
elfutils-devel
<span
class=
"w"
>
</span>
make
<span
class=
"w"
>
</span>
rpm-build
<span
class=
"w"
>
</span>
devtoolset-7
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
libbabeltrace-devel
<span
class=
"w"
>
</span>
libbabeltrace
<span
class=
"w"
>
</span>
pciutils-devel
<span
class=
"w"
>
</span>
libpciaccess-devel
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
numactl-devel
<span
class=
"w"
>
</span>
elfutils-libelf-devel
<span
class=
"w"
>
</span>
mesa-libGL-devel
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
epel-release
<span
class=
"w"
>
</span>
cmake3
<span
class=
"w"
>
</span>
pciutils-libs
<span
class=
"w"
>
</span>
pciutils-devel
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
perl-File-Which
<span
class=
"w"
>
</span>
perl-File-BaseDir
<span
class=
"w"
>
</span>
perl-File-Copy-Recursive
<span
class=
"w"
>
</span>
perl-File-Listing
<span
class=
"w"
>
</span>
java-1.8.0-openjdk
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
git
<span
class=
"w"
>
</span>
python
<span
class=
"w"
>
</span>
python-pip
<span
class=
"w"
>
</span>
python-devel
<span
class=
"w"
>
</span>
python-wheel
<span
class=
"w"
>
</span>
python3
<span
class=
"w"
>
</span>
python3-pip
<span
class=
"w"
>
</span>
python3-devel
<span
class=
"w"
>
</span>
python3-wheel
<span
class=
"w"
>
</span>
sqlite-devel
<span
class=
"w"
>
</span>
libibverbs
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
redhat-lsb-core
<span
class=
"w"
>
</span>
gettext
<span
class=
"w"
>
</span>
gettext-devel
<span
class=
"w"
>
</span>
protobuf
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
perl-Digest
<span
class=
"w"
>
</span>
perl-Digest-MD5
<span
class=
"w"
>
</span>
perl-Data-Dumper
<span
class=
"w"
>
</span>
vim-common
<span
class=
"w"
>
</span>
curl
<span
class=
"w"
>
</span>
libcurl
<span
class=
"w"
>
</span>
libcurl-devel
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
doxygen
<span
class=
"w"
>
</span>
graphviz
<span
class=
"w"
>
</span>
texlive
<span
class=
"w"
>
</span>
texlive-xtab
<span
class=
"w"
>
</span>
texlive-multirow
<span
class=
"w"
>
</span>
texlive-sectsty
<span
class=
"w"
>
</span>
texlive-tocloft
yum
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
texlive-adjustbox
<span
class=
"w"
>
</span>
deltarpm
<span
class=
"w"
>
</span>
tcl
<span
class=
"w"
>
</span>
automake
</pre></div>
</div>
</li>
<li><p>
离线安装依赖:
<br>
依赖离线包:rpm_DTK2404_centos7.6_3.10.0-957.tar
<br>
链接:https://pan.baidu.com/s/1jnWfddL4lHWVQb3btD34Iw?pwd=wj6q
<br>
提取码:wj6q
<br>
下载好导入服务器,进行解压:
<br></p>
<ol
class=
"arabic"
>
<li><p><code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
vi
</span>
<span
class=
"pre"
>
/etc/yum.repos.d/localyum.repo
</span></code>
,输入如下内容,请根据解压的路径,修改baseurl的内容,下面配置是在root路径下解压的依赖包;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"o"
>
[
</span>
local-repo
<span
class=
"o"
>
]
</span>
<span
class=
"nv"
>
name
</span><span
class=
"o"
>
=
</span>
local-repo
<span
class=
"nv"
>
baseurl
</span><span
class=
"o"
>
=
</span>
file:///root/centos7-dtk24.04
<span
class=
"nv"
>
enabled
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
1
</span>
<span
class=
"nv"
>
gpgcheck
</span><span
class=
"o"
>
=
</span><span
class=
"m"
>
0
</span>
</pre></div>
</div>
</li>
<li><p>
开始安装离线依赖包
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
sudo
<span
class=
"w"
>
</span>
yum
<span
class=
"w"
>
</span>
clean
<span
class=
"w"
>
</span>
all
<span
class=
"c1"
>
#以安装cmake3为例
</span>
yum
<span
class=
"w"
>
</span>
--disablerepo
<span
class=
"o"
>
=
</span><span
class=
"s2"
>
"
*
"
</span><span
class=
"w"
>
</span>
--enablerepo
<span
class=
"o"
>
=
</span><span
class=
"s2"
>
"
local-repo
"
</span><span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
cmake3
</pre></div>
</div>
</li>
</ol>
</li>
</ul>
</section>
<section
id=
"id4"
>
<h2>
2.6.
<strong>
校验系统配置:
</strong><a
class=
"headerlink"
href=
"#id4"
title=
"此标题的永久链接"
>
</a></h2>
<table
border=
"1"
class=
"docutils"
>
<thead>
<tr>
<th>
设备名称
</th>
<th>
设备码
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Z100L
</td>
<td>
1d94:55b7
</td>
</tr>
<tr>
<td>
K100
</td>
<td>
1d94:62b7
</td>
</tr>
<tr>
<td>
K100_AI
</td>
<td>
1d94:6210
</td>
</tr>
</tbody>
</table>
<ul
class=
"simple"
>
<li><p>
查看DCU设备
</p></li>
</ul>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# Z100L
</span>
root@sugontest79:/mnt#lspci
<span
class=
"w"
>
</span>
-nn
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span>
grep
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span>
55b7
------------------------------------------------------------------------------------------------------
<span
class=
"m"
>
07
</span>
:00.0
<span
class=
"w"
>
</span>
Display
<span
class=
"w"
>
</span>
controller
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span><span
class=
"m"
>
0380
</span><span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
ZIFANG
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:55b7
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
0a:00.0
<span
class=
"w"
>
</span>
Display
<span
class=
"w"
>
</span>
controller
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span><span
class=
"m"
>
0380
</span><span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
ZIFANG
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:55b7
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
------------------------------------------------------------------------------------------------------
<span
class=
"c1"
>
# K100
</span>
root@sugontest79:/mnt#lspci
<span
class=
"w"
>
</span>
-nn
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span>
grep
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span>
62b7
------------------------------------------------------------------------------------------------------
<span
class=
"m"
>
07
</span>
:00.0
<span
class=
"w"
>
</span>
Co-processor
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
0b40
<span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
KONGMING
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:62b7
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
0a:00.0
<span
class=
"w"
>
</span>
Co-processor
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
0b40
<span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
KONGMING
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:62b7
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
------------------------------------------------------------------------------------------------------
<span
class=
"c1"
>
# K100-AI
</span>
root@sugontest79:/mnt#lspci
<span
class=
"w"
>
</span>
-nn
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span>
grep
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span><span
class=
"m"
>
6210
</span>
------------------------------------------------------------------------------------------------------
<span
class=
"m"
>
07
</span>
:00.0
<span
class=
"w"
>
</span>
Co-processor
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
0b40
<span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
KONGMING
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:6210
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
0a:00.0
<span
class=
"w"
>
</span>
Co-processor
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
0b40
<span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
KONGMING
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:6210
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
------------------------------------------------------------------------------------------------------
</pre></div>
</div>
<blockquote>
<div><p>
注:输出信息可能和截图不完全一致。
</p>
</div></blockquote>
<ul>
<li><p>
配置环境变量
</p>
<br>
创建文件 `/etc/profile.d/devtoolset-7.sh`,内容如下:
<br>
`source /opt/rh/devtoolset-7/enable`
<br>
退出当前登录会话重新登录,或者执行source /etc/profile.d/devtoolset-7.sh。
</li>
</ul>
</section>
<section
id=
"id5"
>
<h2>
2.7.
<strong>
安装驱动:
</strong><a
class=
"headerlink"
href=
"#id5"
title=
"此标题的永久链接"
>
</a></h2>
<p><strong>
注意:
</strong></p>
<blockquote>
<div><p>
DTK和rock驱动有对应关系,可参考
<a
class=
"reference internal"
href=
"#DCU%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85%E6%89%8B%E5%86%8C"
><span
class=
"xref myst"
>
dcu-环境安装手册
</span></a>
,推荐安装最新的使用
<br>
-安装驱动之前需要安装基础包,包括cmake、gcc等多种基础依赖包,请先参考
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
DCU环境安装手册
</span></code>
完成基础环境包的安装。
</p>
</div></blockquote>
<p><strong>
驱动下载地址
</strong>
:
<a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/6/main"
>
https://cancon.hpccube.com:65024/6/main
</a>
→ latest 驱动→ rock-xxx-xxx.aio.run
</p>
<ol
class=
"arabic"
>
<li><p>
安装 DCU 加速卡驱动
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span>
chmod
<span
class=
"w"
>
</span><span
class=
"m"
>
755
</span><span
class=
"w"
>
</span>
rock-5.7.1-6.2.13-V1.0.1a.aio.run
./rock-5.7.1-6.2.13-V1.0.1a.aio.run
</pre></div>
</div>
</li>
<li><p>
如果安装过程更新了
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
vbios
</span></code>
, 则需要重启机器
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span>
reboot
</pre></div>
</div>
</li>
<li><p>
查看验证是否安装成功
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 出现如下类似结果则安装成功
</span>
<span
class=
"o"
>
[
</span>
root@b04r3n02
<span
class=
"w"
>
</span>
~
<span
class=
"o"
>
]
</span><span
class=
"c1"
>
# lsmod | grep hydcu
</span>
hydcu
<span
class=
"w"
>
</span><span
class=
"m"
>
1435342
</span><span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
hydcu_sched
<span
class=
"w"
>
</span><span
class=
"m"
>
34432
</span><span
class=
"w"
>
</span><span
class=
"m"
>
1
</span><span
class=
"w"
>
</span>
hydcu
hyttm
<span
class=
"w"
>
</span><span
class=
"m"
>
61919
</span><span
class=
"w"
>
</span><span
class=
"m"
>
1
</span><span
class=
"w"
>
</span>
hydcu
hykcl
<span
class=
"w"
>
</span><span
class=
"m"
>
46567
</span><span
class=
"w"
>
</span><span
class=
"m"
>
3
</span><span
class=
"w"
>
</span>
hydcu_sched,hydcu,hyttm
hy_extra
<span
class=
"w"
>
</span><span
class=
"m"
>
32140
</span><span
class=
"w"
>
</span><span
class=
"m"
>
3
</span><span
class=
"w"
>
</span>
hydcu_sched,hydcu,hykcl
amd_iommu_v2
<span
class=
"w"
>
</span><span
class=
"m"
>
18821
</span><span
class=
"w"
>
</span><span
class=
"m"
>
1
</span><span
class=
"w"
>
</span>
hydcu
drm_kms_helper
<span
class=
"w"
>
</span><span
class=
"m"
>
179394
</span><span
class=
"w"
>
</span><span
class=
"m"
>
3
</span><span
class=
"w"
>
</span>
ast,hydcu,hykcl
drm
<span
class=
"w"
>
</span><span
class=
"m"
>
429744
</span><span
class=
"w"
>
</span><span
class=
"m"
>
8
</span><span
class=
"w"
>
</span>
ast,ttm,hydcu,hykcl,hyttm,drm_kms_helper
</pre></div>
</div>
</li>
<li><p>
卸载驱动步骤:
</p>
<br>
如遇到异常情况或需要更新版本,先执行驱动卸载。
<br>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
rpm
<span
class=
"w"
>
</span>
-qa
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span><span
class=
"w"
>
</span>
grep
<span
class=
"w"
>
</span>
rock
<span
class=
"w"
>
</span><span
class=
"c1"
>
#查询安装的驱动版本
</span>
rmmod
<span
class=
"w"
>
</span>
hydcu
rpm
<span
class=
"w"
>
</span>
-e
<span
class=
"w"
>
</span>
rock-5.7.1-6.2.18-1.x86_64
</pre></div>
</div>
</li>
</ol>
</section>
<section
id=
"dtk"
>
<h2>
2.8.
<strong>
安装DTK:
</strong><a
class=
"headerlink"
href=
"#dtk"
title=
"此标题的永久链接"
>
</a></h2>
<p><strong>
DTK下载地址
</strong>
:
<a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/1/main"
>
https://cancon.hpccube.com:65024/1/main
</a>
→ latest → 对应的操作系统 → DTK-version-OS-version-x86_64.tar.gz
</p>
<ol
class=
"arabic"
>
<li><p>
安装
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 解压安装
</span>
tar
<span
class=
"w"
>
</span>
xvf
<span
class=
"w"
>
</span>
DTK-24.04.1-CentOS7.6-x86_64.tar.gz
<span
class=
"w"
>
</span>
-C
<span
class=
"w"
>
</span>
/opt
<span
class=
"c1"
>
# 创建软连接
</span>
ln
<span
class=
"w"
>
</span>
-s
<span
class=
"w"
>
</span>
/opt/dtk-24.04.1
<span
class=
"w"
>
</span>
/opt/dtk
</pre></div>
</div>
</li>
<li><p>
设置 DTK 环境变量
</p>
<blockquote>
<div><p>
DTK 压缩文件中提供了设置环境变量脚本 env.sh。可以通过 source /opt/dtk/env.sh 的方式临时加载环境变量。为避免多次配置,常用以下方式加载环境变量
</p>
</div></blockquote>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"nb"
>
echo
</span><span
class=
"w"
>
</span><span
class=
"s2"
>
"
source /opt/dtk/env.sh
"
</span>
>>
<span
class=
"w"
>
</span>
~/.bashrc
<span
class=
"c1"
>
# 激活环境变量
</span>
<span
class=
"nb"
>
source
</span><span
class=
"w"
>
</span>
~/.bashrc
</pre></div>
</div>
</li>
<li><p>
验证 DCU 环境
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 查看并执行 hy-smi 或者 rocm-smi 指令查看 dcu 基本信息
</span>
<span
class=
"o"
>
[
</span>
root@h01r4n04~
<span
class=
"o"
>
]
</span><span
class=
"c1"
>
# rocm-smi
</span>
<span
class=
"c1"
>
# 出现如下内容, 则安装成功
</span>
<span
class=
"o"
>
===================
</span>
System
<span
class=
"w"
>
</span>
Management
<span
class=
"w"
>
</span><span
class=
"nv"
>
Interface
</span><span
class=
"w"
>
</span><span
class=
"o"
>
=================
</span>
<span
class=
"o"
>
==========================================================
</span>
DCU
<span
class=
"w"
>
</span>
Temp
<span
class=
"w"
>
</span>
AvgPwr
<span
class=
"w"
>
</span>
Fan
<span
class=
"w"
>
</span>
Perf
<span
class=
"w"
>
</span>
PwrCap
<span
class=
"w"
>
</span>
VRAM%
<span
class=
"w"
>
</span>
DCU%
<span
class=
"m"
>
0
</span><span
class=
"w"
>
</span><span
class=
"m"
>
50
</span>
.0c
<span
class=
"w"
>
</span><span
class=
"m"
>
55
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
.0%
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
450
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"m"
>
1
</span><span
class=
"w"
>
</span><span
class=
"m"
>
50
</span>
.0c
<span
class=
"w"
>
</span><span
class=
"m"
>
58
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
.0%
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
450
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"m"
>
2
</span><span
class=
"w"
>
</span><span
class=
"m"
>
49
</span>
.0c
<span
class=
"w"
>
</span><span
class=
"m"
>
58
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
.0%
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
450
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
<span
class=
"m"
>
3
</span><span
class=
"w"
>
</span><span
class=
"m"
>
49
</span>
.0c
<span
class=
"w"
>
</span><span
class=
"m"
>
55
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
.0%
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
450
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"o"
>
==========================================================
</span>
<span
class=
"o"
>
======================
</span>
End
<span
class=
"w"
>
</span>
of
<span
class=
"w"
>
</span>
SMI
<span
class=
"w"
>
</span><span
class=
"nv"
>
Log
</span><span
class=
"o"
>
========================
</span>
</pre></div>
</div>
</li>
</ol>
</section>
<section
id=
"id6"
>
<h2>
2.9.
<strong>
验证安装结果:
</strong><a
class=
"headerlink"
href=
"#id6"
title=
"此标题的永久链接"
>
</a></h2>
<ol
class=
"arabic"
>
<li><p>
使用
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
rocminfo
</span></code>
命令检查ROCm系统状态
</p>
<br>
终端输入如下内容:
<br>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
rocminfo
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span><span
class=
"w"
>
</span>
grep
<span
class=
"w"
>
</span>
gfx
<span
class=
"c1"
>
# 其中Z100/Z100L为gfx906,K100为gfx926,K100_AI为gfx928; 有输出即说明驱动和DTK安装成功
</span>
------------------------------------------------------------------------------------------------------------
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
</pre></div>
</div>
<br>
</li>
<li><p>
运行
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
hy-smi
</span></code>
或
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
rocm-smi
</span></code>
来监控DCU的状态和性能指标;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 查看并执行 hy-smi 或者 rocm-smi 指令查看 dcu 基本信息
</span>
<span
class=
"o"
>
[
</span>
root@h01r4n04~
<span
class=
"o"
>
]
</span><span
class=
"c1"
>
# rocm-smi
</span>
<span
class=
"w"
>
</span><span
class=
"c1"
>
# 出现如下内容, 则安装成功
</span>
<span
class=
"o"
>
============================
</span><span
class=
"w"
>
</span>
System
<span
class=
"w"
>
</span>
Management
<span
class=
"w"
>
</span><span
class=
"nv"
>
Interface
</span><span
class=
"w"
>
</span><span
class=
"o"
>
=============================
</span>
<span
class=
"o"
>
======================================================================================
</span>
DCU
<span
class=
"w"
>
</span>
Temp
<span
class=
"w"
>
</span>
AvgPwr
<span
class=
"w"
>
</span>
Perf
<span
class=
"w"
>
</span>
PwrCap
<span
class=
"w"
>
</span>
VRAM%
<span
class=
"w"
>
</span>
DCU%
<span
class=
"w"
>
</span>
Mode
<span
class=
"w"
>
</span>
<span
class=
"m"
>
0
</span><span
class=
"w"
>
</span><span
class=
"m"
>
42
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
39
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
1
</span><span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
39
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
2
</span><span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
36
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
3
</span><span
class=
"w"
>
</span><span
class=
"m"
>
40
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
38
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
4
</span><span
class=
"w"
>
</span><span
class=
"m"
>
40
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
39
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
5
</span><span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
6
</span><span
class=
"w"
>
</span><span
class=
"m"
>
42
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
37
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
7
</span><span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
36
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"nv"
>
Normal
</span><span
class=
"w"
>
</span>
<span
class=
"o"
>
======================================================================================
</span>
<span
class=
"o"
>
===================================
</span><span
class=
"w"
>
</span>
End
<span
class=
"w"
>
</span>
of
<span
class=
"w"
>
</span>
SMI
<span
class=
"w"
>
</span><span
class=
"nv"
>
Log
</span><span
class=
"w"
>
</span><span
class=
"o"
>
===================================
</span>
</pre></div>
</div>
</li>
</ol>
</section>
</section>
</div>
</div>
<footer><div
class=
"rst-footer-buttons"
role=
"navigation"
aria-label=
"页脚"
>
<a
href=
"base_install_intro.html"
class=
"btn btn-neutral float-left"
title=
"1. 开发者社区 DCU 环境安装手册"
accesskey=
"p"
rel=
"prev"
><span
class=
"fa fa-arrow-circle-left"
aria-hidden=
"true"
></span>
上一页
</a>
<a
href=
"ubuntu.html"
class=
"btn btn-neutral float-right"
title=
"3 DCU基础环境完整教程-ubuntu:"
accesskey=
"n"
rel=
"next"
>
下一页
<span
class=
"fa fa-arrow-circle-right"
aria-hidden=
"true"
></span></a>
</div>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/install_dcu_on_os/ubuntu.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/><meta
name=
"generator"
content=
"Docutils 0.18.1: http://docutils.sourceforge.net/"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
3 DCU基础环境完整教程-ubuntu:
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"../_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"../_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"../_static/jquery.js"
></script>
<script
src=
"../_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"../"
id=
"documentation_options"
src=
"../_static/documentation_options.js"
></script>
<script
src=
"../_static/doctools.js"
></script>
<script
src=
"../_static/sphinx_highlight.js"
></script>
<script
src=
"../_static/clipboard.min.js"
></script>
<script
src=
"../_static/copybutton.js"
></script>
<script
src=
"../_static/translations.js"
></script>
<script
src=
"../_static/js/theme.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"../genindex.html"
/>
<link
rel=
"search"
title=
"搜索"
href=
"../search.html"
/>
<link
rel=
"next"
title=
"1 基于Anaconda的DCU使用示例:"
href=
"../Anaconda_Docker.html"
/>
<link
rel=
"prev"
title=
"2 DCU基础环境完整教程-Centos7.6:"
href=
"centos.html"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"../index.html"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"../search.html"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../get_started.html#id3"
><strong>
兼容性(必读)
</strong></a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../download.html"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul
class=
"current"
>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1 current"
><a
class=
"current reference internal"
href=
"#"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a><ul>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id1"
>
3.1.
<strong>
安装系统过程中注意:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id2"
>
3.2.
<strong>
安装完成系统后的配置
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id3"
>
3.3.
<strong>
更新国内软件下载源:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id4"
>
3.4.
<strong>
安装相关依赖:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id5"
>
3.5.
<strong>
校验系统配置:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id6"
>
3.6.
<strong>
安装驱动:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#dtk"
>
3.7.
<strong>
安装DTK:
</strong></a></li>
<li
class=
"toctree-l2"
><a
class=
"reference internal"
href=
"#id7"
>
3.8.
<strong>
验证安装结果:
</strong></a></li>
</ul>
</li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"../NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"../index.html"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"../index.html"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</li>
<li
class=
"wy-breadcrumbs-aside"
>
<a
href=
"../_sources/install_dcu_on_os/ubuntu.md.txt"
rel=
"nofollow"
>
查看页面源码
</a>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<section
id=
"dcu-ubuntu"
>
<h1><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
<a
class=
"headerlink"
href=
"#dcu-ubuntu"
title=
"此标题的永久链接"
>
</a></h1>
<section
id=
"id1"
>
<h2>
3.1.
<strong>
安装系统过程中注意:
</strong><a
class=
"headerlink"
href=
"#id1"
title=
"此标题的永久链接"
>
</a></h2>
<blockquote>
<div><p>
Ubuntu20.04.1(5.4.0-42-generic)和Ubuntu22.04.1(5.15.0-25-generic)已在 DCU 上进行全量验证,本文以Ubuntu20.04.1(5.4.0-42-generic)安装部署为例,如果是其他版本或者kernel不一致可能导致驱动无效
</p>
</div></blockquote>
<ol
class=
"arabic simple"
>
<li><p>
安装时不要连接网络(直接断掉网线或者在安装系统时将网络disable),否则会自动升级内核(
<font
color=
"red"
>
即使选择了不更新操作
</font>
)。
</p></li>
</ol>
<div
class=
"highlight-none notranslate"
><div
class=
"highlight"
><pre><span></span>
安装系统时将网络disable;
</pre></div>
</div>
<p><img
alt=
"disable_net"
src=
"../_images/disable_net.png"
/></p>
<ol
class=
"arabic simple"
start=
"2"
>
<li><p>
安装过程中, 涉及到更新的选项都选择不更新;
</p></li>
</ol>
</section>
<section
id=
"id2"
>
<h2>
3.2.
<strong>
安装完成系统后的配置
</strong><a
class=
"headerlink"
href=
"#id2"
title=
"此标题的永久链接"
>
</a></h2>
<ol
class=
"arabic"
>
<li><p>
安装完系统后确定内核, 是否符合兼容性, 如果不符合兼容性,
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
root@test79:/mnt#
<span
class=
"w"
>
</span>
uname
<span
class=
"w"
>
</span>
-r
<span
class=
"m"
>
5
</span>
.4.0-173-generic
</pre></div>
</div>
<p>
建议确认
</p>
<ul
class=
"simple"
>
<li><p>
使用的操作系统版本是否在兼容性列表;
</p></li>
<li><p>
是否在安装操作系统中禁用网络,选择不更新的相关配置;
</p></li>
</ul>
</li>
<li><p>
确保非root用户已加入
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
video
</span></code>
组,以便能够使用DCU;
</p>
<ul>
<li><p>
确保非root用户已加入
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
video
</span></code>
组,以便能够使用DCU, shell 命令修改;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 对于有sudo权限的非root用户
</span>
sudo
<span
class=
"w"
>
</span>
usermod
<span
class=
"w"
>
</span>
-aG
<span
class=
"w"
>
</span>
video
<span
class=
"w"
>
</span><span
class=
"nv"
>
$USER
</span>
<span
class=
"c1"
>
# 对于无sudo权限的用户,由root执行
</span>
usermod
<span
class=
"w"
>
</span>
-aG
<span
class=
"w"
>
</span>
video
<span
class=
"w"
>
</span>
<
userid
>
</pre></div>
</div>
</li>
<li><p>
或者,或者修改/etc/group文件,添加test用户;
</p>
<p><img
alt=
"disable_net"
src=
"../_images/render.png"
/></p>
<p>
退出重新登录。
</p>
</li>
</ul>
</li>
<li><p>
关闭内核自动更新:
</p>
<ul>
<li><p>
查看安装内核:
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
dpkg
<span
class=
"w"
>
</span>
--list
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span><span
class=
"w"
>
</span>
grep
<span
class=
"w"
>
</span>
linux-image
dpkg
<span
class=
"w"
>
</span>
--list
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span><span
class=
"w"
>
</span>
grep
<span
class=
"w"
>
</span>
linux-headers
dpkg
<span
class=
"w"
>
</span>
--list
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span><span
class=
"w"
>
</span>
grep
<span
class=
"w"
>
</span>
linux-modules
<span
class=
"c1"
>
# 输出结果:-----------------------------------------------------------------------------------------------------------
</span>
ii
<span
class=
"w"
>
</span>
linux-image-5.4.0-173-generic
<span
class=
"w"
>
</span><span
class=
"m"
>
5
</span>
.4.0-173.191
<span
class=
"w"
>
</span>
amd64
<span
class=
"w"
>
</span>
Signed
<span
class=
"w"
>
</span>
kernel
<span
class=
"w"
>
</span>
image
<span
class=
"w"
>
</span>
generic
hi
<span
class=
"w"
>
</span>
linux-image-5.4.0-42-generic
<span
class=
"w"
>
</span><span
class=
"m"
>
5
</span>
.4.0-42.46
<span
class=
"w"
>
</span>
amd64
<span
class=
"w"
>
</span>
Signed
<span
class=
"w"
>
</span>
kernel
<span
class=
"w"
>
</span>
image
<span
class=
"w"
>
</span>
generic
ii
<span
class=
"w"
>
</span>
linux-image-generic
<span
class=
"w"
>
</span><span
class=
"m"
>
5
</span>
.4.0.173.171
<span
class=
"w"
>
</span>
amd64
<span
class=
"w"
>
</span>
Generic
<span
class=
"w"
>
</span>
Linux
<span
class=
"w"
>
</span>
kernel
<span
class=
"w"
>
</span>
image
</pre></div>
</div>
</li>
<li><p>
禁止内核更新方法1:
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
sudo
<span
class=
"w"
>
</span>
vi
<span
class=
"w"
>
</span>
/etc/apt/apt.conf.d/10periodic
sudo
<span
class=
"w"
>
</span>
vi
<span
class=
"w"
>
</span>
/etc/apt/apt.conf.d/20auto-upgrades
<span
class=
"c1"
>
# 后面部分全部改成 “0”
</span>
<span
class=
"c1"
>
# 修改后内容 ----------------------------------------
</span>
<span
class=
"c1"
>
# 10periodic
</span>
APT::Periodic::Update-Package-Lists
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
0
"
</span><span
class=
"p"
>
;
</span>
APT::Periodic::Download-Upgradeable-Packages
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
0
"
</span><span
class=
"p"
>
;
</span>
APT::Periodic::AutocleanInterval
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
0
"
</span><span
class=
"p"
>
;
</span>
<span
class=
"c1"
>
# 20auto-upgrades
</span>
APT::Periodic::Update-Package-Lists
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
0
"
</span><span
class=
"p"
>
;
</span>
APT::Periodic::Unattended-Upgrade
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
0
"
</span><span
class=
"p"
>
;
</span>
</pre></div>
</div>
</li>
<li><p>
禁止内核更新方法2:
</p>
<p>
直接使用hold参数,固定内核版本:
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
sudo
<span
class=
"w"
>
</span>
apt-mark
<span
class=
"w"
>
</span>
hold
<span
class=
"w"
>
</span>
linux-image-5.4.0-42-generic
sudo
<span
class=
"w"
>
</span>
apt-mark
<span
class=
"w"
>
</span>
hold
<span
class=
"w"
>
</span>
linux-headers-5.4.0-42-generic
sudo
<span
class=
"w"
>
</span>
apt-mark
<span
class=
"w"
>
</span>
hold
<span
class=
"w"
>
</span>
linux-modules-extra-5.4.0-42-generic
</pre></div>
</div>
<p>
查询 Ubuntu系统被锁定不更新的软件包状态(hold)
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
sudo
<span
class=
"w"
>
</span>
dpkg
<span
class=
"w"
>
</span>
--get-selections
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span><span
class=
"w"
>
</span>
grep
<span
class=
"w"
>
</span>
hold
</pre></div>
</div>
</li>
</ul>
</li>
</ol>
</section>
<section
id=
"id3"
>
<h2>
3.3.
<strong>
更新国内软件下载源:
</strong><a
class=
"headerlink"
href=
"#id3"
title=
"此标题的永久链接"
>
</a></h2>
<ol
class=
"arabic"
>
<li><p>
备份源文件:
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
sudo
<span
class=
"w"
>
</span>
cp
<span
class=
"w"
>
</span>
/etc/apt/sources.list
<span
class=
"w"
>
</span>
/etc/apt/sources.list.bak
</pre></div>
</div>
</li>
<li><p>
修改源文件sources.list: 将原文件内容全部注释或删掉,添加以下内容;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 当前使用阿里源, 如果想使用其他源, 可以自行在网上搜索其他源的配置文件,并替换掉以下内容;
</span>
<span
class=
"c1"
>
# 注意换源的时候需要和操作系统的版本号作匹配
</span>
deb
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb-src
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal-security
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb-src
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal-security
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal-updates
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb-src
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal-updates
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal-proposed
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb-src
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal-proposed
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal-backports
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
deb-src
<span
class=
"w"
>
</span>
http://mirrors.aliyun.com/ubuntu/
<span
class=
"w"
>
</span>
focal-backports
<span
class=
"w"
>
</span>
main
<span
class=
"w"
>
</span>
restricted
<span
class=
"w"
>
</span>
universe
<span
class=
"w"
>
</span>
multiverse
</pre></div>
</div>
<p>
如果是ubuntu-22.04可以直接使用如下方式, 更换为华为源;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 修改为华为源
</span>
sudo
<span
class=
"w"
>
</span>
sed
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g
"
</span><span
class=
"w"
>
</span>
/etc/apt/sources.list
sudo
<span
class=
"w"
>
</span>
sed
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span><span
class=
"s2"
>
"
s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g
"
</span><span
class=
"w"
>
</span>
/etc/apt/sources.list
</pre></div>
</div>
</li>
<li><p>
更新:
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
update
<span
class=
"w"
>
</span>
</pre></div>
</div>
</li>
</ol>
</section>
<section
id=
"id4"
>
<h2>
3.4.
<strong>
安装相关依赖:
</strong><a
class=
"headerlink"
href=
"#id4"
title=
"此标题的永久链接"
>
</a></h2>
<ul>
<li><p>
联网执行以下命令安装必要的依赖包:
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 安装 DCU 加速卡驱动所需的依赖包命令
</span>
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
cmake
<span
class=
"w"
>
</span>
gcc
<span
class=
"w"
>
</span>
autoconf
<span
class=
"w"
>
</span>
linux-kernel-headers
<span
class=
"w"
>
</span>
kernel-package
<span
class=
"w"
>
</span>
automake
<span
class=
"w"
>
</span>
linux-modules-extra-
<span
class=
"sb"
>
`
</span>
uname
<span
class=
"w"
>
</span>
-r
<span
class=
"sb"
>
`
</span><span
class=
"w"
>
</span>
linux-image-
<span
class=
"sb"
>
`
</span>
uname
<span
class=
"w"
>
</span>
-r
<span
class=
"sb"
>
`
</span><span
class=
"w"
>
</span>
linux-headers-
<span
class=
"sb"
>
`
</span>
uname
<span
class=
"w"
>
</span>
-r
<span
class=
"sb"
>
`
</span>
<span
class=
"c1"
>
# 安装 DTK 开发环境所需的依赖包命令
</span>
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
make
<span
class=
"w"
>
</span>
gcc
<span
class=
"w"
>
</span>
g++
<span
class=
"w"
>
</span>
cmake
<span
class=
"w"
>
</span>
git
<span
class=
"w"
>
</span>
wget
<span
class=
"w"
>
</span>
gfortran
<span
class=
"w"
>
</span>
elfutils
<span
class=
"w"
>
</span>
libdrm-dev
<span
class=
"w"
>
</span>
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
kmod
<span
class=
"w"
>
</span>
libtinfo5
<span
class=
"w"
>
</span>
sqlite3
<span
class=
"w"
>
</span>
libsqlite3-dev
<span
class=
"w"
>
</span>
libelf-dev
<span
class=
"w"
>
</span>
libibverbs1
<span
class=
"w"
>
</span>
libgtk2.0-0
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
libnuma-dev
<span
class=
"w"
>
</span>
libgl1-mesa-dev
<span
class=
"w"
>
</span>
rpm
<span
class=
"w"
>
</span>
rsync
<span
class=
"w"
>
</span>
mesa-common-dev
<span
class=
"w"
>
</span>
apt-utils
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
cmake
<span
class=
"w"
>
</span>
libpci-dev
<span
class=
"w"
>
</span>
pciutils
<span
class=
"w"
>
</span>
libpciaccess-dev
<span
class=
"w"
>
</span>
libbabeltrace-dev
<span
class=
"w"
>
</span>
pkg-config
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
libfile-which-perl
<span
class=
"w"
>
</span>
libfile-basedir-perl
<span
class=
"w"
>
</span>
libfile-copy-recursive-perl
<span
class=
"w"
>
</span>
libfile-listing-perl
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
python3
<span
class=
"w"
>
</span>
python3-pip
<span
class=
"w"
>
</span>
python3-dev
<span
class=
"w"
>
</span>
python3-wheel
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
gettext
<span
class=
"w"
>
</span>
gettext-base
<span
class=
"w"
>
</span>
libprotobuf-dev
<span
class=
"w"
>
</span>
tcl
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
libio-digest-perl
<span
class=
"w"
>
</span>
libdigest-md5-file-perl
<span
class=
"w"
>
</span>
libdata-dumper-simple-perl
<span
class=
"w"
>
</span>
vim
<span
class=
"w"
>
</span>
curl
<span
class=
"w"
>
</span>
libcurlpp-dev
sudo
<span
class=
"w"
>
</span>
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
-y
<span
class=
"w"
>
</span>
doxygen
<span
class=
"w"
>
</span>
graphviz
<span
class=
"w"
>
</span>
texlive
<span
class=
"w"
>
</span>
libncurses5
<span
class=
"w"
>
</span>
msgpack*
sudo
<span
class=
"w"
>
</span>
apt
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
mlocate
</pre></div>
</div>
</li>
<li><p>
离线安装依赖:
<br>
依赖离线包:deb_DTK2404_Ubuntu20.04.1_5.4.0-42-generic.tar
<br>
链接:https://pan.baidu.com/s/1jnWfddL4lHWVQb3btD34Iw?pwd=wj6q
<br>
提取码:wj6q
<br>
下载好导入服务器,进行解压:
<br></p>
<ol
class=
"arabic"
>
<li><p><code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
vi
</span>
<span
class=
"pre"
>
/etc/apt/sources.list.d/myrepo.list
</span></code>
,输入如下内容,注意修改解压的路径,下面配置是在/data路径下解压的;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
vi
<span
class=
"w"
>
</span>
/etc/apt/sources.list.d/myrepo.list
<span
class=
"c1"
>
#输入如下内容,注意修改解压的路径,下面配置是在/data路径下解压的
</span>
deb
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span><span
class=
"nv"
>
trusted
</span><span
class=
"o"
>
=
</span>
yes
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span>
file:///data/my-debian-packages
<span
class=
"w"
>
</span>
./
<span
class=
"c1"
>
#保存退出即可
</span>
chmod
<span
class=
"w"
>
</span>
+r
<span
class=
"w"
>
</span>
/data
chown
<span
class=
"w"
>
</span>
-R
<span
class=
"w"
>
</span>
_apt:root
<span
class=
"w"
>
</span>
/datahR
chown
<span
class=
"w"
>
</span>
-R
<span
class=
"w"
>
</span>
man:root
<span
class=
"w"
>
</span>
/var/cache/man
<span
class=
"c1"
>
#更新系统的apt缓存,使其能够识别并使用新添加的本地私有源
</span>
apt
<span
class=
"w"
>
</span>
update
apt-get
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
udev
apt
<span
class=
"w"
>
</span>
install
<span
class=
"w"
>
</span>
mlocate
</pre></div>
</div>
</li>
</ol>
<p>
更新了之后,就可以通过
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
apt
</span>
<span
class=
"pre"
>
install
</span></code>
安装依赖包了。
</p>
</li>
</ul>
</section>
<section
id=
"id5"
>
<h2>
3.5.
<strong>
校验系统配置:
</strong><a
class=
"headerlink"
href=
"#id5"
title=
"此标题的永久链接"
>
</a></h2>
<table
border=
"1"
class=
"docutils"
>
<thead>
<tr>
<th>
设备名称
</th>
<th>
设备码
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Z100L
</td>
<td>
1d94:55b7
</td>
</tr>
<tr>
<td>
K100
</td>
<td>
1d94:62b7
</td>
</tr>
<tr>
<td>
K100_AI
</td>
<td>
1d94:6210
</td>
</tr>
</tbody>
</table>
<ul
class=
"simple"
>
<li><p>
查看DCU设备
</p></li>
</ul>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# Z100L
</span>
root@sugontest79:/mnt#lspci
<span
class=
"w"
>
</span>
-nn
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span>
grep
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span>
55b7
------------------------------------------------------------------------------------------------------
<span
class=
"m"
>
07
</span>
:00.0
<span
class=
"w"
>
</span>
Display
<span
class=
"w"
>
</span>
controller
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span><span
class=
"m"
>
0380
</span><span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
ZIFANG
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:55b7
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
0a:00.0
<span
class=
"w"
>
</span>
Display
<span
class=
"w"
>
</span>
controller
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span><span
class=
"m"
>
0380
</span><span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
ZIFANG
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:55b7
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
------------------------------------------------------------------------------------------------------
<span
class=
"c1"
>
# K100
</span>
root@sugontest79:/mnt#lspci
<span
class=
"w"
>
</span>
-nn
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span>
grep
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span>
62b7
------------------------------------------------------------------------------------------------------
<span
class=
"m"
>
07
</span>
:00.0
<span
class=
"w"
>
</span>
Co-processor
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
0b40
<span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
KONGMING
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:62b7
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
0a:00.0
<span
class=
"w"
>
</span>
Co-processor
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
0b40
<span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
KONGMING
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:62b7
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
------------------------------------------------------------------------------------------------------
<span
class=
"c1"
>
# K100-AI
</span>
root@sugontest79:/mnt#lspci
<span
class=
"w"
>
</span>
-nn
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span>
grep
<span
class=
"w"
>
</span>
-i
<span
class=
"w"
>
</span><span
class=
"m"
>
6210
</span>
------------------------------------------------------------------------------------------------------
<span
class=
"m"
>
07
</span>
:00.0
<span
class=
"w"
>
</span>
Co-processor
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
0b40
<span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
KONGMING
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:6210
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
0a:00.0
<span
class=
"w"
>
</span>
Co-processor
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
0b40
<span
class=
"o"
>
]
</span>
:
<span
class=
"w"
>
</span>
Chengdu
<span
class=
"w"
>
</span>
Haiguang
<span
class=
"w"
>
</span>
IC
<span
class=
"w"
>
</span>
Design
<span
class=
"w"
>
</span>
Co.,
<span
class=
"w"
>
</span>
Ltd.
<span
class=
"w"
>
</span>
KONGMING
<span
class=
"w"
>
</span><span
class=
"o"
>
[
</span>
1d94:6210
<span
class=
"o"
>
]
</span><span
class=
"w"
>
</span><span
class=
"o"
>
(
</span>
rev
<span
class=
"w"
>
</span><span
class=
"m"
>
01
</span><span
class=
"o"
>
)
</span>
------------------------------------------------------------------------------------------------------
</pre></div>
</div>
<blockquote>
<div><p>
注:输出信息可能和截图不完全一致。
</p>
</div></blockquote>
</section>
<section
id=
"id6"
>
<h2>
3.6.
<strong>
安装驱动:
</strong><a
class=
"headerlink"
href=
"#id6"
title=
"此标题的永久链接"
>
</a></h2>
<p><strong>
注意:
</strong></p>
<blockquote>
<div><p>
DTK和rock驱动有对应关系,可参考
<a
class=
"reference internal"
href=
"#DCU%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85%E6%89%8B%E5%86%8C"
><span
class=
"xref myst"
>
dcu-环境安装手册
</span></a>
,推荐安装最新的使用
<br>
-安装驱动之前需要安装基础包,包括cmake、gcc等多种基础依赖包,请先参考
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
DCU环境安装手册
</span></code>
完成基础环境包的安装。
</p>
</div></blockquote>
<p><strong>
驱动下载地址
</strong>
:
<a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/6/main"
>
https://cancon.hpccube.com:65024/6/main
</a>
→ latest 驱动→ rock-xxx-xxx.aio.run
</p>
<ol
class=
"arabic"
>
<li><p>
安装 DCU 加速卡驱动
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span>
chmod
<span
class=
"w"
>
</span><span
class=
"m"
>
755
</span><span
class=
"w"
>
</span>
rock-5.7.1-6.2.13-V1.0.1a.aio.run
./rock-5.7.1-6.2.13-V1.0.1a.aio.run
</pre></div>
</div>
</li>
<li><p>
如果安装过程更新了
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
vbios
</span></code>
, 则需要重启机器
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span>
reboot
</pre></div>
</div>
</li>
<li><p>
查看验证是否安装成功
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 出现如下类似结果则安装成功
</span>
<span
class=
"o"
>
[
</span>
root@b04r3n02
<span
class=
"w"
>
</span>
~
<span
class=
"o"
>
]
</span><span
class=
"c1"
>
# lsmod | grep hydcu
</span>
hydcu
<span
class=
"w"
>
</span><span
class=
"m"
>
1435342
</span><span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
hydcu_sched
<span
class=
"w"
>
</span><span
class=
"m"
>
34432
</span><span
class=
"w"
>
</span><span
class=
"m"
>
1
</span><span
class=
"w"
>
</span>
hydcu
hyttm
<span
class=
"w"
>
</span><span
class=
"m"
>
61919
</span><span
class=
"w"
>
</span><span
class=
"m"
>
1
</span><span
class=
"w"
>
</span>
hydcu
hykcl
<span
class=
"w"
>
</span><span
class=
"m"
>
46567
</span><span
class=
"w"
>
</span><span
class=
"m"
>
3
</span><span
class=
"w"
>
</span>
hydcu_sched,hydcu,hyttm
hy_extra
<span
class=
"w"
>
</span><span
class=
"m"
>
32140
</span><span
class=
"w"
>
</span><span
class=
"m"
>
3
</span><span
class=
"w"
>
</span>
hydcu_sched,hydcu,hykcl
amd_iommu_v2
<span
class=
"w"
>
</span><span
class=
"m"
>
18821
</span><span
class=
"w"
>
</span><span
class=
"m"
>
1
</span><span
class=
"w"
>
</span>
hydcu
drm_kms_helper
<span
class=
"w"
>
</span><span
class=
"m"
>
179394
</span><span
class=
"w"
>
</span><span
class=
"m"
>
3
</span><span
class=
"w"
>
</span>
ast,hydcu,hykcl
drm
<span
class=
"w"
>
</span><span
class=
"m"
>
429744
</span><span
class=
"w"
>
</span><span
class=
"m"
>
8
</span><span
class=
"w"
>
</span>
ast,ttm,hydcu,hykcl,hyttm,drm_kms_helper
</pre></div>
</div>
</li>
<li><p>
卸载驱动步骤:
</p>
<br>
如遇到异常情况或需要更新版本,先执行驱动卸载。
<br>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
rpm
<span
class=
"w"
>
</span>
-qa
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span><span
class=
"w"
>
</span>
grep
<span
class=
"w"
>
</span>
rock
<span
class=
"w"
>
</span><span
class=
"c1"
>
#查询安装的驱动版本
</span>
rmmod
<span
class=
"w"
>
</span>
hydcu
rpm
<span
class=
"w"
>
</span>
-e
<span
class=
"w"
>
</span>
rock-5.7.1-6.2.18-1.x86_64
</pre></div>
</div>
</li>
</ol>
</section>
<section
id=
"dtk"
>
<h2>
3.7.
<strong>
安装DTK:
</strong><a
class=
"headerlink"
href=
"#dtk"
title=
"此标题的永久链接"
>
</a></h2>
<p><strong>
DTK下载地址
</strong>
:
<a
class=
"reference external"
href=
"https://cancon.hpccube.com:65024/1/main"
>
https://cancon.hpccube.com:65024/1/main
</a>
→ latest → 对应的操作系统 → DTK-version-OS-version-x86_64.tar.gz
</p>
<ol
class=
"arabic"
>
<li><p>
安装
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 解压安装
</span>
tar
<span
class=
"w"
>
</span>
xvf
<span
class=
"w"
>
</span>
DTK-24.04.1-CentOS7.6-x86_64.tar.gz
<span
class=
"w"
>
</span>
-C
<span
class=
"w"
>
</span>
/opt
<span
class=
"c1"
>
# 创建软连接
</span>
ln
<span
class=
"w"
>
</span>
-s
<span
class=
"w"
>
</span>
/opt/dtk-24.04.1
<span
class=
"w"
>
</span>
/opt/dtk
</pre></div>
</div>
</li>
<li><p>
设置 DTK 环境变量
</p>
<blockquote>
<div><p>
DTK 压缩文件中提供了设置环境变量脚本 env.sh。可以通过 source /opt/dtk/env.sh 的方式临时加载环境变量。为避免多次配置,常用以下方式加载环境变量
</p>
</div></blockquote>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"nb"
>
echo
</span><span
class=
"w"
>
</span><span
class=
"s2"
>
"
source /opt/dtk/env.sh
"
</span>
>>
<span
class=
"w"
>
</span>
~/.bashrc
<span
class=
"c1"
>
# 激活环境变量
</span>
<span
class=
"nb"
>
source
</span><span
class=
"w"
>
</span>
~/.bashrc
</pre></div>
</div>
</li>
<li><p>
验证 DCU 环境
</p>
<div
class=
"highlight-bash notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 查看并执行 hy-smi 或者 rocm-smi 指令查看 dcu 基本信息
</span>
<span
class=
"o"
>
[
</span>
root@h01r4n04~
<span
class=
"o"
>
]
</span><span
class=
"c1"
>
# rocm-smi
</span>
<span
class=
"c1"
>
# 出现如下内容, 则安装成功
</span>
<span
class=
"o"
>
===================
</span>
System
<span
class=
"w"
>
</span>
Management
<span
class=
"w"
>
</span><span
class=
"nv"
>
Interface
</span><span
class=
"w"
>
</span><span
class=
"o"
>
=================
</span>
<span
class=
"o"
>
==========================================================
</span>
DCU
<span
class=
"w"
>
</span>
Temp
<span
class=
"w"
>
</span>
AvgPwr
<span
class=
"w"
>
</span>
Fan
<span
class=
"w"
>
</span>
Perf
<span
class=
"w"
>
</span>
PwrCap
<span
class=
"w"
>
</span>
VRAM%
<span
class=
"w"
>
</span>
DCU%
<span
class=
"m"
>
0
</span><span
class=
"w"
>
</span><span
class=
"m"
>
50
</span>
.0c
<span
class=
"w"
>
</span><span
class=
"m"
>
55
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
.0%
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
450
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"m"
>
1
</span><span
class=
"w"
>
</span><span
class=
"m"
>
50
</span>
.0c
<span
class=
"w"
>
</span><span
class=
"m"
>
58
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
.0%
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
450
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"m"
>
2
</span><span
class=
"w"
>
</span><span
class=
"m"
>
49
</span>
.0c
<span
class=
"w"
>
</span><span
class=
"m"
>
58
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
.0%
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
450
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
<span
class=
"m"
>
3
</span><span
class=
"w"
>
</span><span
class=
"m"
>
49
</span>
.0c
<span
class=
"w"
>
</span><span
class=
"m"
>
55
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
.0%
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
450
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"o"
>
==========================================================
</span>
<span
class=
"o"
>
======================
</span>
End
<span
class=
"w"
>
</span>
of
<span
class=
"w"
>
</span>
SMI
<span
class=
"w"
>
</span><span
class=
"nv"
>
Log
</span><span
class=
"o"
>
========================
</span>
</pre></div>
</div>
</li>
</ol>
</section>
<section
id=
"id7"
>
<h2>
3.8.
<strong>
验证安装结果:
</strong><a
class=
"headerlink"
href=
"#id7"
title=
"此标题的永久链接"
>
</a></h2>
<ol
class=
"arabic"
>
<li><p>
使用
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
rocminfo
</span></code>
命令检查ROCm系统状态
</p>
<br>
终端输入如下内容:
<br>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span>
rocminfo
<span
class=
"w"
>
</span><span
class=
"p"
>
|
</span><span
class=
"w"
>
</span>
grep
<span
class=
"w"
>
</span>
gfx
<span
class=
"c1"
>
# 其中Z100/Z100L为gfx906,K100为gfx926,K100_AI为gfx928; 有输出即说明驱动和DTK安装成功
</span>
------------------------------------------------------------------------------------------------------------
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
<span
class=
"w"
>
</span>
Name:
<span
class=
"w"
>
</span>
amdgcn-amd-amdhsa--gfx906:sramecc+:xnack-
</pre></div>
</div>
<br>
</li>
<li><p>
运行
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
hy-smi
</span></code>
或
<code
class=
"docutils literal notranslate"
><span
class=
"pre"
>
rocm-smi
</span></code>
来监控DCU的状态和性能指标;
</p>
<div
class=
"highlight-shell notranslate"
><div
class=
"highlight"
><pre><span></span><span
class=
"c1"
>
# 查看并执行 hy-smi 或者 rocm-smi 指令查看 dcu 基本信息
</span>
<span
class=
"o"
>
[
</span>
root@h01r4n04~
<span
class=
"o"
>
]
</span><span
class=
"c1"
>
# rocm-smi
</span>
<span
class=
"w"
>
</span><span
class=
"c1"
>
# 出现如下内容, 则安装成功
</span>
<span
class=
"o"
>
============================
</span><span
class=
"w"
>
</span>
System
<span
class=
"w"
>
</span>
Management
<span
class=
"w"
>
</span><span
class=
"nv"
>
Interface
</span><span
class=
"w"
>
</span><span
class=
"o"
>
=============================
</span>
<span
class=
"o"
>
======================================================================================
</span>
DCU
<span
class=
"w"
>
</span>
Temp
<span
class=
"w"
>
</span>
AvgPwr
<span
class=
"w"
>
</span>
Perf
<span
class=
"w"
>
</span>
PwrCap
<span
class=
"w"
>
</span>
VRAM%
<span
class=
"w"
>
</span>
DCU%
<span
class=
"w"
>
</span>
Mode
<span
class=
"w"
>
</span>
<span
class=
"m"
>
0
</span><span
class=
"w"
>
</span><span
class=
"m"
>
42
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
39
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
1
</span><span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
39
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
2
</span><span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
36
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
3
</span><span
class=
"w"
>
</span><span
class=
"m"
>
40
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
38
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
4
</span><span
class=
"w"
>
</span><span
class=
"m"
>
40
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
39
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
5
</span><span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
6
</span><span
class=
"w"
>
</span><span
class=
"m"
>
42
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
37
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span>
Normal
<span
class=
"w"
>
</span>
<span
class=
"m"
>
7
</span><span
class=
"w"
>
</span><span
class=
"m"
>
41
</span>
.0C
<span
class=
"w"
>
</span><span
class=
"m"
>
36
</span>
.0W
<span
class=
"w"
>
</span>
auto
<span
class=
"w"
>
</span><span
class=
"m"
>
280
</span>
.0W
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"m"
>
0
</span>
%
<span
class=
"w"
>
</span><span
class=
"nv"
>
Normal
</span><span
class=
"w"
>
</span>
<span
class=
"o"
>
======================================================================================
</span>
<span
class=
"o"
>
===================================
</span><span
class=
"w"
>
</span>
End
<span
class=
"w"
>
</span>
of
<span
class=
"w"
>
</span>
SMI
<span
class=
"w"
>
</span><span
class=
"nv"
>
Log
</span><span
class=
"w"
>
</span><span
class=
"o"
>
===================================
</span>
</pre></div>
</div>
</li>
</ol>
</section>
</section>
</div>
</div>
<footer><div
class=
"rst-footer-buttons"
role=
"navigation"
aria-label=
"页脚"
>
<a
href=
"centos.html"
class=
"btn btn-neutral float-left"
title=
"2 DCU基础环境完整教程-Centos7.6:"
accesskey=
"p"
rel=
"prev"
><span
class=
"fa fa-arrow-circle-left"
aria-hidden=
"true"
></span>
上一页
</a>
<a
href=
"../Anaconda_Docker.html"
class=
"btn btn-neutral float-right"
title=
"1 基于Anaconda的DCU使用示例:"
accesskey=
"n"
rel=
"next"
>
下一页
<span
class=
"fa fa-arrow-circle-right"
aria-hidden=
"true"
></span></a>
</div>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/objects.inv
0 → 100644
View file @
c0705977
File added
docs/DCU/docs/build/html/search.html
0 → 100644
View file @
c0705977
<!DOCTYPE html>
<html
class=
"writer-html5"
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
/>
<title>
搜索
—
DCU 0.2.0 文档
</title>
<link
rel=
"stylesheet"
href=
"_static/pygments.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/theme.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/copybutton.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"_static/css/readthedocs.css"
type=
"text/css"
/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script
src=
"_static/jquery.js"
></script>
<script
src=
"_static/_sphinx_javascript_frameworks_compat.js"
></script>
<script
data-url_root=
"./"
id=
"documentation_options"
src=
"_static/documentation_options.js"
></script>
<script
src=
"_static/doctools.js"
></script>
<script
src=
"_static/sphinx_highlight.js"
></script>
<script
src=
"_static/clipboard.min.js"
></script>
<script
src=
"_static/copybutton.js"
></script>
<script
src=
"_static/translations.js"
></script>
<script
src=
"https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js"
></script>
<script
type=
"module"
>
import
mermaid
from
"
https://cdn.jsdelivr.net/npm/mermaid@11.12.1/dist/mermaid.esm.min.mjs
"
;
const
initStyles
=
()
=>
{
const
defaultStyle
=
document
.
createElement
(
'
style
'
);
defaultStyle
.
textContent
=
`pre.mermaid {
/* Same as .mermaid-container > pre */
display: block;
width: 100%;
}
pre.mermaid > svg {
/* Same as .mermaid-container > pre > svg */
height: 500px;
width: 100%;
max-width: 100% !important;
}`
;
document
.
head
.
appendChild
(
defaultStyle
);
const
fullscreenStyle
=
document
.
createElement
(
'
style
'
);
fullscreenStyle
.
textContent
=
`.mermaid-container {
display: flex;
flex-direction: row;
width: 100%;
}
.mermaid-container > pre {
display: block;
width: 100%;
}
.mermaid-container > pre > svg {
height: 500px;
width: 100%;
max-width: 100% !important;
}
.mermaid-fullscreen-btn {
width: 28px;
height: 28px;
background: rgba(255, 255, 255, 0.95);
border: 1px solid rgba(0, 0, 0, 0.3);
border-radius: 4px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.2s;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
font-size: 14px;
line-height: 1;
padding: 0;
color: #333;
}
.mermaid-fullscreen-btn:hover {
opacity: 100% !important;
background: rgba(255, 255, 255, 1);
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.3);
transform: scale(1.1);
}
.mermaid-fullscreen-btn.dark-theme {
background: rgba(50, 50, 50, 0.95);
border: 1px solid rgba(255, 255, 255, 0.3);
color: #e0e0e0;
}
.mermaid-fullscreen-btn.dark-theme:hover {
background: rgba(60, 60, 60, 1);
box-shadow: 0 3px 10px rgba(255, 255, 255, 0.2);
}
.mermaid-fullscreen-modal {
display: none;
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 95vw;
height: 100vh;
background: rgba(255, 255, 255, 0.98);
z-index: 9999;
padding: 20px;
overflow: auto;
}
.mermaid-fullscreen-modal.dark-theme {
background: rgba(0, 0, 0, 0.98);
}
.mermaid-fullscreen-modal.active {
display: flex;
align-items: center;
justify-content: center;
}
.mermaid-container-fullscreen {
position: relative;
width: 95vw;
height: 90vh;
max-width: 95vw;
max-height: 90vh;
background: white;
border-radius: 8px;
padding: 20px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
overflow: auto;
display: flex;
align-items: center;
justify-content: center;
}
.mermaid-container-fullscreen.dark-theme {
background: #1a1a1a;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.8);
}
.mermaid-container-fullscreen pre.mermaid {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.mermaid-container-fullscreen .mermaid svg {
height: 100% !important;
width: 100% !important;
cursor: grab;
}
.mermaid-fullscreen-close {
position: fixed !important;
top: 20px !important;
right: 20px !important;
width: 40px;
height: 40px;
background: rgba(255, 255, 255, 0.95);
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 50%;
cursor: pointer;
z-index: 10000;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
transition: all 0.2s;
font-size: 24px;
line-height: 1;
color: #333;
}
.mermaid-fullscreen-close:hover {
background: white;
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);
transform: scale(1.1);
}
.mermaid-fullscreen-close.dark-theme {
background: rgba(50, 50, 50, 0.95);
border: 1px solid rgba(255, 255, 255, 0.2);
color: #e0e0e0;
}
.mermaid-fullscreen-close.dark-theme:hover {
background: rgba(60, 60, 60, 1);
box-shadow: 0 6px 16px rgba(255, 255, 255, 0.2);
}
.mermaid-fullscreen-modal .mermaid-fullscreen-btn {
display: none !important;
}`
;
document
.
head
.
appendChild
(
fullscreenStyle
);
}
// Detect if page has dark background
const
isDarkTheme
=
()
=>
{
// We use a set of heuristics:
// 1. Check for common dark mode classes or attributes
// 2. Check computed background color brightness
if
(
document
.
documentElement
.
classList
.
contains
(
'
dark
'
)
||
document
.
documentElement
.
getAttribute
(
'
data-theme
'
)
===
'
dark
'
||
document
.
body
.
classList
.
contains
(
'
dark
'
)
||
document
.
body
.
getAttribute
(
'
data-theme
'
)
===
'
dark
'
)
{
// console.log("Dark theme detected via class/attribute");
return
true
;
}
if
(
document
.
documentElement
.
classList
.
contains
(
'
light
'
)
||
document
.
documentElement
.
getAttribute
(
'
data-theme
'
)
===
'
light
'
||
document
.
body
.
classList
.
contains
(
'
light
'
)
||
document
.
body
.
getAttribute
(
'
data-theme
'
)
===
'
light
'
)
{
// console.log("Light theme detected via class/attribute");
return
false
;
}
if
(
window
.
matchMedia
&&
window
.
matchMedia
(
'
(prefers-color-scheme: dark)
'
).
matches
)
{
// console.log("Dark theme detected via prefers-color-scheme");
return
true
;
}
const
bgColor
=
window
.
getComputedStyle
(
document
.
body
).
backgroundColor
;
const
match
=
bgColor
.
match
(
/rgb
\((\d
+
)
,
\s
*
(\d
+
)
,
\s
*
(\d
+
)
/
);
if
(
match
)
{
const
r
=
parseInt
(
match
[
1
]);
const
g
=
parseInt
(
match
[
2
]);
const
b
=
parseInt
(
match
[
3
]);
const
brightness
=
(
r
*
299
+
g
*
587
+
b
*
114
)
/
1000
;
// console.log("Background color brightness:", brightness);
return
brightness
<
128
;
}
// console.log("No dark or light theme detected, defaulting to light theme");
return
false
;
};
let
darkTheme
=
isDarkTheme
();
let
modal
=
null
;
let
modalContent
=
null
;
let
previousScrollOffset
=
[
window
.
scrollX
,
window
.
scrollY
];
const
runMermaid
=
async
(
rerun
)
=>
{
console
.
log
(
"
Running mermaid diagrams, rerun =
"
,
rerun
);
// clear all existing mermaid charts
let
all_mermaids
=
document
.
querySelectorAll
(
"
.mermaid
"
);
if
(
rerun
)
{
all_mermaids
.
forEach
((
el
)
=>
{
if
(
!
el
.
hasAttribute
(
"
data-original-code
"
))
{
// store original code
// console.log(`Storing original code for first run: `, el.innerHTML);
el
.
setAttribute
(
'
data-original-code
'
,
el
.
innerHTML
);
}
if
(
el
.
getAttribute
(
"
data-processed
"
)
===
"
true
"
)
{
// remove and restore original
el
.
removeAttribute
(
"
data-processed
"
);
// console.log(`Restoring original code for re-run: `, el.getAttribute('data-original-code'));
el
.
innerHTML
=
el
.
getAttribute
(
'
data-original-code
'
);
}
else
{
// store original code
// console.log(`Storing original code for re-run: `, el.innerHTML);
el
.
setAttribute
(
'
data-original-code
'
,
el
.
innerHTML
);
}
});
await
mermaid
.
run
();
}
all_mermaids
=
document
.
querySelectorAll
(
"
.mermaid
"
);
const
mermaids_processed
=
document
.
querySelectorAll
(
"
.mermaid[data-processed='true']
"
);
if
(
"
False
"
===
"
True
"
)
{
const
mermaids_to_add_zoom
=
-
1
===
-
1
?
all_mermaids
.
length
:
-
1
;
if
(
mermaids_to_add_zoom
>
0
)
{
var
svgs
=
d3
.
selectAll
(
""
);
if
(
all_mermaids
.
length
!==
mermaids_processed
.
length
)
{
setTimeout
(()
=>
runMermaid
(
false
),
200
);
return
;
}
else
if
(
svgs
.
size
()
!==
mermaids_to_add_zoom
)
{
setTimeout
(()
=>
runMermaid
(
false
),
200
);
return
;
}
else
{
svgs
.
each
(
function
()
{
var
svg
=
d3
.
select
(
this
);
svg
.
html
(
"
<g class='wrapper'>
"
+
svg
.
html
()
+
"
</g>
"
);
var
inner
=
svg
.
select
(
"
g
"
);
var
zoom
=
d3
.
zoom
().
on
(
"
zoom
"
,
function
(
event
)
{
inner
.
attr
(
"
transform
"
,
event
.
transform
);
});
svg
.
call
(
zoom
);
});
}
}
}
else
if
(
all_mermaids
.
length
!==
mermaids_processed
.
length
)
{
// Wait for mermaid to process all diagrams
setTimeout
(()
=>
runMermaid
(
false
),
200
);
return
;
}
// Stop here if not adding fullscreen capability
if
(
"
True
"
!==
"
True
"
)
return
;
if
(
modal
!==
null
)
{
// Destroy existing modal
modal
.
remove
();
modal
=
null
;
modalContent
=
null
;
}
modal
=
document
.
createElement
(
'
div
'
);
modal
.
className
=
'
mermaid-fullscreen-modal
'
+
(
darkTheme
?
'
dark-theme
'
:
''
);
modal
.
setAttribute
(
'
role
'
,
'
dialog
'
);
modal
.
setAttribute
(
'
aria-modal
'
,
'
true
'
);
modal
.
setAttribute
(
'
aria-label
'
,
'
Fullscreen diagram viewer
'
);
modal
.
innerHTML
=
`
<button class="mermaid-fullscreen-close
${
darkTheme
?
'
dark-theme
'
:
''
}
" aria-label="Close fullscreen">✕</button>
<div class="mermaid-container-fullscreen
${
darkTheme
?
'
dark-theme
'
:
''
}
"></div>
`
;
document
.
body
.
appendChild
(
modal
);
modalContent
=
modal
.
querySelector
(
'
.mermaid-container-fullscreen
'
);
const
closeBtn
=
modal
.
querySelector
(
'
.mermaid-fullscreen-close
'
);
const
closeModal
=
()
=>
{
modal
.
classList
.
remove
(
'
active
'
);
modalContent
.
innerHTML
=
''
;
document
.
body
.
style
.
overflow
=
''
window
.
scrollTo
({
left
:
previousScrollOffset
[
0
],
top
:
previousScrollOffset
[
1
],
behavior
:
'
instant
'
});
};
closeBtn
.
addEventListener
(
'
click
'
,
closeModal
);
modal
.
addEventListener
(
'
click
'
,
(
e
)
=>
{
if
(
e
.
target
===
modal
)
closeModal
();
});
document
.
addEventListener
(
'
keydown
'
,
(
e
)
=>
{
if
(
e
.
key
===
'
Escape
'
&&
modal
.
classList
.
contains
(
'
active
'
))
{
closeModal
();
}
});
document
.
querySelectorAll
(
'
.mermaid
'
).
forEach
((
mermaidDiv
)
=>
{
if
(
mermaidDiv
.
parentNode
.
classList
.
contains
(
'
mermaid-container
'
)
||
mermaidDiv
.
closest
(
'
.mermaid-fullscreen-modal
'
))
{
// Already processed, adjust button class if needed
const
existingBtn
=
mermaidDiv
.
parentNode
.
querySelector
(
'
.mermaid-fullscreen-btn
'
);
if
(
existingBtn
)
{
existingBtn
.
className
=
'
mermaid-fullscreen-btn
'
+
(
darkTheme
?
'
dark-theme
'
:
''
);
}
return
;
}
const
container
=
document
.
createElement
(
'
div
'
);
container
.
className
=
'
mermaid-container
'
;
mermaidDiv
.
parentNode
.
insertBefore
(
container
,
mermaidDiv
);
container
.
appendChild
(
mermaidDiv
);
const
fullscreenBtn
=
document
.
createElement
(
'
button
'
);
fullscreenBtn
.
className
=
'
mermaid-fullscreen-btn
'
+
(
darkTheme
?
'
dark-theme
'
:
''
);
fullscreenBtn
.
setAttribute
(
'
aria-label
'
,
'
View diagram in fullscreen
'
);
fullscreenBtn
.
textContent
=
'
⛶
'
;
fullscreenBtn
.
style
.
opacity
=
'
50%
'
;
// Calculate dynamic position based on diagram's margin and padding
const
diagramStyle
=
window
.
getComputedStyle
(
mermaidDiv
);
const
marginTop
=
parseFloat
(
diagramStyle
.
marginTop
)
||
0
;
const
marginRight
=
parseFloat
(
diagramStyle
.
marginRight
)
||
0
;
const
paddingTop
=
parseFloat
(
diagramStyle
.
paddingTop
)
||
0
;
const
paddingRight
=
parseFloat
(
diagramStyle
.
paddingRight
)
||
0
;
fullscreenBtn
.
style
.
top
=
`
${
marginTop
+
paddingTop
+
4
}
px`
;
fullscreenBtn
.
style
.
right
=
`
${
marginRight
+
paddingRight
+
4
}
px`
;
fullscreenBtn
.
addEventListener
(
'
click
'
,
()
=>
{
previousScrollOffset
=
[
window
.
scroll
,
window
.
scrollY
];
const
clone
=
mermaidDiv
.
cloneNode
(
true
);
modalContent
.
innerHTML
=
''
;
modalContent
.
appendChild
(
clone
);
const
svg
=
clone
.
querySelector
(
'
svg
'
);
if
(
svg
)
{
svg
.
removeAttribute
(
'
width
'
);
svg
.
removeAttribute
(
'
height
'
);
svg
.
style
.
width
=
'
100%
'
;
svg
.
style
.
height
=
'
auto
'
;
svg
.
style
.
maxWidth
=
'
100%
'
;
svg
.
style
.
sdisplay
=
'
block
'
;
if
(
"
False
"
===
"
True
"
)
{
setTimeout
(()
=>
{
const
g
=
svg
.
querySelector
(
'
g
'
);
if
(
g
)
{
var
svgD3
=
d3
.
select
(
svg
);
svgD3
.
html
(
"
<g class='wrapper'>
"
+
svgD3
.
html
()
+
"
</g>
"
);
var
inner
=
svgD3
.
select
(
"
g
"
);
var
zoom
=
d3
.
zoom
().
on
(
"
zoom
"
,
function
(
event
)
{
inner
.
attr
(
"
transform
"
,
event
.
transform
);
});
svgD3
.
call
(
zoom
);
}
},
100
);
}
}
modal
.
classList
.
add
(
'
active
'
);
document
.
body
.
style
.
overflow
=
'
hidden
'
;
});
container
.
appendChild
(
fullscreenBtn
);
});
};
const
load
=
async
()
=>
{
initStyles
();
await
runMermaid
(
true
);
const
reRunIfThemeChanges
=
async
()
=>
{
const
newDarkTheme
=
isDarkTheme
();
if
(
newDarkTheme
!==
darkTheme
)
{
darkTheme
=
newDarkTheme
;
console
.
log
(
"
Theme change detected, re-running mermaid with
"
,
darkTheme
?
"
dark
"
:
"
default
"
,
"
theme
"
);
await
mermaid
.
initialize
(
{...
JSON
.
parse
(
`{"startOnLoad": false}`
),
...{
darkMode
:
darkTheme
,
theme
:
darkTheme
?
'
dark
'
:
'
default
'
},
}
);
await
runMermaid
(
true
);
}
};
// Update theme classes when theme changes
const
themeObserver
=
new
MutationObserver
(
reRunIfThemeChanges
);
themeObserver
.
observe
(
document
.
documentElement
,
{
attributes
:
true
,
attributeFilter
:
[
'
class
'
,
'
style
'
,
'
data-theme
'
]
});
themeObserver
.
observe
(
document
.
body
,
{
attributes
:
true
,
attributeFilter
:
[
'
class
'
,
'
style
'
,
'
data-theme
'
]
});
};
console
.
log
(
"
Initializing mermaid with
"
,
darkTheme
?
"
dark
"
:
"
default
"
,
"
theme
"
);
mermaid
.
initialize
(
{...
JSON
.
parse
(
`{"startOnLoad": false}`
),
...{
darkMode
:
darkTheme
,
theme
:
darkTheme
?
'
dark
'
:
'
default
'
},
}
);
window
.
addEventListener
(
"
load
"
,
load
);
window
.
runMermaid
=
runMermaid
;
</script>
<script
src=
"_static/js/theme.js"
></script>
<script
src=
"_static/searchtools.js"
></script>
<script
src=
"_static/language_data.js"
></script>
<link
rel=
"index"
title=
"索引"
href=
"genindex.html"
/>
<link
rel=
"search"
title=
"搜索"
href=
"#"
/>
</head>
<body
class=
"wy-body-for-nav"
>
<div
class=
"wy-grid-for-nav"
>
<nav
data-toggle=
"wy-nav-shift"
class=
"wy-nav-side"
>
<div
class=
"wy-side-scroll"
>
<div
class=
"wy-side-nav-search"
>
<a
href=
"index.html"
class=
"icon icon-home"
>
DCU
</a>
<div
class=
"version"
>
0.2.0
</div>
<div
role=
"search"
>
<form
id=
"rtd-search-form"
class=
"wy-form"
action=
"#"
method=
"get"
>
<input
type=
"text"
name=
"q"
placeholder=
"搜索文档"
aria-label=
"搜索文档"
/>
<input
type=
"hidden"
name=
"check_keywords"
value=
"yes"
/>
<input
type=
"hidden"
name=
"area"
value=
"default"
/>
</form>
</div>
</div><div
class=
"wy-menu wy-menu-vertical"
data-spy=
"affix"
role=
"navigation"
aria-label=
"导航菜单"
>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
基础介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html"
>
操作系统版本兼容列表
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#dcu"
>
支持的DCU型号
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id2"
>
DCU软件介绍:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"get_started.html#id3"
><strong>
兼容性(必读)
</strong></a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
资源下载地址
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"download.html"
>
下载中心:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
构建DCU基础环境
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/base_install_intro.html"
>
1. 开发者社区 DCU 环境安装手册
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/centos.html"
><strong>
2 DCU基础环境完整教程-Centos7.6
</strong>
:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"install_dcu_on_os/ubuntu.html"
><strong>
3 DCU基础环境完整教程-ubuntu
</strong>
:
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
快速使用 DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html"
>
1 基于Anaconda的DCU使用示例:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Anaconda_Docker.html#dockerdcu"
>
2 基于Docker使用DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
hy-smi 使用介绍
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"Hy-SMI.html"
>
hy-smi 使用介绍
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
从NV的GPU迁移到DCU
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"NV_GPU_TO_DCU.html"
>
1 从NV的GPU迁移到DCU
</a></li>
</ul>
<p
class=
"caption"
role=
"heading"
><span
class=
"caption-text"
>
CUDA 与 HIP 移植常见问题
</span></p>
<ul>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html"
>
问题一、纹理内存报错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#launch-bounds-256"
>
问题二、 launch bounds (256) 报错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#asm"
>
问题三、asm 代码,内联汇编代码编译报错;
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#cuda-math-h"
>
问题四、 cuda应用不转码适配找不到 math.h 头文件
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#pycuda-cu"
>
问题五、使用开源的pycuda 无法编译 cu文件
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#cu"
>
问题六、如何针对一个文件夹的cu代码进行转码
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#hip"
>
问题七、hip转码后部分宏定义不规范不会被转换,可能导致出现问题:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#math-constants-h"
>
问题八、 math_constants.h 找不到:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#hip-min"
>
问题九、转码后部分hip核函数不识别 min:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#dtk-25-04"
>
问题十、使用 DTK-25.04 之后的软件栈编译报头文件错:
</a></li>
<li
class=
"toctree-l1"
><a
class=
"reference internal"
href=
"faq_cuda_hip.html#g-hipruntime-hipmallochipmemcpy"
>
问题十一、g++ 编译 hipRuntime(hipMalloc、hipMemcpy)等接口代码,编译报错:
</a></li>
</ul>
</div>
</div>
</nav>
<section
data-toggle=
"wy-nav-shift"
class=
"wy-nav-content-wrap"
><nav
class=
"wy-nav-top"
aria-label=
"移动版导航菜单"
>
<i
data-toggle=
"wy-nav-top"
class=
"fa fa-bars"
></i>
<a
href=
"index.html"
>
DCU
</a>
</nav>
<div
class=
"wy-nav-content"
>
<div
class=
"rst-content"
>
<div
role=
"navigation"
aria-label=
"页面导航"
>
<ul
class=
"wy-breadcrumbs"
>
<li><a
href=
"index.html"
class=
"icon icon-home"
aria-label=
"Home"
></a></li>
<li
class=
"breadcrumb-item active"
>
搜索
</li>
<li
class=
"wy-breadcrumbs-aside"
>
</li>
</ul>
<hr/>
</div>
<div
role=
"main"
class=
"document"
itemscope=
"itemscope"
itemtype=
"http://schema.org/Article"
>
<div
itemprop=
"articleBody"
>
<noscript>
<div
id=
"fallback"
class=
"admonition warning"
>
<p
class=
"last"
>
请启用 JavaScript 以便使用搜索功能
</p>
</div>
</noscript>
<div
id=
"search-results"
>
</div>
</div>
</div>
<footer>
<hr/>
<div
role=
"contentinfo"
>
<p>
©
版权所有 2024-now, DCU User.
</p>
</div>
利用
<a
href=
"https://www.sphinx-doc.org/"
>
Sphinx
</a>
构建,使用的
<a
href=
"https://github.com/readthedocs/sphinx_rtd_theme"
>
主题
</a>
由
<a
href=
"https://readthedocs.org"
>
Read the Docs
</a>
开发.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery
(
function
()
{
SphinxRtdTheme
.
Navigation
.
enable
(
true
);
});
</script>
<script>
jQuery
(
function
()
{
Search
.
loadIndex
(
"
searchindex.js
"
);
});
</script>
<script
id=
"searchindexloader"
></script>
</body>
</html>
\ No newline at end of file
docs/DCU/docs/build/html/searchindex.js
0 → 100644
View file @
c0705977
Search
.
setIndex
({
"
docnames
"
:
[
"
Anaconda_Docker
"
,
"
Hy-SMI
"
,
"
NV_GPU_TO_DCU
"
,
"
download
"
,
"
faq_cuda_hip
"
,
"
get_started
"
,
"
index
"
,
"
install_dcu_on_os/base_install_intro
"
,
"
install_dcu_on_os/centos
"
,
"
install_dcu_on_os/ubuntu
"
],
"
filenames
"
:
[
"
Anaconda_Docker.md
"
,
"
Hy-SMI.md
"
,
"
NV_GPU_TO_DCU.md
"
,
"
download.md
"
,
"
faq_cuda_hip.md
"
,
"
get_started.md
"
,
"
index.rst
"
,
"
install_dcu_on_os/base_install_intro.md
"
,
"
install_dcu_on_os/centos.md
"
,
"
install_dcu_on_os/ubuntu.md
"
],
"
titles
"
:
[
"
1
\
u57fa
\
u4e8eAnaconda
\
u7684DCU
\
u4f7f
\
u7528
\
u793a
\
u4f8b:
"
,
"
hy-smi
\
u4f7f
\
u7528
\
u4ecb
\
u7ecd
"
,
"
1
\
u4eceNV
\
u7684GPU
\
u8fc1
\
u79fb
\
u5230DCU
"
,
"
\
u4e0b
\
u8f7d
\
u4e2d
\
u5fc3:
"
,
"
\
u95ee
\
u9898
\
u4e00
\
u3001
\
u7eb9
\
u7406
\
u5185
\
u5b58
\
u62a5
\
u9519
\
uff1a
"
,
"
\
u64cd
\
u4f5c
\
u7cfb
\
u7edf
\
u7248
\
u672c
\
u517c
\
u5bb9
\
u5217
\
u8868
"
,
"
\
u6b22
\
u8fce
\
u6765
\
u5230 DCU
\
u7684
\
u73af
\
u5883
\
u5b89
\
u88c5
\
u6559
\
u7a0b
\
uff01
"
,
"
1.
\
u5f00
\
u53d1
\
u8005
\
u793e
\
u533a DCU
\
u73af
\
u5883
\
u5b89
\
u88c5
\
u624b
\
u518c
"
,
"
<strong>2 DCU
\
u57fa
\
u7840
\
u73af
\
u5883
\
u5b8c
\
u6574
\
u6559
\
u7a0b-Centos7.6</strong>:
"
,
"
<strong>3 DCU
\
u57fa
\
u7840
\
u73af
\
u5883
\
u5b8c
\
u6574
\
u6559
\
u7a0b-ubuntu</strong>:
"
],
"
terms
"
:
{
"
conda
"
:
0
,
"
creat
"
:
0
,
"
dcu_test
"
:
0
,
"
python
"
:
[
0
,
5
,
8
],
"
10
"
:
[
0
,
4
,
5
,
8
],
"
activ
"
:
0
,
"
pip3
"
:
[
0
,
2
],
"
config
"
:
[
0
,
2
,
8
,
9
],
"
set
"
:
[
0
,
2
],
"
global
"
:
[
0
,
2
],
"
index
"
:
[
0
,
2
],
"
url
"
:
[
0
,
2
],
"
https
"
:
[
0
,
2
,
4
,
8
,
9
],
"
pypi
"
:
[
0
,
2
],
"
tuna
"
:
[
0
,
2
],
"
tsinghua
"
:
[
0
,
2
],
"
edu
"
:
[
0
,
2
,
8
],
"
cn
"
:
[
0
,
2
,
4
,
8
],
"
simpl
"
:
[
0
,
2
,
9
],
"
das
"
:
[
0
,
3
,
6
],
"
whl
"
:
[
0
,
2
,
5
],
"
instal
"
:
[
0
,
2
,
8
,
9
],
"
import
"
:
0
,
"
print
"
:
0
,
"
cuda
"
:
[
0
,
2
],
"
is_avail
"
:
0
,
"
device_count
"
:
0
,
"
git
"
:
[
0
,
8
,
9
],
"
clone
"
:
0
,
"
http
"
:
[
0
,
8
,
9
],
"
develop
"
:
[
0
,
2
,
4
],
"
hpccube
"
:
[
0
,
2
,
8
,
9
],
"
com
"
:
[
0
,
2
,
8
,
9
],
"
code
"
:
0
,
"
wangkx1
"
:
0
,
"
torch_inference_resnet50
"
:
0
,
"
cd
"
:
0
,
"
torch_verifi
"
:
0
,
"
py
"
:
[
0
,
4
],
"
sourcefind
"
:
[
0
,
2
],
"
servic
"
:
0
,
"
list
"
:
[
0
,
2
,
8
,
9
],
"
dtk
"
:
[
0
,
2
,
3
,
6
,
7
],
"
vllm
"
:
[
0
,
2
],
"
lmdeploy
"
:
0
,
"
fastllm
"
:
0
,
"
migraphx
"
:
0
,
"
aitempl
"
:
0
,
"
cat
"
:
0
,
"
etc
"
:
[
0
,
8
,
9
],
"
os
"
:
[
0
,
3
,
6
,
8
,
9
],
"
releas
"
:
[
0
,
8
],
"
pull
"
:
0
,
"
imag
"
:
[
0
,
9
],
"
5000
"
:
0
,
"
admin
"
:
0
,
"
base
"
:
[
0
,
9
],
"
ubuntu20
"
:
[
0
,
9
],
"
04
"
:
[
0
,
5
,
6
,
8
,
9
],
"
dtk24
"
:
[
0
,
8
],
"
py3
"
:
0
,
"
run
"
:
[
0
,
3
,
6
,
8
,
9
],
"
it
"
:
0
,
"
network
"
:
0
,
"
host
"
:
0
,
"
ipc
"
:
0
,
"
shm
"
:
0
,
"
size
"
:
0
,
"
16g
"
:
0
,
"
devic
"
:
0
,
"
dev
"
:
[
0
,
9
],
"
kfd
"
:
0
,
"
mkfd
"
:
0
,
"
dri
"
:
0
,
"
opt
"
:
[
0
,
8
,
9
],
"
hyhal
"
:
0
,
"
your_path
"
:
0
,
"
workspac
"
:
0
,
"
group
"
:
[
0
,
9
],
"
add
"
:
[
0
,
4
],
"
video
"
:
[
0
,
8
,
9
],
"
cap
"
:
0
,
"
sys_ptrac
"
:
0
,
"
secur
"
:
[
0
,
9
],
"
seccomp
"
:
0
,
"
unconfin
"
:
0
,
"
name
"
:
[
0
,
4
,
8
,
9
],
"
bin
"
:
[
0
,
8
],
"
bash
"
:
0
,
"
libhsa
"
:
0
,
"
runtim
"
:
0
,
"
none
"
:
0
,
"
shareabl
"
:
0
,
"
24g
"
:
0
,
"
dtk23
"
:
0
,
"
net_admin
"
:
0
,
"
label
"
:
0
,
"
disabl
"
:
[
0
,
8
,
9
],
"
custom
"
:
0
,
"
alphafold2
"
:
0
,
"
py38
"
:
0
,
"
shell
"
:
[
0
,
9
],
"
dcu
"
:
[
1
,
3
,
4
],
"
temp
"
:
[
1
,
8
,
9
],
"
avgpwr
"
:
[
1
,
8
,
9
],
"
perf
"
:
[
1
,
8
,
9
],
"
pwrcap
"
:
[
1
,
8
,
9
],
"
varm
"
:
1
,
"
mode
"
:
[
1
,
8
,
9
],
"
normal
"
:
[
1
,
8
,
9
],
"
showproductnam
"
:
1
,
"
showpid
"
:
1
,
"
showpiddcus
"
:
1
,
"
showdriververs
"
:
1
,
"
vbio
"
:
[
1
,
8
,
9
],
"
showmeminfo
"
:
1
,
"
vram
"
:
[
1
,
8
,
9
],
"
tool
"
:
2
,
"
pip
"
:
[
2
,
8
,
9
],
"
modelzoo
"
:
2
,
"
readm
"
:
2
,
"
model
"
:
2
,
"
zoo
"
:
2
,
"
ai
"
:
[
2
,
6
,
8
,
9
],
"
bert
"
:
2
,
"
yolo
"
:
2
,
"
resnet
"
:
2
,
"
qwen
"
:
2
,
"
llama
"
:
2
,
"
lmdpeloy
"
:
2
,
"
exampl
"
:
2
,
"
yolov10
"
:
2
,
"
rep_vit
"
:
2
,
"
alphafold2_jax
"
:
2
,
"
llama3
"
:
2
,
"
stablediffusion_v2
"
:
2
,
"
qwen1
"
:
2
,
"
latest
"
:
[
3
,
6
,
8
,
9
],
"
rock
"
:
[
3
,
6
,
8
,
9
],
"
xxx
"
:
[
3
,
6
,
8
,
9
],
"
aio
"
:
[
3
,
6
,
8
,
9
],
"
version
"
:
[
3
,
5
,
6
,
8
,
9
],
"
x86_64
"
:
[
3
,
5
,
6
,
8
,
9
],
"
tar
"
:
[
3
,
6
,
8
,
9
],
"
gz
"
:
[
3
,
6
,
8
,
9
],
"
kubernet
"
:
[
3
,
6
],
"
hyqual
"
:
[
3
,
6
],
"
iso
"
:
5
,
"
cento
"
:
[
5
,
8
],
"
957
"
:
[
5
,
8
],
"
el7
"
:
5
,
"
18
"
:
[
5
,
8
,
9
],
"
348
"
:
5
,
"
el8
"
:
5
,
"
rocki
"
:
5
,
"
ubuntu
"
:
[
5
,
6
],
"
20
"
:
5
,
"
42
"
:
[
5
,
8
,
9
],
"
generic
"
:
[
5
,
9
],
"
22
"
:
[
5
,
9
],
"
15
"
:
[
5
,
9
],
"
25
"
:
[
5
,
6
,
9
],
"
nfs
"
:
5
,
"
19
"
:
5
,
"
113
"
:
5
,
"
14
"
:
[
4
,
5
],
"
nfs4
"
:
5
,
"
desktop
"
:
5
,
"
49
"
:
[
5
,
8
,
9
],
"
uos
"
:
5
,
"
1021e
"
:
5
,
"
90
"
:
5
,
"
2109
"
:
5
,
"
0108
"
:
5
,
"
up2
"
:
5
,
"
uel20
"
:
5
,
"
kylin
"
:
5
,
"
v10
"
:
5
,
"
sp2
"
:
5
,
"
24
"
:
[
5
,
8
,
9
],
"
v2101
"
:
5
,
"
ky10
"
:
5
,
"
anoli
"
:
5
,
"
91
"
:
5
,
"
23
"
:
5
,
"
an8
"
:
5
,
"
26
"
:
5
,
"
openeul
"
:
5
,
"
03
"
:
5
,
"
60
"
:
5
,
"
50
"
:
[
5
,
8
,
9
],
"
oe2203
"
:
5
,
"
bclinux
"
:
5
,
"
240
"
:
5
,
"
11
"
:
[
4
,
5
],
"
el8_2
"
:
5
,
"
z100
"
:
[
5
,
8
,
9
],
"
z100l
"
:
[
5
,
8
,
9
],
"
k100
"
:
[
5
,
8
,
9
],
"
k100_ai
"
:
[
5
,
8
,
9
],
"
softwar
"
:
5
,
"
stack
"
:
5
,
"
gt
"
:
5
,
"
21
"
:
5
,
"
das1
"
:
5
,
"
ubuntu18
"
:
5
,
"
centos7
"
:
[
5
,
6
,
9
],
"
glibc
"
:
5
,
"
31
"
:
[
4
,
5
],
"
glib
"
:
5
,
"
ldd
"
:
5
,
"
docker
"
:
[
5
,
6
],
"
anaconda
"
:
6
,
"
pytorch
"
:
6
,
"
resnet50
"
:
6
,
"
resetnet50
"
:
6
,
"
pdf
"
:
7
,
"
sudo
"
:
[
8
,
9
],
"
usermod
"
:
[
8
,
9
],
"
ag
"
:
[
8
,
9
],
"
user
"
:
[
8
,
9
],
"
userid
"
:
[
8
,
9
],
"
nomodeset
"
:
8
,
"
lsmod
"
:
[
8
,
9
],
"
grep
"
:
[
8
,
9
],
"
amdgpu
"
:
8
,
"
selinux
"
:
8
,
"
firewalld
"
:
8
,
"
systemctl
"
:
8
,
"
stop
"
:
8
,
"
conf
"
:
[
8
,
9
],
"
main
"
:
[
8
,
9
],
"
exclud
"
:
8
,
"
kernel
"
:
[
4
,
8
,
9
],
"
sed
"
:
[
8
,
9
],
"
mirrorlist
"
:
8
,
"
baseurl
"
:
8
,
"
mirror
"
:
[
8
,
9
],
"
org
"
:
[
4
,
8
],
"
releasev
"
:
8
,
"
ustc
"
:
8
,
"
vault
"
:
8
,
"
minorv
"
:
8
,
"
bak
"
:
[
8
,
9
],
"
repo
"
:
[
8
,
9
],
"
cr
"
:
8
,
"
enabl
"
:
8
,
"
python3
"
:
[
8
,
9
],
"
sclo
"
:
8
,
"
devtoolset
"
:
8
,
"
vi
"
:
[
8
,
9
],
"
esc
"
:
8
,
"
wq
"
:
8
,
"
basearch
"
:
8
,
"
gpgcheck
"
:
8
,
"
gpgkey
"
:
8
,
"
file
"
:
[
4
,
8
,
9
],
"
pki
"
:
8
,
"
rpm
"
:
[
8
,
9
],
"
gpg
"
:
8
,
"
key
"
:
8
,
"
sig
"
:
8
,
"
rh
"
:
8
,
"
epel
"
:
8
,
"
cmake3
"
:
8
,
"
extra
"
:
[
8
,
9
],
"
packag
"
:
[
8
,
9
],
"
for
"
:
[
4
,
8
],
"
enterpris
"
:
8
,
"
linux
"
:
[
8
,
9
],
"
aliyun
"
:
[
8
,
9
],
"
failovermethod
"
:
8
,
"
prioriti
"
:
8
,
"
debuginfo
"
:
8
,
"
debug
"
:
8
,
"
sourc
"
:
[
8
,
9
],
"
srpms
"
:
8
,
"
cach
"
:
[
8
,
9
],
"
clean
"
:
8
,
"
all
"
:
8
,
"
makecach
"
:
8
,
"
gcc
"
:
[
8
,
9
],
"
build
"
:
8
,
"
autoconf
"
:
[
8
,
9
],
"
devel
"
:
8
,
"
unam
"
:
[
8
,
9
],
"
header
"
:
[
8
,
9
],
"
ln
"
:
[
8
,
9
],
"
usr
"
:
[
4
,
8
],
"
cmake
"
:
[
4
,
8
,
9
],
"
scl
"
:
8
,
"
gfortran
"
:
[
8
,
9
],
"
elfutil
"
:
[
8
,
9
],
"
make
"
:
[
4
,
8
,
9
],
"
libbabeltrac
"
:
[
8
,
9
],
"
pciutil
"
:
[
8
,
9
],
"
libpciaccess
"
:
[
8
,
9
],
"
numactl
"
:
8
,
"
libelf
"
:
[
8
,
9
],
"
mesa
"
:
[
8
,
9
],
"
libgl
"
:
8
,
"
lib
"
:
8
,
"
perl
"
:
[
4
,
8
,
9
],
"
which
"
:
[
8
,
9
],
"
basedir
"
:
[
8
,
9
],
"
copi
"
:
[
8
,
9
],
"
recurs
"
:
[
8
,
9
],
"
java
"
:
8
,
"
openjdk
"
:
8
,
"
wheel
"
:
[
8
,
9
],
"
sqlite
"
:
8
,
"
libibverb
"
:
8
,
"
redhat
"
:
8
,
"
lsb
"
:
8
,
"
core
"
:
8
,
"
gettext
"
:
[
8
,
9
],
"
protobuf
"
:
8
,
"
digest
"
:
[
8
,
9
],
"
md5
"
:
[
8
,
9
],
"
data
"
:
[
4
,
8
,
9
],
"
dumper
"
:
[
8
,
9
],
"
vim
"
:
[
8
,
9
],
"
common
"
:
[
8
,
9
],
"
curl
"
:
[
8
,
9
],
"
libcurl
"
:
8
,
"
doxygen
"
:
[
8
,
9
],
"
graphviz
"
:
[
8
,
9
],
"
texliv
"
:
[
8
,
9
],
"
xtab
"
:
8
,
"
multirow
"
:
8
,
"
sectsti
"
:
8
,
"
tocloft
"
:
8
,
"
adjustbox
"
:
8
,
"
deltarpm
"
:
8
,
"
tcl
"
:
[
8
,
9
],
"
automak
"
:
[
8
,
9
],
"
rpm_dtk2404_centos7
"
:
8
,
"
6_3
"
:
8
,
"
pan
"
:
[
8
,
9
],
"
baidu
"
:
[
8
,
9
],
"
1jnwfddl4lhwvqb3btd34iw
"
:
[
8
,
9
],
"
pwd
"
:
[
8
,
9
],
"
wj6q
"
:
[
8
,
9
],
"
localyum
"
:
8
,
"
local
"
:
8
,
"
disablerepo
"
:
8
,
"
enablerepo
"
:
8
,
"
1d94
"
:
[
8
,
9
],
"
55b7
"
:
[
8
,
9
],
"
62b7
"
:
[
8
,
9
],
"
6210
"
:
[
8
,
9
],
"
sugontest79
"
:
[
8
,
9
],
"
mnt
"
:
[
8
,
9
],
"
lspci
"
:
[
8
,
9
],
"
nn
"
:
[
8
,
9
],
"
07
"
:
[
8
,
9
],
"
00
"
:
[
8
,
9
],
"
display
"
:
[
8
,
9
],
"
control
"
:
[
8
,
9
],
"
0380
"
:
[
8
,
9
],
"
chengdu
"
:
[
8
,
9
],
"
haiguang
"
:
[
8
,
9
],
"
ic
"
:
[
8
,
9
],
"
design
"
:
[
8
,
9
],
"
co
"
:
[
8
,
9
],
"
ltd
"
:
[
8
,
9
],
"
zifang
"
:
[
8
,
9
],
"
rev
"
:
[
8
,
9
],
"
01
"
:
[
8
,
9
],
"
0a
"
:
[
8
,
9
],
"
processor
"
:
[
8
,
9
],
"
0b40
"
:
[
8
,
9
],
"
kongm
"
:
[
8
,
9
],
"
profil
"
:
8
,
"
sh
"
:
[
4
,
8
,
9
],
"
cancon
"
:
[
8
,
9
],
"
65024
"
:
[
8
,
9
],
"
chmod
"
:
[
8
,
9
],
"
755
"
:
[
8
,
9
],
"
13
"
:
[
8
,
9
],
"
v1
"
:
[
8
,
9
],
"
1a
"
:
[
8
,
9
],
"
reboot
"
:
[
8
,
9
],
"
b04r3n02
"
:
[
8
,
9
],
"
hydcu
"
:
[
8
,
9
],
"
1435342
"
:
[
8
,
9
],
"
hydcu_sch
"
:
[
8
,
9
],
"
34432
"
:
[
8
,
9
],
"
hyttm
"
:
[
8
,
9
],
"
61919
"
:
[
8
,
9
],
"
hykcl
"
:
[
8
,
9
],
"
46567
"
:
[
8
,
9
],
"
hy_extra
"
:
[
8
,
9
],
"
32140
"
:
[
8
,
9
],
"
amd_iommu_v2
"
:
[
8
,
9
],
"
18821
"
:
[
8
,
9
],
"
drm_kms_helper
"
:
[
8
,
9
],
"
179394
"
:
[
8
,
9
],
"
ast
"
:
[
8
,
9
],
"
drm
"
:
[
8
,
9
],
"
429744
"
:
[
8
,
9
],
"
ttm
"
:
[
8
,
9
],
"
qa
"
:
[
8
,
9
],
"
rmmod
"
:
[
8
,
9
],
"
xvf
"
:
[
8
,
9
],
"
env
"
:
[
8
,
9
],
"
echo
"
:
[
8
,
9
],
"
bashrc
"
:
[
8
,
9
],
"
hy
"
:
[
8
,
9
],
"
smi
"
:
[
8
,
9
],
"
rocm
"
:
[
8
,
9
],
"
h01r4n04
"
:
[
8
,
9
],
"
system
"
:
[
8
,
9
],
"
manag
"
:
[
8
,
9
],
"
interfac
"
:
[
8
,
9
],
"
fan
"
:
[
8
,
9
],
"
0c
"
:
[
8
,
9
],
"
55
"
:
[
8
,
9
],
"
0w
"
:
[
8
,
9
],
"
auto
"
:
[
8
,
9
],
"
450
"
:
[
8
,
9
],
"
58
"
:
[
8
,
9
],
"
end
"
:
[
8
,
9
],
"
of
"
:
[
4
,
8
,
9
],
"
log
"
:
[
8
,
9
],
"
rocminfo
"
:
[
8
,
9
],
"
gfx
"
:
[
8
,
9
],
"
gfx906
"
:
[
8
,
9
],
"
gfx926
"
:
[
8
,
9
],
"
gfx928
"
:
[
8
,
9
],
"
amdgcn
"
:
[
8
,
9
],
"
amd
"
:
[
8
,
9
],
"
amdhsa
"
:
[
8
,
9
],
"
sramecc
"
:
[
8
,
9
],
"
xnack
"
:
[
8
,
9
],
"
39
"
:
[
8
,
9
],
"
280
"
:
[
8
,
9
],
"
41
"
:
[
8
,
9
],
"
36
"
:
[
8
,
9
],
"
40
"
:
[
8
,
9
],
"
38
"
:
[
8
,
9
],
"
37
"
:
[
8
,
9
],
"
ubuntu22
"
:
9
,
"
root
"
:
9
,
"
test79
"
:
9
,
"
173
"
:
9
,
"
test
"
:
9
,
"
dpkg
"
:
9
,
"
modul
"
:
9
,
"
ii
"
:
9
,
"
191
"
:
9
,
"
amd64
"
:
9
,
"
sign
"
:
9
,
"
hi
"
:
9
,
"
46
"
:
9
,
"
171
"
:
9
,
"
apt
"
:
9
,
"
10period
"
:
9
,
"
20auto
"
:
9
,
"
upgrad
"
:
9
,
"
period
"
:
9
,
"
updat
"
:
9
,
"
download
"
:
9
,
"
autocleaninterv
"
:
9
,
"
unattend
"
:
9
,
"
hold
"
:
9
,
"
mark
"
:
9
,
"
get
"
:
9
,
"
select
"
:
9
,
"
cp
"
:
9
,
"
deb
"
:
9
,
"
focal
"
:
9
,
"
restrict
"
:
9
,
"
univers
"
:
9
,
"
multivers
"
:
9
,
"
src
"
:
[
4
,
9
],
"
propos
"
:
9
,
"
backport
"
:
9
,
"
archiv
"
:
9
,
"
huaweicloud
"
:
9
,
"
wget
"
:
9
,
"
libdrm
"
:
9
,
"
kmod
"
:
9
,
"
libtinfo5
"
:
9
,
"
sqlite3
"
:
9
,
"
libsqlite3
"
:
9
,
"
libibverbs1
"
:
9
,
"
libgtk2
"
:
9
,
"
libnuma
"
:
9
,
"
libgl1
"
:
9
,
"
rsync
"
:
9
,
"
util
"
:
9
,
"
libpci
"
:
9
,
"
pkg
"
:
9
,
"
libfil
"
:
9
,
"
libprotobuf
"
:
9
,
"
libio
"
:
9
,
"
libdigest
"
:
9
,
"
libdata
"
:
9
,
"
libcurlpp
"
:
9
,
"
libncurses5
"
:
9
,
"
msgpack
"
:
9
,
"
mlocat
"
:
9
,
"
deb_dtk2404_ubuntu20
"
:
9
,
"
1_5
"
:
9
,
"
myrepo
"
:
9
,
"
trust
"
:
9
,
"
yes
"
:
9
,
"
my
"
:
9
,
"
debian
"
:
9
,
"
chown
"
:
9
,
"
_apt
"
:
9
,
"
datahr
"
:
9
,
"
man
"
:
9
,
"
var
"
:
9
,
"
udev
"
:
9
,
"
faq
"
:
4
,
"
wkx
"
:
4
,
"
ppl
"
:
4
,
"
cv
"
:
4
,
"
warp
"
:
4
,
"
hpp
"
:
4
,
"
error
"
:
4
,
"
no
"
:
4
,
"
templat
"
:
4
,
"
textur
"
:
4
,
"
static
"
:
4
,
"
float4
"
:
4
,
"
cudatexturetype2d
"
:
4
,
"
3131
"
:
4
,
"
88
"
:
4
,
"
12
"
:
4
,
"
cudatextureobject_t
"
:
4
,
"
cudaresourcedesc
"
:
4
,
"
cudatexturedesc
"
:
4
,
"
param
"
:
4
,
"
1024
"
:
4
,
"
are
"
:
4
,
"
larger
"
:
4
,
"
than
"
:
4
,
"
_zl12rms_norm_f32ili1024eevpkfpfif
"
:
4
,
"
pleas
"
:
4
,
"
launch_bound
"
:
4
,
"
to
"
:
4
,
"
defin
"
:
4
,
"
or
"
:
4
,
"
use
"
:
4
,
"
gpu
"
:
4
,
"
max
"
:
4
,
"
thread
"
:
4
,
"
per
"
:
4
,
"
block
"
:
4
,
"
recompil
"
:
4
,
"
program
"
:
4
,
"
__global__
"
:
4
,
"
__launch_bounds__
"
:
4
,
"
nvcc
"
:
4
,
"
width
"
:
4
,
"
763888888888889in
"
:
4
,
"
height
"
:
4
,
"
8840080927384077in
"
:
4
,
"
ptx
"
:
4
,
"
fnline
"
:
4
,
"
996674321959755in
"
:
4
,
"
9728018372703413in
"
:
4
,
"
isystem
"
:
4
,
"
includ
"
:
4
,
"
verbos
"
:
4
,
"
project
"
:
4
,
"
compil
"
:
4
,
"
ontrack
"
:
4
,
"
hygon
"
:
4
,
"
brows
"
:
4
,
"
csd
"
:
4
,
"
10705
"
:
4
,
"
underlin
"
:
4
,
"
1527777777777778in
"
:
4
,
"
hipconvertinplac
"
:
4
,
"
prehip
"
:
4
,
"
cpp
"
:
4
,
"
cublashandlemanag
"
:
4
,
"
if
"
:
4
,
"
rocm_symlink_hipblas_h
"
:
4
,
"
hipbla
"
:
4
,
"
must
"
:
4
,
"
be
"
:
4
,
"
at
"
:
4
,
"
the
"
:
4
,
"
veri
"
:
4
,
"
top
"
:
4
,
"
ani
"
:
4
,
"
endif
"
:
4
,
"
cublas_v2_h_
"
:
4
,
"
eddymatrixkernel
"
:
4
,
"
void
"
:
4
,
"
qr
"
:
4
,
"
input
"
:
4
,
"
const
"
:
4
,
"
float
"
:
4
,
"
row
"
:
4
,
"
first
"
:
4
,
"
matric
"
:
4
,
"
decompos
"
:
4
,
"
unsign
"
:
4
,
"
int
"
:
4
,
"
number
"
:
4
,
"
column
"
:
4
,
"
nmat
"
:
4
,
"
output
"
:
4
,
"
qt
"
:
4
,
"
mxm
"
:
4
,
"
mxn
"
:
4
,
"
extern
"
:
4
,
"
__shared__
"
:
4
,
"
scratch
"
:
4
,
"
blockidx
"
:
4
,
"
threadidx
"
:
4
,
"
id
"
:
4
,
"
ntpm
"
:
4
,
"
blockdim
"
:
4
,
"
matrix
"
:
4
,
"
lk
"
:
4
,
"
lqt
"
:
4
,
"
lr
"
:
4
,
"
qr_singl
"
:
4
,
"
return
"
:
4
,
"
std
"
:
4
,
"
17
"
:
4
,
"
__hip_platform_amd__
"
:
4
,
"
galaxyhip
"
:
4
,
"
launch
"
:
6
,
"
bound
"
:
6
,
"
256
"
:
6
,
"
asm
"
:
6
,
"
math
"
:
6
,
"
pycuda
"
:
6
,
"
cu
"
:
6
,
"
math_const
"
:
6
,
"
min
"
:
6
,
"
hipruntim
"
:
6
,
"
hipmalloc
"
:
6
,
"
hipmemcpi
"
:
6
},
"
objects
"
:
{},
"
objtypes
"
:
{},
"
objnames
"
:
{},
"
titleterms
"
:
{
"
anaconda
"
:
0
,
"
dcu
"
:
[
0
,
2
,
5
,
6
,
7
,
8
,
9
],
"
pytorch
"
:
0
,
"
resnet50
"
:
0
,
"
pip
"
:
0
,
"
torch
"
:
0
,
"
torchvis
"
:
0
,
"
resetnet50
"
:
0
,
"
docker
"
:
0
,
"
hy
"
:
[
1
,
6
],
"
smi
"
:
[
1
,
6
],
"
nv
"
:
[
2
,
6
],
"
gpu
"
:
[
2
,
6
],
"
dtk
"
:
[
4
,
5
,
8
,
9
],
"
das
"
:
5
,
"
ai
"
:
5
,
"
centos7
"
:
8
,
"
root
"
:
8
,
"
yum
"
:
8
,
"
ubuntu
"
:
9
,
"
launch
"
:
4
,
"
bound
"
:
4
,
"
256
"
:
4
,
"
asm
"
:
4
,
"
cuda
"
:
[
4
,
6
],
"
math
"
:
4
,
"
pycuda
"
:
4
,
"
cu
"
:
4
,
"
hip
"
:
[
4
,
6
],
"
math_const
"
:
4
,
"
min
"
:
4
,
"
25
"
:
4
,
"
04
"
:
4
,
"
hipruntim
"
:
4
,
"
hipmalloc
"
:
4
,
"
hipmemcpi
"
:
4
},
"
envversion
"
:
{
"
sphinx.domains.c
"
:
2
,
"
sphinx.domains.changeset
"
:
1
,
"
sphinx.domains.citation
"
:
1
,
"
sphinx.domains.cpp
"
:
8
,
"
sphinx.domains.index
"
:
1
,
"
sphinx.domains.javascript
"
:
2
,
"
sphinx.domains.math
"
:
2
,
"
sphinx.domains.python
"
:
3
,
"
sphinx.domains.rst
"
:
2
,
"
sphinx.domains.std
"
:
2
,
"
sphinx.ext.intersphinx
"
:
1
,
"
sphinx.ext.viewcode
"
:
1
,
"
sphinx
"
:
57
},
"
alltitles
"
:
{
"
1
\
u57fa
\
u4e8eAnaconda
\
u7684DCU
\
u4f7f
\
u7528
\
u793a
\
u4f8b:
"
:
[[
0
,
"
anacondadcu
"
]],
"
1.1.
\
u5b89
\
u88c5Anaconda;
"
:
[[
0
,
"
anaconda
"
]],
"
1.2.
\
u4f7f
\
u7528DCU
\
u5728Pytorch
\
u63a8
\
u7406Resnet50
\
u5206
\
u7c7b
"
:
[[
0
,
"
dcupytorchresnet50
"
]],
"
1.2.1.
\
u521b
\
u5efa
\
u865a
\
u62df
\
u73af
\
u5883,
\
u8bbe
\
u7f6epip
\
u4e0b
\
u8f7d
\
u6e90
\
u4e3a
\
u56fd
\
u5185:
"
:
[[
0
,
"
pip
"
]],
"
1.2.2.
\
u4ece
\
u5f00
\
u53d1
\
u8005
\
u793e
\
u533a
\
u7684
\
u4e0b
\
u8f7dtorch
\
u3001torchvision;
"
:
[[
0
,
"
torchtorchvision
"
]],
"
1.2.3.
\
u6267
\
u884cresetnet50
\
u5206
\
u7c7b
\
u7684
\
u63a8
\
u7406
\
u4ee3
\
u7801:
"
:
[[
0
,
"
resetnet50
"
]],
"
2
\
u57fa
\
u4e8eDocker
\
u4f7f
\
u7528DCU
"
:
[[
0
,
"
dockerdcu
"
]],
"
2.1.
\
u5b89
\
u88c5Docker
"
:
[[
0
,
"
docker
"
]],
"
2.2.
\
u542f
\
u52a8
\
u5bb9
\
u5668
"
:
[[
0
,
"
id1
"
]],
"
2.2.1.
\
u524d
\
u7f6e
\
u6761
\
u4ef6
"
:
[[
0
,
"
id2
"
]],
"
2.2.2.
\
u62c9
\
u53d6
\
u955c
\
u50cf
"
:
[[
0
,
"
id3
"
]],
"
2.2.3.
\
u542f
\
u52a8
\
u5bb9
\
u5668
\
u547d
\
u4ee4
"
:
[[
0
,
"
id4
"
]],
"
2.3.
\
u57fa
\
u4e8e
\
u5bb9
\
u5668
\
u6267
\
u884cresetnet50
\
u5206
\
u7c7b
\
u7684
\
u63a8
\
u7406
\
u4ee3
\
u7801
"
:
[[
0
,
"
id5
"
]],
"
2.3.1.
\
u9a8c
\
u8bc1torch
\
u662f
\
u5426
\
u5b89
\
u88c5
\
u6210
\
u529f;
"
:
[[
0
,
"
torch
"
]],
"
2.3.2.
\
u6267
\
u884cresetnet50
\
u5206
\
u7c7b
\
u7684
\
u63a8
\
u7406
\
u4ee3
\
u7801:
"
:
[[
0
,
"
id6
"
]],
"
hy-smi
\
u4f7f
\
u7528
\
u4ecb
\
u7ecd
"
:
[[
1
,
"
hy-smi
"
],
[
6
,
null
]],
"
hy-smi
\
u547d
\
u4ee4
\
u8f93
\
u51fa
\
u4ecb
\
u7ecd
"
:
[[
1
,
"
id1
"
]],
"
\
u5e38
\
u7528
\
u7528
\
u6cd5:
"
:
[[
1
,
"
id2
"
]],
"
\
u66f4
\
u591a
\
u7528
\
u6cd5
"
:
[[
1
,
"
id3
"
]],
"
1
\
u4eceNV
\
u7684GPU
\
u8fc1
\
u79fb
\
u5230DCU
"
:
[[
2
,
"
nvgpudcu
"
]],
"
1.1.
\
u6784
\
u5efaDCU
\
u57fa
\
u7840
\
u73af
\
u5883
"
:
[[
2
,
"
dcu
"
]],
"
1.2.
\
u66ff
\
u6362
\
u6df1
\
u5ea6
\
u5b66
\
u4e60
\
u7b97
\
u6cd5
\
u5305
"
:
[[
2
,
"
id1
"
]],
"
1.3. DCU
\
u9002
\
u914d
\
u6848
\
u4f8b
\
uff1a
"
:
[[
2
,
"
id2
"
]],
"
\
u4e0b
\
u8f7d
\
u4e2d
\
u5fc3:
"
:
[[
3
,
"
id1
"
]],
"
\
u64cd
\
u4f5c
\
u7cfb
\
u7edf
\
u7248
\
u672c
\
u517c
\
u5bb9
\
u5217
\
u8868
"
:
[[
5
,
"
id1
"
]],
"
\
u652f
\
u6301
\
u7684DCU
\
u578b
\
u53f7
"
:
[[
5
,
"
dcu
"
]],
"
DCU
\
u8f6f
\
u4ef6
\
u4ecb
\
u7ecd:
"
:
[[
5
,
"
id2
"
]],
"
\
u517c
\
u5bb9
\
u6027(
\
u5fc5
\
u8bfb)
"
:
[[
5
,
"
id3
"
]],
"
\
u52a0
\
u901f
\
u5361
\
u4e0eDTK
\
u7684
\
u517c
\
u5bb9
\
u6027
"
:
[[
5
,
"
dtk
"
]],
"
DTK
\
u548cDAS(AI
\
u751f
\
u6001
\
u5305)
\
u517c
\
u5bb9
\
u6027
"
:
[[
5
,
"
dtkdas-ai
"
]],
"
1.
\
u5f00
\
u53d1
\
u8005
\
u793e
\
u533a DCU
\
u73af
\
u5883
\
u5b89
\
u88c5
\
u624b
\
u518c
"
:
[[
7
,
"
dcu
"
]],
"
2 DCU
\
u57fa
\
u7840
\
u73af
\
u5883
\
u5b8c
\
u6574
\
u6559
\
u7a0b-Centos7.6:
"
:
[[
8
,
"
dcu-centos7-6
"
]],
"
2.1
\
u975eroot
\
u7528
\
u6237
\
u5b89
\
u88c5
\
u6ce8
\
u610f
\
u4e8b
\
u9879:
"
:
[[
8
,
"
root
"
]],
"
2.2.
\
u64cd
\
u4f5c
\
u7cfb
\
u7edf
\
u8bbe
\
u7f6e
\
uff1a
"
:
[[
8
,
"
id1
"
]],
"
2.3.
\
u5173
\
u95ed
\
u5185
\
u6838
\
u81ea
\
u52a8
\
u66f4
\
u65b0:
"
:
[[
8
,
"
id2
"
]],
"
2.4.
\
u66f4
\
u65b0yum
\
u6e90:
"
:
[[
8
,
"
yum
"
]],
"
2.5.
\
u5b89
\
u88c5
\
u76f8
\
u5173
\
u4f9d
\
u8d56:
"
:
[[
8
,
"
id3
"
]],
"
2.6.
\
u6821
\
u9a8c
\
u7cfb
\
u7edf
\
u914d
\
u7f6e:
"
:
[[
8
,
"
id4
"
]],
"
2.7.
\
u5b89
\
u88c5
\
u9a71
\
u52a8:
"
:
[[
8
,
"
id5
"
]],
"
2.8.
\
u5b89
\
u88c5DTK:
"
:
[[
8
,
"
dtk
"
]],
"
2.9.
\
u9a8c
\
u8bc1
\
u5b89
\
u88c5
\
u7ed3
\
u679c:
"
:
[[
8
,
"
id6
"
]],
"
3 DCU
\
u57fa
\
u7840
\
u73af
\
u5883
\
u5b8c
\
u6574
\
u6559
\
u7a0b-ubuntu:
"
:
[[
9
,
"
dcu-ubuntu
"
]],
"
3.1.
\
u5b89
\
u88c5
\
u7cfb
\
u7edf
\
u8fc7
\
u7a0b
\
u4e2d
\
u6ce8
\
u610f:
"
:
[[
9
,
"
id1
"
]],
"
3.2.
\
u5b89
\
u88c5
\
u5b8c
\
u6210
\
u7cfb
\
u7edf
\
u540e
\
u7684
\
u914d
\
u7f6e
"
:
[[
9
,
"
id2
"
]],
"
3.3.
\
u66f4
\
u65b0
\
u56fd
\
u5185
\
u8f6f
\
u4ef6
\
u4e0b
\
u8f7d
\
u6e90:
"
:
[[
9
,
"
id3
"
]],
"
3.4.
\
u5b89
\
u88c5
\
u76f8
\
u5173
\
u4f9d
\
u8d56:
"
:
[[
9
,
"
id4
"
]],
"
3.5.
\
u6821
\
u9a8c
\
u7cfb
\
u7edf
\
u914d
\
u7f6e:
"
:
[[
9
,
"
id5
"
]],
"
3.6.
\
u5b89
\
u88c5
\
u9a71
\
u52a8:
"
:
[[
9
,
"
id6
"
]],
"
3.7.
\
u5b89
\
u88c5DTK:
"
:
[[
9
,
"
dtk
"
]],
"
3.8.
\
u9a8c
\
u8bc1
\
u5b89
\
u88c5
\
u7ed3
\
u679c:
"
:
[[
9
,
"
id7
"
]],
"
\
u95ee
\
u9898
\
u4e00
\
u3001
\
u7eb9
\
u7406
\
u5185
\
u5b58
\
u62a5
\
u9519
\
uff1a
"
:
[[
4
,
"
id1
"
]],
"
\
u89e3
\
u51b3
\
u65b9
\
u6cd5
\
uff1a
"
:
[[
4
,
"
id2
"
],
[
4
,
"
id3
"
],
[
4
,
"
id4
"
],
[
4
,
"
id5
"
],
[
4
,
"
id6
"
],
[
4
,
"
id7
"
],
[
4
,
"
id8
"
],
[
4
,
"
id9
"
],
[
4
,
"
id10
"
],
[
4
,
"
id11
"
],
[
4
,
"
id12
"
]],
"
\
u95ee
\
u9898
\
u4e8c
\
u3001 launch bounds (256)
\
u62a5
\
u9519
\
uff1a
"
:
[[
4
,
"
launch-bounds-256
"
]],
"
\
u95ee
\
u9898
\
u4e09
\
u3001asm
\
u4ee3
\
u7801
\
uff0c
\
u5185
\
u8054
\
u6c47
\
u7f16
\
u4ee3
\
u7801
\
u7f16
\
u8bd1
\
u62a5
\
u9519
\
uff1b
"
:
[[
4
,
"
asm
"
]],
"
\
u95ee
\
u9898
\
u56db
\
u3001 cuda
\
u5e94
\
u7528
\
u4e0d
\
u8f6c
\
u7801
\
u9002
\
u914d
\
u627e
\
u4e0d
\
u5230 math.h
\
u5934
\
u6587
\
u4ef6
"
:
[[
4
,
"
cuda-math-h
"
]],
"
\
u95ee
\
u9898
\
u4e94
\
u3001
\
u4f7f
\
u7528
\
u5f00
\
u6e90
\
u7684pycuda
\
u65e0
\
u6cd5
\
u7f16
\
u8bd1 cu
\
u6587
\
u4ef6
"
:
[[
4
,
"
pycuda-cu
"
]],
"
\
u95ee
\
u9898
\
u516d
\
u3001
\
u5982
\
u4f55
\
u9488
\
u5bf9
\
u4e00
\
u4e2a
\
u6587
\
u4ef6
\
u5939
\
u7684cu
\
u4ee3
\
u7801
\
u8fdb
\
u884c
\
u8f6c
\
u7801
"
:
[[
4
,
"
cu
"
]],
"
\
u95ee
\
u9898
\
u4e03
\
u3001hip
\
u8f6c
\
u7801
\
u540e
\
u90e8
\
u5206
\
u5b8f
\
u5b9a
\
u4e49
\
u4e0d
\
u89c4
\
u8303
\
u4e0d
\
u4f1a
\
u88ab
\
u8f6c
\
u6362
\
uff0c
\
u53ef
\
u80fd
\
u5bfc
\
u81f4
\
u51fa
\
u73b0
\
u95ee
\
u9898
\
uff1a
"
:
[[
4
,
"
hip
"
]],
"
\
u95ee
\
u9898
\
u516b
\
u3001 math_constants.h
\
u627e
\
u4e0d
\
u5230
\
uff1a
"
:
[[
4
,
"
math-constants-h
"
]],
"
\
u95ee
\
u9898
\
u4e5d
\
u3001
\
u8f6c
\
u7801
\
u540e
\
u90e8
\
u5206hip
\
u6838
\
u51fd
\
u6570
\
u4e0d
\
u8bc6
\
u522b min
\
uff1a
"
:
[[
4
,
"
hip-min
"
]],
"
\
u95ee
\
u9898
\
u5341
\
u3001
\
u4f7f
\
u7528 DTK-25.04
\
u4e4b
\
u540e
\
u7684
\
u8f6f
\
u4ef6
\
u6808
\
u7f16
\
u8bd1
\
u62a5
\
u5934
\
u6587
\
u4ef6
\
u9519
\
uff1a
"
:
[[
4
,
"
dtk-25-04
"
]],
"
\
u95ee
\
u9898
\
u5341
\
u4e00
\
u3001g++
\
u7f16
\
u8bd1 hipRuntime
\
uff08hipMalloc
\
u3001hipMemcpy
\
uff09
\
u7b49
\
u63a5
\
u53e3
\
u4ee3
\
u7801
\
uff0c
\
u7f16
\
u8bd1
\
u62a5
\
u9519
\
uff1a
"
:
[[
4
,
"
g-hipruntime-hipmallochipmemcpy
"
]],
"
\
u6b22
\
u8fce
\
u6765
\
u5230 DCU
\
u7684
\
u73af
\
u5883
\
u5b89
\
u88c5
\
u6559
\
u7a0b
\
uff01
"
:
[[
6
,
"
dcu
"
]],
"
\
u8d44
\
u6e90
\
u4e0b
\
u8f7d:
"
:
[[
6
,
"
id1
"
]],
"
\
u6587
\
u6863
"
:
[[
6
,
"
id4
"
]],
"
\
u57fa
\
u7840
\
u4ecb
\
u7ecd
"
:
[[
6
,
null
]],
"
\
u8d44
\
u6e90
\
u4e0b
\
u8f7d
\
u5730
\
u5740
"
:
[[
6
,
null
]],
"
\
u6784
\
u5efaDCU
\
u57fa
\
u7840
\
u73af
\
u5883
"
:
[[
6
,
null
]],
"
\
u5feb
\
u901f
\
u4f7f
\
u7528 DCU
"
:
[[
6
,
null
]],
"
\
u4eceNV
\
u7684GPU
\
u8fc1
\
u79fb
\
u5230DCU
"
:
[[
6
,
null
]],
"
CUDA
\
u4e0e HIP
\
u79fb
\
u690d
\
u5e38
\
u89c1
\
u95ee
\
u9898
"
:
[[
6
,
null
]],
"
\
u7d22
\
u5f15
\
u4e0e
\
u8868
\
u683c
"
:
[[
6
,
"
id5
"
]]},
"
indexentries
"
:
{}})
\ No newline at end of file
docs/DCU/docs/dev/template.md
0 → 100644
View file @
c0705977
### 1.2 DCU基础环境完整教程-Ubuntu20.04:
#### 1.2.1 **非root用户安装注意事项:**
#### 1.2.2. **操作系统设置**:
#### 1.2.3. **关闭内核自动更新:**
#### 1.2.4. **更新国内源:**
#### 1.2.5. **安装相关依赖:**
#### 1.2.6. **系统配置:**
docs/DCU/docs/make.bat
0 → 100644
View file @
c0705977
@ECHO
OFF
pushd
%~dp0
REM Command file for Sphinx documentation
if
"
%SPHINXBUILD%
"
==
""
(
set
SPHINXBUILD
=
sphinx
-build
)
set
SOURCEDIR
=
source
set
BUILDDIR
=
build
if
"
%
1"
==
""
goto
help
%SPHINXBUILD%
>
NUL
2
>
NUL
if
errorlevel
9009
(
echo
.
echo
.The
'sphinx-build'
command
was
not
found
.
Make
sure
you
have
Sphinx
echo
.installed
,
then
set
the
SPHINXBUILD
environment
variable
to
point
echo
.to
the
full
path
of
the
'sphinx-build'
executable
.
Alternatively
you
echo
.may
add
the
Sphinx
directory
to
PATH
.
echo
.
echo
.If
you
don
't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD%
-M
%
1
%SOURCEDIR%
%BUILDDIR%
%SPHINXOPTS%
%O%
goto end
:help
%SPHINXBUILD%
-M help
%SOURCEDIR%
%BUILDDIR%
%SPHINXOPTS%
%O%
:end
popd
docs/DCU/docs/requirements.txt
0 → 100644
View file @
c0705977
sphinx==6.2.1
recommonmark
sphinx-copybutton
sphinx-tabs
sphinx_markdown_tables>=0.0.16
sphinx-rtd-theme==1.3.0
sphinxcontrib-mermaid
docutils>=0.18.1,<0.20
m2r==0.2.1
markdown>=3.4.0
mistune==0.8.4
myst-parser
# -e git+https://github.com/InternLM/pytorch_sphinx_theme.git#egg=pytorch_sphinx_theme
# readthedocs.txt
# accelerate
# mmengine-lite
pillow
pydantic
# torch
# transformers
urllib3<2.0.0
docs/DCU/docs/zh_cn/Anaconda_Docker.md
0 → 100644
View file @
c0705977
# 1 基于Anaconda的DCU使用示例:
## 1.1. 安装Anaconda;
[
Anaconda地址
](
https://www.anaconda.com/download
)
## 1.2. 使用DCU在Pytorch推理Resnet50分类
### 1.2.1. 创建虚拟环境, 设置pip下载源为国内:
```
bash
conda create
-n
dcu_test
python
=
3.10
conda activate dcu_test
pip3 config
set
global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
```
### 1.2.2. 从开发者社区的下载torch、torchvision;
[
**DAS生态包下载地址**
](
https://cancon.hpccube.com:65024/4/main/
)
1.
下载torch、torchvision的whl文件到本地;
2.
`pip install *.whl`
;
3.
验证
`torch`
是否安装成功;
```
shell
python
-c
"import torch;print(torch.cuda.is_available());print(torch.cuda.device_count())"
```
### 1.2.3. 执行resetnet50分类的推理代码:
```
shell
git clone http://developer.hpccube.com/codes/wangkx1/torch_inference_resnet50.git
cd
torch_inference_resnet50
python torch_verify.py
```
# 2 基于Docker使用DCU
DCU开发者社区光源镜像介绍:
[
https://sourcefind.cn/#/service-list
](
https://sourcefind.cn/#/service-list
)
光源可以查询到基于多种DTK版本的安装的深度学习基础镜像、大模型推理框架(vllm、lmdeploy、fastllm等)镜像、通用模型推理框架镜像(migraphx、AITemplate等)镜像;
## 2.1. 安装Docker
参考当前操作系统的版本号,自行安装docker
查看当前操作系统版本号:
```
bash
cat
/etc/os-release
```
## 2.2. 启动容器
基于镜像创建的容器可提供开箱即用的基于DCU的深度学习运行环境:
### 2.2.1. 前置条件
1.
安装DCU加速卡,并完成其对应驱动的安装;
2.
正确安装docker;
### 2.2.2. 拉取镜像
```
bash
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.0-ubuntu20.04-dtk24.04.1-py3.8
```
### 2.2.3. 启动容器命令
```
bash
docker run
-it
\
--network
=
host
\
--ipc
=
host
\
--shm-size
=
16G
\
--device
=
/dev/kfd
\
--device
=
/dev/mkfd
\
--device
=
/dev/dri
\
-v
/opt/hyhal:/opt/hyhal
\
-v
your_path:/workspace
\
--group-add
video
\
--cap-add
=
SYS_PTRACE
\
--security-opt
seccomp
=
unconfined
\
--name
=
dcu_test
\
image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.0-ubuntu20.04-dtk24.04.1-py3.8
\
/bin/bash
注:
(1)若出现libhsa-runtime相关报错,启动参数请加上-v /opt/hyhal:/opt/hyhal
*
;若物理机无/opt/hyhal,请下载hyhal并解压放置容器/opt/下;
*
(2)参数解释:
-it
# i:打开容器标准输入,t:分配一个伪终端
--network
=
host
# 连接网络(none|host|自定义网络...)
--ipc
=
host
# 设置IPC模式(none|shareable|host...)
--shm-size
=
24G
# 设置/dev/shm大小
--device
=
/dev/kfd
# 指定访问设备(DCU需要添加/dev/kfd、/dev/mkfd、/dev/dri)
--device
=
/dev/mkfd
--device
=
/dev/dri
-v
/opt/hyhal:/opt/hyhal
# dtk23.10以上版本镜像需要-v挂载物理机目录/opt/hyhal
-v
your_path:/workspace
# 挂载工作目录
--group-add
video
# 设置用户附加组(普通用户使用DCU需要)
--cap-add
=
SYS_PTRACE
# 添加权限(SYS_PTRACE|NET_ADMIN...)
--security-opt
seccomp
=
unconfined
# 安全配置(seccomp=unconfined|label=disable...)
--name
=
dcu_test
# 容器名称
image.sourcefind.cn:5000/dcu/admin/base/custom:alphafold2-2.3.2-dtk23.10-py38
# 所需镜像
/bin/bash
# 容器内启动bash
```
## 2.3. 基于容器执行resetnet50分类的推理代码
### 2.3.1. 验证`torch`是否安装成功;
```shell
python -c "import torch;print(torch.cuda.is_available());print(torch.cuda.device_count())"
```
如果不可用, 从开
[
发者社区
](
https://cancon.hpccube.com:65024/4/main/
)
下载安装torch等你需要的深度学习依赖包;
1.
下载torch、torchvision的whl文件到本地;
2.
`pip install *.whl`
;
### 2.3.2. 执行resetnet50分类的推理代码:
```
shell
git clone http://developer.hpccube.com/codes/wangkx1/torch_inference_resnet50.git
cd
torch_inference_resnet50
python torch_verify.py
```
docs/DCU/docs/zh_cn/Hy-SMI.md
0 → 100644
View file @
c0705977
# hy-smi 使用介绍
## hy-smi 命令输出介绍
系统终端输入
`hy-smi`
得到如下输出:

输出内容的每一列的说明
-
DCU:0-7 是卡的序号索引
-
Temp:DCU卡当前运行的温度
-
AvgPwr:平均功耗
-
Perf:运行的性能模式
-
PwrCap:额定功耗
-
VARM%:显存占用率
-
DCU%:核心利用率
-
Mode:默认模式即为
`Normal`
,不建议设置其他模式(会影响性能)。
## 常用用法:
-
查看显卡名字:
`hy-smi --showproductname`
-
查看当前DCU卡上运行进程占用的资源情况:
`hy-smi --showpids`
-
查看指定进程在DCU卡上的资源占用情况:
`hy-smi --showpiddcus`
-
查看驱动版本号:
`hy-smi --showdriverversion`
-
查看
`vbios`
版本号:
`hy-smi -v`
-
查看具体显存占用情况:
`hy-smi --showmeminfo vram`
## 更多用法
更多用法请使用
`hy-smi -h`
查看学习使用;
\ No newline at end of file
docs/DCU/docs/zh_cn/NV_GPU_TO_DCU.md
0 → 100644
View file @
c0705977
# 1 从NV的GPU迁移到DCU
## 1.1. 构建DCU基础环境
参考第一部分
`构建DCU基础环境`
, 完成 DCU 基础环境构建
## 1.2. 替换深度学习算法包
对于依赖cuda的深度学习算法包,需要替换为光合开发者社区的版本;
开发者社区:
[
https://developer.hpccube.com/tool
](
https://developer.hpccube.com/tool
)

<!-- <center><img src="./imgs/das.png" alt="AI生态包下载地址" style="zoom:50%;" /></center>
-->
**手动下载其中对应算法包的whl文件到您的服务器,安装轮子**
:
参考如下步骤:
> 注意: 替换算法包的时候,算法包的版本需要和DTK对应;
1.
pip 配置国内安装源
```
bash
pip3 config
set
global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip
install
pip
-U
```
2.
安装轮子
```
bash
pip
install
***
.whl
```
## 1.3. DCU 适配案例:
**DCU开发者社区光源ModelZoo介绍**
(可以快速查询所需的DCU算法模型,根据Readme进行构建DCU环境,一键运行所需的算法模型):
[
https://sourcefind.cn/#/model-zoo/list
](
https://sourcefind.cn/#/model-zoo/list
)
光源可以查询到基于多种DCU适配的各个AI技术领域的算法模型以及算法框架,如bert、yolo、resnet、Qwen、Llama、vllm、lmdpeloy等等;
**Examples:**
-
[
YOLOv10
](
https://sourcefind.cn/#/model-zoo/1802637886774013954
)
-
[
Rep_Vit
](
https://sourcefind.cn/#/model-zoo/1805170476575846402
)
-
[
alphafold2_jax
](
https://sourcefind.cn/#/model-zoo/1712346117256200194
)
-
[
llama3
](
https://sourcefind.cn/#/model-zoo/1782218524112154626
)
-
[
stablediffusion_v2.1
](
https://sourcefind.cn/#/model-zoo/1793173002231443458
)
-
[
Qwen1.5
](
https://sourcefind.cn/#/model-zoo/1793160576505180161
)
\ No newline at end of file
docs/DCU/docs/zh_cn/_static/css/readthedocs.css
0 → 100644
View file @
c0705977
.blockquote
{
background-color
:
#8f9092
;
/* 浅灰色背景 */
padding
:
1em
;
/* 可选:增加内边距以改善可读性 */
margin
:
1em
0
;
/* 可选:调整外边距 */
}
.blockquote
p
{
margin
:
0
;
/* 移除段落之间的默认间距 */
}
.blockquote
p
:first-child
{
margin-top
:
0
;
/* 移除第一个段落的上间距 */
}
.blockquote
p
:last-child
{
margin-bottom
:
0
;
/* 移除最后一个段落的下间距 */
}
docs/DCU/docs/zh_cn/_static/css/readthedocs.css.bak
0 → 100644
View file @
c0705977
.header-logo {
background-image: url("../image/DCU-logo.svg");
background-size: 257px 60px;
height: 60px;
width: 257px;
}
@media screen and (min-width: 1100px) {
.header-logo {
top: -15px;
}
}
pre {
white-space: pre;
}
@media screen and (min-width: 2000px) {
.pytorch-content-left {
width: 1200px;
margin-left: 30px;
}
article.pytorch-article {
max-width: 1200px;
}
.pytorch-breadcrumbs-wrapper {
width: 1200px;
}
.pytorch-right-menu.scrolling-fixed {
position: fixed;
top: 45px;
left: 1580px;
}
}
article.pytorch-article section code {
padding: .2em .4em;
background-color: #f3f4f7;
border-radius: 5px;
}
/* Disable the change in tables */
article.pytorch-article section table code {
padding: unset;
background-color: unset;
border-radius: unset;
}
table.autosummary td {
width: 50%
}
img.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
article.pytorch-article p.rubric {
font-weight: bold;
}
docs/DCU/docs/zh_cn/_static/image/DCU-logo.svg
0 → 100644
View file @
c0705977
<svg
width=
"407"
height=
"160"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<!-- Created with Method Draw - http://github.com/duopixel/Method-Draw/ -->
<g>
<title>
background
</title>
<rect
fill=
"#ffffff"
id=
"canvas_background"
height=
"162"
width=
"409"
y=
"-1"
x=
"-1"
/>
<g
display=
"none"
overflow=
"visible"
y=
"0"
x=
"0"
height=
"100%"
width=
"100%"
id=
"canvasGrid"
>
<rect
fill=
"url(#gridpattern)"
stroke-width=
"0"
y=
"0"
x=
"0"
height=
"100%"
width=
"100%"
/>
</g>
</g>
<g>
<title>
Layer 1
</title>
<image
stroke-dasharray=
"2,2"
stroke=
"null"
xlink:href=
"data:image/png;base64,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lkCNjRiasMbRzVouqeWVmmdcr1stj1qXTcpnmW3Un42af/Q/Xq9T32t1c4OVfazXK/l286ZC+PZcL+etVjJKd5CXeTRKBzcGf+j9wbrALa+0Hoha3F2CL/FKidwH26BV6jVdKJeiKISvhDoigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQCEL/D+a+mY3rc5dLgAAAABJRU5ErkJggg=="
id=
"svg_1"
height=
"170"
width=
"497"
y=
"-5"
x=
"-58"
/>
</g>
</svg>
\ No newline at end of file
Prev
1
…
3
4
5
6
7
8
9
10
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment