aboutsummaryrefslogtreecommitdiff
path: root/zh
diff options
context:
space:
mode:
authorOpportunityLiu <opportunity@live.in>2019-06-02 15:26:26 +0800
committerOpportunityLiu <opportunity@live.in>2019-06-02 15:26:26 +0800
commit8cb46236f41ac5476f2fe38353156db4c8195325 (patch)
treedbfdcebcbad16003659403b66b96236f50f3f7a3 /zh
parent57095aa985ac1526240563ae1845e360c81db708 (diff)
downloadxmake-docs-8cb46236f41ac5476f2fe38353156db4c8195325.tar.gz
xmake-docs-8cb46236f41ac5476f2fe38353156db4c8195325.zip
add docs for find_cudadevices; improve docs for cuda templates
Related: xmake-io/xmake#430, xmake-io/xmake#431
Diffstat (limited to 'zh')
-rw-r--r--zh/README.md21
-rw-r--r--zh/manual.md18
2 files changed, 28 insertions, 11 deletions
diff --git a/zh/README.md b/zh/README.md
index af6ba511..db25f4bb 100644
--- a/zh/README.md
+++ b/zh/README.md
@@ -250,6 +250,7 @@ target("hello")
* c/c++
* objc/c++
+* cuda
* asm
* swift
* dlang
@@ -452,22 +453,19 @@ $ xmake
```
```lua
+-- add helper function add_cugencode
+includes('add_cugencode.lua')
+-- define target
target("cuda_console")
set_kind("binary")
add_files("src/*.cu")
-
- -- generate SASS code for each SM architecture
- for _, sm in ipairs({"30", "35", "37", "50", "52", "60", "61", "70"}) do
- add_cuflags("-gencode arch=compute_" .. sm .. ",code=sm_" .. sm)
- add_ldflags("-gencode arch=compute_" .. sm .. ",code=sm_" .. sm)
- end
-
- -- generate PTX code from the highest SM architecture to guarantee forward-compatibility
- sm = "70"
- add_cuflags("-gencode arch=compute_" .. sm .. ",code=compute_" .. sm)
- add_ldflags("-gencode arch=compute_" .. sm .. ",code=compute_" .. sm)
+ -- generate SASS code for SM architecture of current host
+ add_cugencode("native")
+ -- generate PTX code for the virtual architecture to guarantee compatibility
+ add_cugencode("compute_30")
```
+
默认会自动探测cuda环境,当然也可以指定Cuda SDK环境目录:
```console
@@ -772,6 +770,7 @@ $ xmake
| [--rc-ld](#-rc-ld) | 设置`rust`链接器 |
| [--rc-sh](#-rc-sh) | 设置`rust`共享库链接器 |
| [--rc-ar](#-rc-ar) | 设置`rust`静态库归档器 |
+| [--cu-cxx](#-cu-cxx) | 设置`cuda` host编译器 |
| [--cu-ld](#-cu-ld) | 设置`cuda`链接器 |
| [--cu-sh](#-cu-sh) | 设置`cuda`共享库链接器 |
| [--cu-ar](#-cu-ar) | 设置`cuda`静态库归档器 |
diff --git a/zh/manual.md b/zh/manual.md
index d1cbb270..4fc58bcf 100644
--- a/zh/manual.md
+++ b/zh/manual.md
@@ -7632,6 +7632,7 @@ environment.leave("toolchains")
| [detect.find_package](#detect-find_package) | 查找包文件,包含库文件和搜索路径 | >= 2.1.5 |
| [detect.find_tool](#detect-find_tool) | 查找工具 | >= 2.1.5 |
| [detect.find_toolname](#detect-find_toolname) | 查找工具名 | >= 2.1.5 |
+| [detect.find_cudadevices](#detect-find_cudadevices) | 查找本机的 CUDA 设备 | >= 2.2.7 |
| [detect.features](#detect-features) | 获取指定工具的所有特性 | >= 2.1.5 |
| [detect.has_features](#detect-has_features) | 判断指定特性是否支持 | >= 2.1.5 |
| [detect.has_flags](#detect-has_flags) | 判断指定参数选项是否支持 | >= 2.1.5 |
@@ -8162,6 +8163,23 @@ end
toolname相比program,更能唯一标示某个工具,也方便查找和加载对应的脚本`find_xxx.lua`。
+###### detect.find_cudadevices
+
+- 查找本机的 CUDA 设备
+
+通过 CUDA Runtime API 枚举本机的 CUDA 设备,并查询其属性。
+
+```lua
+import("lib.detect.find_cudadevices")
+
+local devices = find_cudadevices({ skip_compute_mode_prohibited = true })
+local devices = find_cudadevices({ min_sm_arch = 35, order_by_flops = true })
+```
+
+返回的结果为:`{ { ['$id'] = 0, name = "GeForce GTX 960M", major = 5, minor = 0, ... }, ... }`
+
+包含的属性依据当前 CUDA 版本会有所不同,可以参考 [CUDA 官方文档](https://docs.nvidia.com/cuda/cuda-runtime-api/structcudaDeviceProp.html#structcudaDeviceProp)及其历史版本。
+
###### detect.features
- 获取指定工具的所有特性