Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
N
NiuTrans.Tensor
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
8
Issues
8
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
NiuTrans.Tensor
Commits
63eee374
Commit
63eee374
authored
4 years ago
by
liyinqiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support CUDA 11 and fix some CMake bugs.
parent
64973687
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
42 行增加
和
47 行删除
+42
-47
CMakeLists.txt
+35
-40
README.md
+4
-4
doc/manual.md
+3
-3
没有找到文件。
CMakeLists.txt
查看文件 @
63eee374
...
...
@@ -97,35 +97,47 @@ if(USE_CUDA)
add_definitions
(
-DHALF_PRECISION
)
endif
()
find_package
(
CUDA REQUIRED
)
if
(
WIN32
)
SET
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
/wd4819"
)
set
(
CMAKE_CUDA_FLAGS
${
CMAKE_CUDA_FLAGS
}
"-maxrregcount=0 -m64 --disable-warnings -use_fast_math -DUSE_CUDA"
)
if
(
USE_HALF_PRECISION
)
set
(
CMAKE_CUDA_FLAGS
${
CMAKE_CUDA_FLAGS
}
"-DHALF_PRECISION"
)
set
(
CMAKE_CUDA_FLAGS
${
CMAKE_CUDA_FLAGS
}
-arch=sm_60
-gencode=arch=compute_60,code=sm_60
-gencode=arch=compute_61,code=sm_61
-gencode=arch=compute_62,code=sm_62
-gencode=arch=compute_70,code=sm_70
-gencode=arch=compute_70,code=compute_70
)
else
()
set
(
CMAKE_CUDA_FLAGS
${
CMAKE_CUDA_FLAGS
}
-arch=sm_30
-gencode=arch=compute_30,code=sm_30
-gencode=arch=compute_50,code=sm_50
-gencode=arch=compute_52,code=sm_52
if
(
GPU_ARCH STREQUAL K
)
# Kepler cards (CUDA 5 until CUDA 10
)
set
(
ARCH_FLAGS -arch=compute_30 -code=compute_30,sm_30,sm_35,sm_37
)
elseif
(
GPU_ARCH STREQUAL M
)
# Maxwell cards (CUDA 6 until CUDA 11
)
set
(
ARCH_FLAGS -arch=compute_50 -code=compute_50,sm_50,sm_52,sm_53
)
elseif
(
GPU_ARCH STREQUAL P
)
# Pascal (CUDA 8 and later
)
set
(
ARCH_FLAGS -arch=compute_60 -code=compute_60,sm_60,sm_61,sm_62
)
elseif
(
GPU_ARCH STREQUAL V
)
# Volta (CUDA 9 and later)
set
(
ARCH_FLAGS -arch=compute_70 -code=compute_70,sm_70,sm_72
)
elseif
(
GPU_ARCH STREQUAL T
)
# Turing (CUDA 10 and later)
set
(
ARCH_FLAGS -arch=compute_75 -code=sm_75
)
elseif
(
GPU_ARCH STREQUAL A
)
# Ampere (CUDA 11 and later)
set
(
ARCH_FLAGS -arch=compute_80 -code=sm_80
)
endif
()
if
(
USE_HALF_PRECISION
)
if
(
NOT DEFINED GPU_ARCH
)
set
(
ARCH_FLAGS -arch=sm_60
-gencode=arch=compute_60,code=sm_60
-gencode=arch=compute_61,code=sm_61
-gencode=arch=compute_62,code=sm_62
-gencode=arch=compute_70,code=sm_70
-gencode=arch=compute_72,code=sm_72
-gencode=arch=compute_70,code=compute_70
)
elseif
(
${
GPU_ARCH
}
STREQUAL K OR
${
GPU_ARCH
}
STREQUAL M
)
message
(
FATAL_ERROR
"your GPU cannot use the function half precision"
)
endif
()
endif
()
if
(
WIN32
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
/wd4819"
)
set
(
CUDA_NVCC_FLAGS
${
CUDA_NVCC_FLAGS
}
"-maxrregcount=0 -m64 -Wno-deprecated-gpu-targets -use_fast_math"
)
set
(
CUDA_NVCC_FLAGS
${
CUDA_NVCC_FLAGS
}
${
ARCH_FLAGS
}
)
set
(
CMAKE_POLICY_DEFAULT_CMP0028 NEW
)
link_directories
(
"
${
CUDA_ROOT
}
/lib/x64"
)
include_directories
(
"
${
CUDA_ROOT
}
/include"
)
set
(
CUDA_LIB_DIR
"
${
CUDA_ROOT
}
/lib/x64/"
)
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
cublas.lib"
)
if
(
CUDA_VERSION_MAJOR EQUAL 11
)
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
cublasLt.lib"
)
endif
()
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
npps.lib"
)
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
nppc.lib"
)
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
cudadevrt.lib"
)
...
...
@@ -133,31 +145,14 @@ if(USE_CUDA)
else
()
set
(
CMAKE_CXX_FLAGS
"-fPIC -msse4.2 -w -march=native -Wno-enum-compare -Wno-sign-compare -Wno-format -Wno-dev -O3 -DNDEBUG -rdynamic"
)
set
(
CUDA_NVCC_FLAGS
"-Xcompiler -fPIC -maxrregcount=0 --disable-warnings -use_fast_math -DUSE_CUDA -Wno-deprecated-gpu-targets -std=c++11"
)
if
(
USE_HALF_PRECISION
)
set
(
CUDA_NVCC_FLAGS
${
CUDA_NVCC_FLAGS
}
"-DHALF_PRECISION"
)
set
(
CUDA_NVCC_FLAGS
${
CUDA_NVCC_FLAGS
}
-arch=sm_60
-gencode=arch=compute_60,code=sm_60
-gencode=arch=compute_61,code=sm_61
-gencode=arch=compute_62,code=sm_62
-gencode=arch=compute_70,code=sm_70
-gencode=arch=compute_70,code=compute_70
)
else
()
set
(
CUDA_NVCC_FLAGS
${
CUDA_NVCC_FLAGS
}
-arch=sm_30
-gencode=arch=compute_30,code=sm_30
-gencode=arch=compute_50,code=sm_50
-gencode=arch=compute_52,code=sm_52
-gencode=arch=compute_60,code=sm_60
-gencode=arch=compute_61,code=sm_61
-gencode=arch=compute_62,code=sm_62
-gencode=arch=compute_70,code=sm_70
-gencode=arch=compute_70,code=compute_70
)
endif
()
link_directories
(
${
CUDA_ROOT
}
/lib64
)
include_directories
(
${
CUDA_ROOT
}
/include
)
set
(
CUDA_NVCC_FLAGS
${
CUDA_NVCC_FLAGS
}
${
ARCH_FLAGS
}
)
link_directories
(
"
${
CUDA_ROOT
}
/lib64"
)
include_directories
(
"
${
CUDA_ROOT
}
/include"
)
set
(
CUDA_LIB_DIR
"
${
CUDA_ROOT
}
/lib64/"
)
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
libcublas_static.a"
)
if
(
CUDA_VERSION_MAJOR EQUAL 11
)
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
libcublasLt_static.a"
)
endif
()
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
libculibos.a"
)
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
libnpps_static.a"
)
set
(
CUDA_LIB_PATH
${
CUDA_LIB_PATH
}
"
${
CUDA_LIB_DIR
}
libnppc_static.a"
)
...
...
This diff is collapsed.
Click to expand it.
README.md
查看文件 @
63eee374
差异被折叠。
点击展开。
doc/manual.md
查看文件 @
63eee374
...
...
@@ -39,7 +39,7 @@ NiuTensor工具包可以在Windows、Linux以及macOS环境下进行安装,支
-
执行CMake命令对Visual Studio项目进行生成(如果 visual studio 版本低于 2019,则在使用下列命令的时候需额外加上
`-A x64`
的CMake参数),如计划生成动态链接库,则仅需在命令中额外加上
`-DGEN_DLL=ON`
的CMake参数即可,否则默认生成可执行程序。
-
如项目计划启用MKL数学运算库(需用户自行安装),则仅需在CMake命令中使用
`-DUSE_MKL=ON`
参数,并通过
`-DINTEL_ROOT='/intel/root/path'`
指定MKL库(Intel工具包)的安装路径。如
`cmake -DUSE_MKL=ON -DINTEL_ROOT='C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_2020.2.254/windows' ..`
。
-
如项目计划启用OpenBLAS数学运算库(需用户自行安装),则仅需在CMake命令中使用
`-DUSE_OPENBLAS=ON`
参数,并通过
`-DOPENBLAS_ROOT='/openblas/root/path'`
指定OpenBLAS库的安装路径。如
`cmake -DUSE_OPENBLAS=ON -DOPENBLAS_ROOT='C:/Program Files/OpenBLAS' ..`
。
-
如项目计划启用CUDA数学运算库(需用户自行安装),则仅需在CMake命令中使用
`-DUSE_CUDA=ON`
参数,并通过
`-DCUDA_ROOT='/cuda/root/path'`
指定CUDA库的安装路径
。如
`cmake -DUSE_CUDA=ON -DCUDA_ROOT='C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.2'
..`
。如需在GPU设备上使用半精度浮点数进行运算,需在启用
`-DUSE_CUDA=ON`
参数的同时启用
`-USE_HALF_PRECISION=ON`
参数(需要注意的是半精度但需要注意的是,半精度操作仅在使用Pascal及更新架构的NVIDIA GPU中提供支持,该项可参考
[
NVIDIA GPU设备信息
](
https://developer.nvidia.com/cuda-gpus
)
进行查询)。
-
如项目计划启用CUDA数学运算库(需用户自行安装),则仅需在CMake命令中使用
`-DUSE_CUDA=ON`
参数,并通过
`-DCUDA_ROOT='/cuda/root/path'`
指定CUDA库的安装路径
,通过-DGPU_ARCH=ARCH指定所在GPU设备的架构(K:Kepler架构;M:Maxwell架构;P:Pascal架构;V:Volta架构;T:Turing架构;A:Ampere架构)。如
`cmake -DUSE_CUDA=ON -DCUDA_ROOT='C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.2' -DGPU_ARCH=P
..`
。如需在GPU设备上使用半精度浮点数进行运算,需在启用
`-DUSE_CUDA=ON`
参数的同时启用
`-USE_HALF_PRECISION=ON`
参数(需要注意的是半精度但需要注意的是,半精度操作仅在使用Pascal及更新架构的NVIDIA GPU中提供支持,该项可参考
[
NVIDIA GPU设备信息
](
https://developer.nvidia.com/cuda-gpus
)
进行查询)。
-
执行成功将显示
`Build files have been written to:...`
。
-
打开build目录中的NiuTensor.sln文件即可通过Visual Studio打开NiuTensor项目。
-
打开后在解决方案管理器中选中NiuTensor,右键将其设为启动项目即可开始使用。
...
...
@@ -60,7 +60,7 @@ NiuTensor工具包可以在Windows、Linux以及macOS环境下进行安装,支
-
打开CLion首选项,点击“构建,执行,部署”选项卡中的CMake,在“CMake选项”中进行设置,设置完成后CLion将自动使用CMake对项目进行构建,如计划生成动态链接库,则仅需在在“CMake选项”中额外加上
`-DGEN_DLL=ON`
的CMake参数即可,否则默认生成可执行程序。
-
如项目计划启用MKL数学运算库(需用户自行安装),则仅需在“CMake选项”中填入
`-DUSE_MKL=ON`
,并通过
`-DINTEL_ROOT='/intel/root/path'`
指定MKL库(Intel工具包)的安装路径。如
`-DUSE_MKL=ON -DINTEL_ROOT='/opt/intel/compilers_and_libraries_2020.2.254/linux'`
。
-
如项目计划启用OpenBLAS数学运算库(需用户自行安装),则仅需在“CMake选项”中填入
`-DUSE_OPENBLAS=ON`
,并通过
`-DOPENBLAS_ROOT='/openblas/root/path'`
指定OpenBLAS库的安装路径。如
`-DUSE_OPENBLAS=ON -DOPENBLAS_ROOT='/opt/OpenBLAS'`
。
-
如项目计划启用CUDA数学运算库(需用户自行安装),则仅需在“CMake选项”中填入
`-DUSE_CUDA=ON`
,并通过
`-DCUDA_ROOT='/cuda/root/path'`
指定CUDA库的安装路径
。如
`-DUSE_CUDA=ON -DCUDA_ROOT='/usr/local/cuda-9.2'
`
。如需在GPU设备上使用半精度浮点数进行运算,需在启用
`-DUSE_CUDA=ON`
参数的同时启用
`-USE_HALF_PRECISION=ON`
参数(需要注意的是半精度但需要注意的是,半精度操作仅在使用Pascal及更新架构的NVIDIA GPU中提供支持,该项可参考
[
NVIDIA GPU设备信息
](
https://developer.nvidia.com/cuda-gpus
)
进行查询)。
-
如项目计划启用CUDA数学运算库(需用户自行安装),则仅需在“CMake选项”中填入
`-DUSE_CUDA=ON`
,并通过
`-DCUDA_ROOT='/cuda/root/path'`
指定CUDA库的安装路径
,通过-DGPU_ARCH=ARCH指定所在GPU设备的架构(K:Kepler架构;M:Maxwell架构;P:Pascal架构;V:Volta架构;T:Turing架构;A:Ampere架构)。如
`-DUSE_CUDA=ON -DCUDA_ROOT='/usr/local/cuda-9.2' -DGPU_ARCH=P
`
。如需在GPU设备上使用半精度浮点数进行运算,需在启用
`-DUSE_CUDA=ON`
参数的同时启用
`-USE_HALF_PRECISION=ON`
参数(需要注意的是半精度但需要注意的是,半精度操作仅在使用Pascal及更新架构的NVIDIA GPU中提供支持,该项可参考
[
NVIDIA GPU设备信息
](
https://developer.nvidia.com/cuda-gpus
)
进行查询)。
##### CMake方式(命令行)
...
...
@@ -71,7 +71,7 @@ NiuTensor工具包可以在Windows、Linux以及macOS环境下进行安装,支
-
执行CMake命令对项目进行生成,如计划生成动态链接库,则仅需在命令中额外加上
`-DGEN_DLL=ON`
的CMake参数即可,否则默认生成可执行程序。
-
如项目计划启用MKL数学运算库(需用户自行安装),则仅需在CMake命令中使用
`-DUSE_MKL=ON`
参数,并通过
`-DINTEL_ROOT='/intel/root/path'`
指定MKL库(Intel工具包)的安装路径。如
`cmake -DUSE_MKL=ON -DINTEL_ROOT='/opt/intel/compilers_and_libraries_2020.2.254/linux' ..`
。
-
如项目计划启用OpenBLAS数学运算库(需用户自行安装),则仅需在CMake命令中使用
`-DUSE_OPENBLAS=ON`
参数,并通过
`-DOPENBLAS_ROOT='/openblas/root/path'`
指定OpenBLAS库的安装路径。如
`cmake -DUSE_OPENBLAS=ON -DOPENBLAS_ROOT='/opt/OpenBLAS' ..`
。
-
如项目计划启用CUDA数学运算库(需用户自行安装),则仅需在CMake命令中使用
`-DUSE_CUDA=ON`
参数,并通过
`-DCUDA_ROOT='/cuda/root/path'`
指定CUDA库的安装路径
。如
`cmake -DUSE_CUDA=ON -DCUDA_ROOT='/usr/local/cuda-9.2'
..`
。如需在GPU设备上使用半精度浮点数进行运算,需在启用
`-DUSE_CUDA=ON`
参数的同时启用
`-USE_HALF_PRECISION=ON`
参数(需要注意的是半精度但需要注意的是,半精度操作仅在使用Pascal及更新架构的NVIDIA GPU中提供支持,该项可参考
[
NVIDIA GPU设备信息
](
https://developer.nvidia.com/cuda-gpus
)
进行查询)。
-
如项目计划启用CUDA数学运算库(需用户自行安装),则仅需在CMake命令中使用
`-DUSE_CUDA=ON`
参数,并通过
`-DCUDA_ROOT='/cuda/root/path'`
指定CUDA库的安装路径
,通过-DGPU_ARCH=ARCH指定所在GPU设备的架构(K:Kepler架构;M:Maxwell架构;P:Pascal架构;V:Volta架构;T:Turing架构;A:Ampere架构)。如
`cmake -DUSE_CUDA=ON -DCUDA_ROOT='/usr/local/cuda-9.2' -DGPU_ARCH=P
..`
。如需在GPU设备上使用半精度浮点数进行运算,需在启用
`-DUSE_CUDA=ON`
参数的同时启用
`-USE_HALF_PRECISION=ON`
参数(需要注意的是半精度但需要注意的是,半精度操作仅在使用Pascal及更新架构的NVIDIA GPU中提供支持,该项可参考
[
NVIDIA GPU设备信息
](
https://developer.nvidia.com/cuda-gpus
)
进行查询)。
-
执行成功将显示
`Build files have been written to:...`
并在该目录下生成Makefile文件。
-
执行
`make -j`
命令对NiuTensor项目进行编译,执行成功将显示
`Built target NiuTensor`
,安装完毕。
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论