From 5d6c3e036735302ab27d49e7a71799787d8a96ef Mon Sep 17 00:00:00 2001 From: Ken He Date: Wed, 6 Apr 2022 22:53:05 +0800 Subject: [PATCH] Ken He --- .../mem10.md" | 16 +++++++++ .../config.json" | 4 ++- .../mem11.md" | 16 +++++++++ .../config.json" | 4 ++- .../error.md" | 16 +++++++++ .../config.json" | 4 ++- .../event.md" | 23 +++++++++++++ .../atom.md" | 16 +++++++++ .../config.json" | 4 ++- .../atom1.md" | 16 +++++++++ .../config.json" | 4 ++- .../config.json" | 4 ++- .../stream.md" | 15 +++++++++ .../config.json" | 4 ++- .../stream1.md" | 13 ++++++++ .../config.json" | 4 ++- .../stream2.md" | 33 +++++++++++++++++++ 17 files changed, 188 insertions(+), 8 deletions(-) create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/6.\347\273\237\344\270\200\345\206\205\345\255\230/1.\347\273\237\344\270\200\345\206\205\345\255\230\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\344\275\277\347\224\250/mem11.md" create mode 100644 "data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/1.CUDA\345\272\224\347\224\250\347\250\213\345\272\217\350\277\220\350\241\214\346\227\266\347\232\204\351\224\231\350\257\257\346\243\200\346\265\213/error.md" create mode 100644 "data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/2.CUDA\344\270\255\347\232\204\344\272\213\344\273\266/event.md" create mode 100644 "data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/1.CUDA\344\270\255\347\232\204\345\216\237\345\255\220\346\223\215\344\275\234/atom.md" create mode 100644 "data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/2.\345\216\237\345\255\220\346\223\215\344\275\234\347\232\204\351\200\202\347\224\250\345\234\272\346\231\257/atom1.md" create mode 100644 "data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/1.CUDA\346\265\201\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265/stream.md" create mode 100644 "data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/2.\351\273\230\350\256\244\346\265\201\344\270\216\351\235\236\351\273\230\350\256\244\346\265\201/stream1.md" create mode 100644 "data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/3.\345\210\251\347\224\250CUDA\346\265\201\351\207\215\345\217\240\350\256\241\347\256\227\345\222\214\346\225\260\346\215\256\344\274\240\350\276\223/stream2.md" diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/5.\345\210\251\347\224\250\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\344\274\230\345\214\226\345\272\224\347\224\250/3.\345\210\251\347\224\250\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\277\233\350\241\214\347\237\251\351\230\265\350\275\254\347\275\256\345\222\214\347\237\251\351\230\265\344\271\230\347\247\257/mem10.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/5.\345\210\251\347\224\250\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\344\274\230\345\214\226\345\272\224\347\224\250/3.\345\210\251\347\224\250\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\277\233\350\241\214\347\237\251\351\230\265\350\275\254\347\275\256\345\222\214\347\237\251\351\230\265\344\271\230\347\247\257/mem10.md" index e69de29..0b94022 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/5.\345\210\251\347\224\250\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\344\274\230\345\214\226\345\272\224\347\224\250/3.\345\210\251\347\224\250\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\277\233\350\241\214\347\237\251\351\230\265\350\275\254\347\275\256\345\222\214\347\237\251\351\230\265\344\271\230\347\247\257/mem10.md" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/5.\345\210\251\347\224\250\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\344\274\230\345\214\226\345\272\224\347\224\250/3.\345\210\251\347\224\250\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\277\233\350\241\214\347\237\251\351\230\265\350\275\254\347\275\256\345\222\214\347\237\251\351\230\265\344\271\230\347\247\257/mem10.md" @@ -0,0 +1,16 @@ +# 利用共享存储单元优化程序 + +下面关于共享存储单元的说法错误的是? + +## 答案 + +驻留在一个SM中的block中的线程如果shared memory不够用, 可以利用其他SM中的shared memory + +## 选项 + +### A + +在优化矩阵乘的过程中, 我们可以利用shared memory减少从global memory中数据的读取次数. + +### B +同一Block中的线程可以利用shared memory进行协作. diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/6.\347\273\237\344\270\200\345\206\205\345\255\230/1.\347\273\237\344\270\200\345\206\205\345\255\230\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\344\275\277\347\224\250/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/6.\347\273\237\344\270\200\345\206\205\345\255\230/1.\347\273\237\344\270\200\345\206\205\345\255\230\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\344\275\277\347\224\250/config.json" index fbc2e0d..4e3c9f6 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/6.\347\273\237\344\270\200\345\206\205\345\255\230/1.\347\273\237\344\270\200\345\206\205\345\255\230\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\344\275\277\347\224\250/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/6.\347\273\237\344\270\200\345\206\205\345\255\230/1.\347\273\237\344\270\200\345\206\205\345\255\230\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\344\275\277\347\224\250/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-e2ec9573577d42fdbed66392ffc835d3", "keywords": [], "children": [], - "export": [], + "export": [ + "mem11.md" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/6.\347\273\237\344\270\200\345\206\205\345\255\230/1.\347\273\237\344\270\200\345\206\205\345\255\230\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\344\275\277\347\224\250/mem11.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/6.\347\273\237\344\270\200\345\206\205\345\255\230/1.\347\273\237\344\270\200\345\206\205\345\255\230\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\344\275\277\347\224\250/mem11.md" new file mode 100644 index 0000000..091b72a --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/6.\347\273\237\344\270\200\345\206\205\345\255\230/1.\347\273\237\344\270\200\345\206\205\345\255\230\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265\345\222\214\344\275\277\347\224\250/mem11.md" @@ -0,0 +1,16 @@ +# 统一内存的基本概念 + +以下关于统一内存的说法错误的是? + +## 答案 + +申请的统一内存不需要进行数据传输,所以不受硬件带宽限制(如: PCIE等). + +## 选项 + +### A +不需要手动拷贝数据. + +### B +可以利用cudaMallocManaged() 函数分配统一内存. + diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/1.CUDA\345\272\224\347\224\250\347\250\213\345\272\217\350\277\220\350\241\214\346\227\266\347\232\204\351\224\231\350\257\257\346\243\200\346\265\213/config.json" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/1.CUDA\345\272\224\347\224\250\347\250\213\345\272\217\350\277\220\350\241\214\346\227\266\347\232\204\351\224\231\350\257\257\346\243\200\346\265\213/config.json" index 5a78d0e..e2d3225 100644 --- "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/1.CUDA\345\272\224\347\224\250\347\250\213\345\272\217\350\277\220\350\241\214\346\227\266\347\232\204\351\224\231\350\257\257\346\243\200\346\265\213/config.json" +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/1.CUDA\345\272\224\347\224\250\347\250\213\345\272\217\350\277\220\350\241\214\346\227\266\347\232\204\351\224\231\350\257\257\346\243\200\346\265\213/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-634b3d9492044bafb7a089431c878879", "keywords": [], "children": [], - "export": [], + "export": [ + "error.md" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/1.CUDA\345\272\224\347\224\250\347\250\213\345\272\217\350\277\220\350\241\214\346\227\266\347\232\204\351\224\231\350\257\257\346\243\200\346\265\213/error.md" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/1.CUDA\345\272\224\347\224\250\347\250\213\345\272\217\350\277\220\350\241\214\346\227\266\347\232\204\351\224\231\350\257\257\346\243\200\346\265\213/error.md" new file mode 100644 index 0000000..6f214b7 --- /dev/null +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/1.CUDA\345\272\224\347\224\250\347\250\213\345\272\217\350\277\220\350\241\214\346\227\266\347\232\204\351\224\231\350\257\257\346\243\200\346\265\213/error.md" @@ -0,0 +1,16 @@ +# CUDA 错误检测 + +下面关于CUDA错误检测错误的是? + +## 答案 + +当异步函数发生错误的时候, 会马上终止并报告错误代码. + +## 选项 + +### A +运行时函数会返回错误代码. + +### B +内核启动不返回任何错误代码,因此必须在内核启动后立即调用 `cudaPeekAtLastError()` 或 `cudaGetLastError()` 以检索任何启动前错误. + diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/2.CUDA\344\270\255\347\232\204\344\272\213\344\273\266/config.json" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/2.CUDA\344\270\255\347\232\204\344\272\213\344\273\266/config.json" index 85753c5..daecbf5 100644 --- "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/2.CUDA\344\270\255\347\232\204\344\272\213\344\273\266/config.json" +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/2.CUDA\344\270\255\347\232\204\344\272\213\344\273\266/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-5a542af3254b49a8ab5266364d421e47", "keywords": [], "children": [], - "export": [], + "export": [ + "event.md" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/2.CUDA\344\270\255\347\232\204\344\272\213\344\273\266/event.md" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/2.CUDA\344\270\255\347\232\204\344\272\213\344\273\266/event.md" new file mode 100644 index 0000000..27311d6 --- /dev/null +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/1.CUA\351\224\231\350\257\257\346\243\200\346\265\213\344\270\216\344\272\213\344\273\266/2.CUDA\344\270\255\347\232\204\344\272\213\344\273\266/event.md" @@ -0,0 +1,23 @@ +# 事件 +下面关于CUDA编程模型中的event说法错误的是? + +## 答案 + +CUDA运行时提供了一种密切监视设备进度以及执行准确计时的方法,方法是让应用程序同步记录程序中任何点的事件 + +## 选项 + +### A +以下代码示例创建`start`, `stop`两个事件: +```C++ +cudaEvent_t start, stop; +cudaEventCreate(&start); +cudaEventCreate(&stop); +``` + +### B +可以利用以下代码销毁event: +```C++ +cudaEventDestroy(start); +cudaEventDestroy(stop); +``` diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/1.CUDA\344\270\255\347\232\204\345\216\237\345\255\220\346\223\215\344\275\234/atom.md" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/1.CUDA\344\270\255\347\232\204\345\216\237\345\255\220\346\223\215\344\275\234/atom.md" new file mode 100644 index 0000000..ea26857 --- /dev/null +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/1.CUDA\344\270\255\347\232\204\345\216\237\345\255\220\346\223\215\344\275\234/atom.md" @@ -0,0 +1,16 @@ +# 原子操作 +下面关于CUDA中原子操作错误的是? + +## 答案 + +原子函数可以在GPU或者CPU上执行 + +## 选项 + +### A +原子函数对驻留在全局或共享内存中的一个 32 位或 64 位字执行读-修改-写原子操作. + +### B +原子操作保证在不受其他线程干扰的情况下执行。 换句话说,在操作完成之前,没有其他线程可以访问它处理数据的地址。 + + diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/1.CUDA\344\270\255\347\232\204\345\216\237\345\255\220\346\223\215\344\275\234/config.json" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/1.CUDA\344\270\255\347\232\204\345\216\237\345\255\220\346\223\215\344\275\234/config.json" index 1de04db..c79c8f8 100644 --- "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/1.CUDA\344\270\255\347\232\204\345\216\237\345\255\220\346\223\215\344\275\234/config.json" +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/1.CUDA\344\270\255\347\232\204\345\216\237\345\255\220\346\223\215\344\275\234/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-10a7cead25f14eeaaf0730ff2468cb90", "keywords": [], "children": [], - "export": [], + "export": [ + "atom.md" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/2.\345\216\237\345\255\220\346\223\215\344\275\234\347\232\204\351\200\202\347\224\250\345\234\272\346\231\257/atom1.md" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/2.\345\216\237\345\255\220\346\223\215\344\275\234\347\232\204\351\200\202\347\224\250\345\234\272\346\231\257/atom1.md" new file mode 100644 index 0000000..a765357 --- /dev/null +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/2.\345\216\237\345\255\220\346\223\215\344\275\234\347\232\204\351\200\202\347\224\250\345\234\272\346\231\257/atom1.md" @@ -0,0 +1,16 @@ +# 原子操作 + +下面关于原子操作的说法正确的是? + +## 答案 + +原子操作可以处理CPU内存的数据 + +## 选项 + +### A +原子操作可以处理GPU中global memory的数据. + +### B +原子操作可以处理GPU中shared memory的数据. + diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/2.\345\216\237\345\255\220\346\223\215\344\275\234\347\232\204\351\200\202\347\224\250\345\234\272\346\231\257/config.json" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/2.\345\216\237\345\255\220\346\223\215\344\275\234\347\232\204\351\200\202\347\224\250\345\234\272\346\231\257/config.json" index b034343..16a4f30 100644 --- "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/2.\345\216\237\345\255\220\346\223\215\344\275\234\347\232\204\351\200\202\347\224\250\345\234\272\346\231\257/config.json" +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/2.\345\216\237\345\255\220\346\223\215\344\275\234/2.\345\216\237\345\255\220\346\223\215\344\275\234\347\232\204\351\200\202\347\224\250\345\234\272\346\231\257/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-9e74b1fb163e46bb8cc2e72b3c9990a9", "keywords": [], "children": [], - "export": [], + "export": [ + "atom1.md" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/1.CUDA\346\265\201\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265/config.json" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/1.CUDA\346\265\201\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265/config.json" index 9a5b574..8ea3e13 100644 --- "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/1.CUDA\346\265\201\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265/config.json" +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/1.CUDA\346\265\201\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-a95b22ce131e42979daabc1f2ec82886", "keywords": [], "children": [], - "export": [], + "export": [ + "stream.md" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/1.CUDA\346\265\201\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265/stream.md" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/1.CUDA\346\265\201\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265/stream.md" new file mode 100644 index 0000000..f191f5b --- /dev/null +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/1.CUDA\346\265\201\347\232\204\345\237\272\346\234\254\346\246\202\345\277\265/stream.md" @@ -0,0 +1,15 @@ +# CUDA流 +下面关于CUDA流的说法错误的是? + +## 答案 + +CUDA流只能在设备代码中调用执行. + +## 选项 + +### A +流是按顺序执行的命令序列(可能由不同的主机线程发出). + +### B +不同的流可能会彼此乱序或同时执行它们的命令. + diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/2.\351\273\230\350\256\244\346\265\201\344\270\216\351\235\236\351\273\230\350\256\244\346\265\201/config.json" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/2.\351\273\230\350\256\244\346\265\201\344\270\216\351\235\236\351\273\230\350\256\244\346\265\201/config.json" index f54c0af..4e7ea31 100644 --- "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/2.\351\273\230\350\256\244\346\265\201\344\270\216\351\235\236\351\273\230\350\256\244\346\265\201/config.json" +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/2.\351\273\230\350\256\244\346\265\201\344\270\216\351\235\236\351\273\230\350\256\244\346\265\201/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-93c84af94c154430b93094befb70f5c8", "keywords": [], "children": [], - "export": [], + "export": [ + "stream1.md" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/2.\351\273\230\350\256\244\346\265\201\344\270\216\351\235\236\351\273\230\350\256\244\346\265\201/stream1.md" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/2.\351\273\230\350\256\244\346\265\201\344\270\216\351\235\236\351\273\230\350\256\244\346\265\201/stream1.md" new file mode 100644 index 0000000..f998598 --- /dev/null +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/2.\351\273\230\350\256\244\346\265\201\344\270\216\351\235\236\351\273\230\350\256\244\346\265\201/stream1.md" @@ -0,0 +1,13 @@ +# CUDA流 +下面关于CUDA流的说法是错误的是? + +## 答案 +调用`cudaStreamSynchronize()` 函数, 程序会一直等待,直到所有主机线程的所有流中的所有先前命令都完成. +## 选项 + +### A +未指定任何流参数或等效地将流参数设置为零的内核启动和主机 <-> 设备内存拷贝将发布到默认流. + +### B +调用`cudaDeviceSynchronize()`函数, 程序会一直等待,直到所有主机线程的所有流中的所有先前命令都完成. + diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/3.\345\210\251\347\224\250CUDA\346\265\201\351\207\215\345\217\240\350\256\241\347\256\227\345\222\214\346\225\260\346\215\256\344\274\240\350\276\223/config.json" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/3.\345\210\251\347\224\250CUDA\346\265\201\351\207\215\345\217\240\350\256\241\347\256\227\345\222\214\346\225\260\346\215\256\344\274\240\350\276\223/config.json" index 35acf4b..de34c41 100644 --- "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/3.\345\210\251\347\224\250CUDA\346\265\201\351\207\215\345\217\240\350\256\241\347\256\227\345\222\214\346\225\260\346\215\256\344\274\240\350\276\223/config.json" +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/3.\345\210\251\347\224\250CUDA\346\265\201\351\207\215\345\217\240\350\256\241\347\256\227\345\222\214\346\225\260\346\215\256\344\274\240\350\276\223/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-24b5313252644192b40894d9d677a40f", "keywords": [], "children": [], - "export": [], + "export": [ + "stream2.md" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/3.\345\210\251\347\224\250CUDA\346\265\201\351\207\215\345\217\240\350\256\241\347\256\227\345\222\214\346\225\260\346\215\256\344\274\240\350\276\223/stream2.md" "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/3.\345\210\251\347\224\250CUDA\346\265\201\351\207\215\345\217\240\350\256\241\347\256\227\345\222\214\346\225\260\346\215\256\344\274\240\350\276\223/stream2.md" new file mode 100644 index 0000000..cbfaff8 --- /dev/null +++ "b/data/2.CUDA\345\205\245\351\227\250\344\270\255\351\230\266/3.CUDA stream/3.\345\210\251\347\224\250CUDA\346\265\201\351\207\215\345\217\240\350\256\241\347\256\227\345\222\214\346\225\260\346\215\256\344\274\240\350\276\223/stream2.md" @@ -0,0 +1,33 @@ +# CUDA流 +下面关于CUDA流的说法错误的是? + +## 答案 +以下设备操作对主机不是异步的: + +* 内核启动; +* 内存复制在单个设备的内存中; +* 从主机到设备内存拷贝的内存块大小不超过64kb的; +* 由带有Async后缀的函数执行的内存拷贝; +* 内存设置函数调用。 + +## 选项 + +### A +如果主机线程在它们之间发出以下任一操作,则来自不同流的两个命令不能同时运行: + +* 页面锁定的主机内存分配, +* 设备内存分配, +* 设备内存设置, +* 两个地址之间的内存拷贝到同一设备内存, +* 对 NULL 流的任何 CUDA 命令, +* 计算能力 3.x 和计算能力 7.x 中描述的 L1/共享内存配置之间的切换。 + +### B +CUDA 将以下操作公开为可以彼此同时操作的独立任务: + +* 在主机上计算; +* 设备上的计算; +* 从主机到设备的内存传输; +* 从设备到主机的内存传输; +* 在给定设备的内存中进行内存传输; +* 设备之间的内存传输。 \ No newline at end of file -- GitLab