From aa253ffa8fd5e4c0aa74bb2a2e544258b878401c Mon Sep 17 00:00:00 2001 From: Ken He Date: Wed, 6 Apr 2022 21:33:16 +0800 Subject: [PATCH] Ken He --- .../config.json" | 2 +- .../GPU_Platform.md" | 16 +++++++++ .../config.json" | 4 ++- .../Install.md" | 17 +++++++++ .../config.json" | 4 ++- .../CUDA_compiler.md" | 14 ++++++++ .../config.json" | 4 ++- .../CUDA_thread.md" | 25 +++++++++++++ .../config.json" | 4 ++- .../communication.md" | 17 +++++++++ .../config.json" | 4 ++- .../config.json" | 4 ++- .../multi_thread.md" | 16 +++++++++ .../config.json" | 4 ++- .../thread_index.md" | 32 +++++++++++++++++ .../config.json" | 4 ++- .../multi_dim.md" | 36 +++++++++++++++++++ .../config.json" | 4 ++- .../grid_block.md" | 15 ++++++++ .../config.json" | 4 ++- .../mem1.md" | 17 +++++++++ .../config.json" | 4 ++- .../mem2.md" | 15 ++++++++ .../config.json" | 4 ++- .../mem3.md" | 16 +++++++++ .../config.json" | 4 ++- .../mem4.md" | 19 ++++++++++ .../config.json" | 4 ++- .../mem5.md" | 17 +++++++++ .../config.json" | 4 ++- .../mem6.md" | 15 ++++++++ .../config.json" | 4 ++- .../mem7.md" | 17 +++++++++ .../config.json" | 4 ++- .../mem8.md" | 18 ++++++++++ .../config.json" | 4 ++- .../mem8.md" | 14 ++++++++ .../config.json" | 4 ++- .../mem9.md" | 14 ++++++++ .../config.json" | 4 ++- .../mem10.md" | 0 41 files changed, 411 insertions(+), 21 deletions(-) create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/2.\344\273\213\347\273\215GPU\347\241\254\344\273\266\345\271\263\345\217\260/GPU_Platform.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/3.\347\216\257\345\242\203\345\256\211\350\243\205\351\205\215\347\275\256/Install.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/1.CUDA\347\250\213\345\272\217\347\232\204\347\274\226\350\257\221/CUDA_compiler.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/2.GPU\347\272\277\347\250\213\347\232\204\350\260\203\347\224\250/CUDA_thread.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/3.GPU\345\222\214CPU\347\232\204\351\200\232\350\256\257/communication.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/4.\344\275\277\347\224\250\345\244\232\344\270\252\347\272\277\347\250\213\347\232\204\346\240\270\345\207\275\346\225\260/multi_thread.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/5.\344\275\277\347\224\250\347\272\277\347\250\213\347\264\242\345\274\225/thread_index.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/6.\345\244\232\347\273\264\347\275\221\347\273\234/multi_dim.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/7.\347\275\221\346\240\274\344\270\216\347\272\277\347\250\213\345\235\227/grid_block.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/1.\350\256\276\345\244\207\345\210\235\345\247\213\345\214\226/mem1.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/2.GPU\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203/mem2.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/3.GPU\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\345\210\206\351\205\215\344\270\216\351\207\212\346\224\276/mem3.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/4.\346\225\260\346\215\256\347\232\204\344\274\240\350\276\223/mem4.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/5.\346\225\260\346\215\256\344\270\216\347\272\277\347\250\213\344\271\213\351\227\264\347\232\204\345\257\271\345\272\224\345\205\263\347\263\273/mem5.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/1.CUDA\344\270\255\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203\347\247\215\347\261\273/mem6.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/2.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250\346\226\271\346\263\225/mem7.md" create mode 100644 "data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/3.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\351\200\202\347\224\250\346\235\241\344\273\266/mem8.md" create mode 100644 "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/1.\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/mem8.md" create mode 100644 "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/2.\345\205\261\344\272\253\345\206\205\345\255\230\347\232\204Bank conflict/mem9.md" create mode 100644 "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" diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/1.\344\273\213\347\273\215GPU\346\236\266\346\236\204\344\273\245\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227\347\232\204\345\237\272\346\234\254\345\216\237\347\220\206/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/1.\344\273\213\347\273\215GPU\346\236\266\346\236\204\344\273\245\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227\347\232\204\345\237\272\346\234\254\345\216\237\347\220\206/config.json" index 475d553..26d5af2 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/1.\344\273\213\347\273\215GPU\346\236\266\346\236\204\344\273\245\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227\347\232\204\345\237\272\346\234\254\345\216\237\347\220\206/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/1.\344\273\213\347\273\215GPU\346\236\266\346\236\204\344\273\245\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227\347\232\204\345\237\272\346\234\254\345\216\237\347\220\206/config.json" @@ -3,7 +3,7 @@ "keywords": [], "children": [], "export": [ - "helloworld.json" + "GPU_arch.json" ], "keywords_must": [], "keywords_forbid": [] diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/2.\344\273\213\347\273\215GPU\347\241\254\344\273\266\345\271\263\345\217\260/GPU_Platform.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/2.\344\273\213\347\273\215GPU\347\241\254\344\273\266\345\271\263\345\217\260/GPU_Platform.md" new file mode 100644 index 0000000..cba640f --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/2.\344\273\213\347\273\215GPU\347\241\254\344\273\266\345\271\263\345\217\260/GPU_Platform.md" @@ -0,0 +1,16 @@ +# GPU硬件平台 +以下介绍GPU硬件平台 ***错误*** 的是? + +## 答案 +GPU(Graphics Processing Unit)最多可以同时执行几十个线程. + +## 选项 + +### A +GPU(Graphics Processing Unit) 专门用于高度并行计算,因此设计时更多的晶体管用于数据处理. + +### B +GPU(Graphics Processing Unit)可以通过计算隐藏内存访问延迟,而不是依靠大数据缓存和复杂的流控制来避免长时间的内存访问延迟. + +### C +GPU(Graphics Processing Unit)在相同的价格和功率范围内,比CPU提供更高的指令吞吐量和内存带宽. \ No newline at end of file diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/2.\344\273\213\347\273\215GPU\347\241\254\344\273\266\345\271\263\345\217\260/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/2.\344\273\213\347\273\215GPU\347\241\254\344\273\266\345\271\263\345\217\260/config.json" index d4ec1f8..41b7c19 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/2.\344\273\213\347\273\215GPU\347\241\254\344\273\266\345\271\263\345\217\260/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/2.\344\273\213\347\273\215GPU\347\241\254\344\273\266\345\271\263\345\217\260/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-8acef8aa3f7b479d90b7eaf77ff752eb", "keywords": [], "children": [], - "export": [], + "export": [ + "GPU_Platform.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/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/3.\347\216\257\345\242\203\345\256\211\350\243\205\351\205\215\347\275\256/Install.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/3.\347\216\257\345\242\203\345\256\211\350\243\205\351\205\215\347\275\256/Install.md" new file mode 100644 index 0000000..bb49dab --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/3.\347\216\257\345\242\203\345\256\211\350\243\205\351\205\215\347\275\256/Install.md" @@ -0,0 +1,17 @@ +# 环境安装配置 +以下介绍关于GPU环境安装配置 ***错误***的是? + +## 答案 +我可以在没有NVIDIA GPU的系统上使用CUDA + +## 选项 + +### A +CUDA可以安装在Windows操作系统中. + +### B +CUDA可以安装在Linux系统中. + +### C +CUDA可以安装在Jetson系统上 + diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/3.\347\216\257\345\242\203\345\256\211\350\243\205\351\205\215\347\275\256/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/3.\347\216\257\345\242\203\345\256\211\350\243\205\351\205\215\347\275\256/config.json" index dcbe330..c8aa125 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/3.\347\216\257\345\242\203\345\256\211\350\243\205\351\205\215\347\275\256/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/1.GPU\346\236\266\346\236\204\345\217\212\345\274\202\346\236\204\350\256\241\347\256\227/3.\347\216\257\345\242\203\345\256\211\350\243\205\351\205\215\347\275\256/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-f15df586747c4e648b6c6824c6b9b3e1", "keywords": [], "children": [], - "export": [], + "export": [ + "Install.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/2.\345\210\235\350\257\206CUDA/1.CUDA\347\250\213\345\272\217\347\232\204\347\274\226\350\257\221/CUDA_compiler.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/1.CUDA\347\250\213\345\272\217\347\232\204\347\274\226\350\257\221/CUDA_compiler.md" new file mode 100644 index 0000000..bac18cf --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/1.CUDA\347\250\213\345\272\217\347\232\204\347\274\226\350\257\221/CUDA_compiler.md" @@ -0,0 +1,14 @@ +# CUDA编译 +以下哪个编译器可以用来编译CUDA程序? + +## 答案 +nvcc + +## 选项 + +### A +gcc + +### B +g++ + diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/1.CUDA\347\250\213\345\272\217\347\232\204\347\274\226\350\257\221/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/1.CUDA\347\250\213\345\272\217\347\232\204\347\274\226\350\257\221/config.json" index 3f1afdb..8fa8800 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/1.CUDA\347\250\213\345\272\217\347\232\204\347\274\226\350\257\221/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/1.CUDA\347\250\213\345\272\217\347\232\204\347\274\226\350\257\221/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-25c9eacb75e64d00bff3d14ffdec7ea7", "keywords": [], "children": [], - "export": [], + "export": [ + "CUDA_compiler.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/2.\345\210\235\350\257\206CUDA/2.GPU\347\272\277\347\250\213\347\232\204\350\260\203\347\224\250/CUDA_thread.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/2.GPU\347\272\277\347\250\213\347\232\204\350\260\203\347\224\250/CUDA_thread.md" new file mode 100644 index 0000000..2082ad1 --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/2.GPU\347\272\277\347\250\213\347\232\204\350\260\203\347\224\250/CUDA_thread.md" @@ -0,0 +1,25 @@ +# CUDA线程 +在以下形式代码中调用kernel函数方式正确的是? + + +## 答案 +```C++ +kernel<<>>(a,b,c) +``` + +## 选项 + +### A +```C++ +kernel(a,b,c) +``` + +### B +```C++ +kernel<<>>(a,b,c) +``` + +### C +```C++ +kernel(a,b,c)<<>> +``` \ No newline at end of file diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/2.GPU\347\272\277\347\250\213\347\232\204\350\260\203\347\224\250/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/2.GPU\347\272\277\347\250\213\347\232\204\350\260\203\347\224\250/config.json" index 60d0896..eb94b55 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/2.GPU\347\272\277\347\250\213\347\232\204\350\260\203\347\224\250/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/2.GPU\347\272\277\347\250\213\347\232\204\350\260\203\347\224\250/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-4756f243773643fd8064aa5b4ffdb789", "keywords": [], "children": [], - "export": [], + "export": [ + "CUDA_thread.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/2.\345\210\235\350\257\206CUDA/3.GPU\345\222\214CPU\347\232\204\351\200\232\350\256\257/communication.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/3.GPU\345\222\214CPU\347\232\204\351\200\232\350\256\257/communication.md" new file mode 100644 index 0000000..a5a7541 --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/3.GPU\345\222\214CPU\347\232\204\351\200\232\350\256\257/communication.md" @@ -0,0 +1,17 @@ +# CPU和GPU的通讯 +以下说法中错误的是 + +## 答案 +\_\_device\_\_标注的函数可以在host端调用,并在host上执行 + +## 选项 + +### A +\_\_global\_\_标注的函数可以在host端调用,并在device上执行 + +### B +\_\_device\_\_标注的函数可以在device端调用,并在device上执行 + +### C +在最新的GPU架构上, \_\_global\_\_标注的函数可以在device端调用,并在device上执行. + diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/3.GPU\345\222\214CPU\347\232\204\351\200\232\350\256\257/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/3.GPU\345\222\214CPU\347\232\204\351\200\232\350\256\257/config.json" index f3f3f52..0560b7a 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/3.GPU\345\222\214CPU\347\232\204\351\200\232\350\256\257/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/3.GPU\345\222\214CPU\347\232\204\351\200\232\350\256\257/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-bf38379916ce44978c6bfa3ef3487c71", "keywords": [], "children": [], - "export": [], + "export": [ + "communication.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/2.\345\210\235\350\257\206CUDA/4.\344\275\277\347\224\250\345\244\232\344\270\252\347\272\277\347\250\213\347\232\204\346\240\270\345\207\275\346\225\260/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/4.\344\275\277\347\224\250\345\244\232\344\270\252\347\272\277\347\250\213\347\232\204\346\240\270\345\207\275\346\225\260/config.json" index 6a987eb..d29927f 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/4.\344\275\277\347\224\250\345\244\232\344\270\252\347\272\277\347\250\213\347\232\204\346\240\270\345\207\275\346\225\260/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/4.\344\275\277\347\224\250\345\244\232\344\270\252\347\272\277\347\250\213\347\232\204\346\240\270\345\207\275\346\225\260/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-8c79c6a5e3ca441a9cee430f312407bf", "keywords": [], "children": [], - "export": [], + "export": [ + "multi_thread.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/2.\345\210\235\350\257\206CUDA/4.\344\275\277\347\224\250\345\244\232\344\270\252\347\272\277\347\250\213\347\232\204\346\240\270\345\207\275\346\225\260/multi_thread.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/4.\344\275\277\347\224\250\345\244\232\344\270\252\347\272\277\347\250\213\347\232\204\346\240\270\345\207\275\346\225\260/multi_thread.md" new file mode 100644 index 0000000..225d0ad --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/4.\344\275\277\347\224\250\345\244\232\344\270\252\347\272\277\347\250\213\347\232\204\346\240\270\345\207\275\346\225\260/multi_thread.md" @@ -0,0 +1,16 @@ +# 使用多个线程的核函数 +以下说法错误的是? + +## 答案 +每个block内可以设置无限多个thread. + +## 选项 + +### A +核函数会被你设置的每一个线程执行. + +### B +CUDA中的grid和block可以是一维, 二维或者三维. + +### C +在host端代码中需要通常需要显示或者隐式的设置同步命令, 让CPU知道GPU中的线程执行完毕. diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/5.\344\275\277\347\224\250\347\272\277\347\250\213\347\264\242\345\274\225/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/5.\344\275\277\347\224\250\347\272\277\347\250\213\347\264\242\345\274\225/config.json" index 0d6aab6..93b4e92 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/5.\344\275\277\347\224\250\347\272\277\347\250\213\347\264\242\345\274\225/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/5.\344\275\277\347\224\250\347\272\277\347\250\213\347\264\242\345\274\225/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-b7fb5b2b91234dd89968918460ae506f", "keywords": [], "children": [], - "export": [], + "export": [ + "thread_index.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/2.\345\210\235\350\257\206CUDA/5.\344\275\277\347\224\250\347\272\277\347\250\213\347\264\242\345\274\225/thread_index.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/5.\344\275\277\347\224\250\347\272\277\347\250\213\347\264\242\345\274\225/thread_index.md" new file mode 100644 index 0000000..e25704d --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/5.\344\275\277\347\224\250\347\272\277\347\250\213\347\264\242\345\274\225/thread_index.md" @@ -0,0 +1,32 @@ +# CUDA线程 +在以下形式代码中调用kernel函数的前提下, 那每个线程的全局索引正确的是? +```C++ +dim3 gridDim = blocksPerGrid; +dim3 blockDim = threadsPerBlock; +.... +kernel<<>>(a,b,c) +.... + +``` + +## 答案 +```C++ +index = threadIdx.x + blockIdx.x * blockDim; +``` + +## 选项 + +### A +```C++ +index = threadIdx.x + blockDim; +``` + +### B +```C++ +index = threadIdx.x * threadDim; +``` + +### C +```C++ +index = blockIdx.x * blockDim; +``` \ No newline at end of file diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/6.\345\244\232\347\273\264\347\275\221\347\273\234/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/6.\345\244\232\347\273\264\347\275\221\347\273\234/config.json" index f3368d1..517ebff 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/6.\345\244\232\347\273\264\347\275\221\347\273\234/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/6.\345\244\232\347\273\264\347\275\221\347\273\234/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-ec664e92f8e2410b88226408d9bb9a9f", "keywords": [], "children": [], - "export": [], + "export": [ + "multi_dim.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/2.\345\210\235\350\257\206CUDA/6.\345\244\232\347\273\264\347\275\221\347\273\234/multi_dim.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/6.\345\244\232\347\273\264\347\275\221\347\273\234/multi_dim.md" new file mode 100644 index 0000000..10e7862 --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/6.\345\244\232\347\273\264\347\275\221\347\273\234/multi_dim.md" @@ -0,0 +1,36 @@ +# 多维网格 +以下代码调用kernel函数, 对于多维Grid中每个线程在***全局***中的索引(x, y)正确的是? +```C++ +dim3 gridDim = (blocksPerGrid, blocksPerGrid); +dim3 blockDim = (threadsPerBlock, threadsPerBlock); +.... +kernel<<>>(a,b,c) +.... + +``` + +## 答案 +```C++ +x = threadIdx.x + blockIdx.x * blockDim.x; +y = threadIdx.y + blockIdx.y * blockDim.y; +``` + +## 选项 + +### A +```C++ +x = threadIdx.x + blockIdx.x ; +y = threadIdx.y + blockIdx.y ; +``` + +### B +```C++ +x = threadIdx.x * blockDim.x ; +y = threadIdx.y * blockDim.y ; +``` + +### C +```C++ +x = threadIdx.x ; +y = threadIdx.y ; +``` diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/7.\347\275\221\346\240\274\344\270\216\347\272\277\347\250\213\345\235\227/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/7.\347\275\221\346\240\274\344\270\216\347\272\277\347\250\213\345\235\227/config.json" index 559225b..95ac2ff 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/7.\347\275\221\346\240\274\344\270\216\347\272\277\347\250\213\345\235\227/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/7.\347\275\221\346\240\274\344\270\216\347\272\277\347\250\213\345\235\227/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-70b301e021ef435f92c0f07b22adaa09", "keywords": [], "children": [], - "export": [], + "export": [ + "grid_block.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/2.\345\210\235\350\257\206CUDA/7.\347\275\221\346\240\274\344\270\216\347\272\277\347\250\213\345\235\227/grid_block.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/7.\347\275\221\346\240\274\344\270\216\347\272\277\347\250\213\345\235\227/grid_block.md" new file mode 100644 index 0000000..f4cd6dd --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/2.\345\210\235\350\257\206CUDA/7.\347\275\221\346\240\274\344\270\216\347\272\277\347\250\213\345\235\227/grid_block.md" @@ -0,0 +1,15 @@ +# 网格和线程块 +以下说法不正确的是? + +## 答案 + +一个kernel调用的所有线程肯定运行在同一个GPU上 + +## 选项 + +### A + +同一个Block中的线程一定会运行在同一个SM中 + +### B +一个Grid可以包含多个线程block diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/1.\350\256\276\345\244\207\345\210\235\345\247\213\345\214\226/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/1.\350\256\276\345\244\207\345\210\235\345\247\213\345\214\226/config.json" index c336ea1..5ceaa6a 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/1.\350\256\276\345\244\207\345\210\235\345\247\213\345\214\226/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/1.\350\256\276\345\244\207\345\210\235\345\247\213\345\214\226/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-5f99fc5469cf4907ba3ebe615287a6e9", "keywords": [], "children": [], - "export": [], + "export": [ + "mem1.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/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/1.\350\256\276\345\244\207\345\210\235\345\247\213\345\214\226/mem1.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/1.\350\256\276\345\244\207\345\210\235\345\247\213\345\214\226/mem1.md" new file mode 100644 index 0000000..01ad378 --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/1.\350\256\276\345\244\207\345\210\235\345\247\213\345\214\226/mem1.md" @@ -0,0 +1,17 @@ +# GPU 存储单元 + +以下关于GPU存储单元说法正确的是? + +## 答案 +在CPU上初始化的数据需要显式或者隐式的传输到GPU存储单元, 然后才能被CUDA线程读取. + +## 选项 + +### A +CUDA线程可以直接访问CPU中的内存设备. + +### B +CPU不可以对GPU中的Global Memory读写. + +### C +GPU内存读写带宽只与CUDA版本有关. \ No newline at end of file diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/2.GPU\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/2.GPU\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203/config.json" index 4430657..b45d7f3 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/2.GPU\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/2.GPU\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-f336472c4c244a68b4a2ee80dac8fdd0", "keywords": [], "children": [], - "export": [], + "export": [ + "mem2.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/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/2.GPU\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203/mem2.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/2.GPU\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203/mem2.md" new file mode 100644 index 0000000..ed9fb2d --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/2.GPU\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203/mem2.md" @@ -0,0 +1,15 @@ +# GPU的存储单元 + +下面关于GPU存储单元说法错误的是? + +## 答案 +CUDA线程有对所有类型的存储类型的读写权限 + +## 选项 + +### A +同一个Block内的线程可以通过 shared memory来进行协作 + +### B +CPU可以对GPU中的global memory, constant memory 和 texture memory进行读写 + diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/3.GPU\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\345\210\206\351\205\215\344\270\216\351\207\212\346\224\276/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/3.GPU\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\345\210\206\351\205\215\344\270\216\351\207\212\346\224\276/config.json" index e62adbe..d78cdb9 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/3.GPU\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\345\210\206\351\205\215\344\270\216\351\207\212\346\224\276/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/3.GPU\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\345\210\206\351\205\215\344\270\216\351\207\212\346\224\276/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-3443edc2ea5140b0a39f690382bf91e2", "keywords": [], "children": [], - "export": [], + "export": [ + "mem3.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/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/3.GPU\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\345\210\206\351\205\215\344\270\216\351\207\212\346\224\276/mem3.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/3.GPU\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\345\210\206\351\205\215\344\270\216\351\207\212\346\224\276/mem3.md" new file mode 100644 index 0000000..c96fe35 --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/3.GPU\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\345\210\206\351\205\215\344\270\216\351\207\212\346\224\276/mem3.md" @@ -0,0 +1,16 @@ +# GPU存储单元的分配与释放 + +下面关于GPU存储单元的分配与释放的说法错误的是? + +## 答案 +可以使用`cudaMemcpy(d_m, h_m, sizeof(int)*m*m, cudaMemcpyHostToDevice)` 的形式将数据从GPU传输给CPU + +## 选项 + +### A +可是使用`cudaMalloc()`函数来分配GPU存储空间 + +### B +可以使用`cudaFree()`函数来释放显存 + + diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/4.\346\225\260\346\215\256\347\232\204\344\274\240\350\276\223/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/4.\346\225\260\346\215\256\347\232\204\344\274\240\350\276\223/config.json" index 5759f37..7b033ec 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/4.\346\225\260\346\215\256\347\232\204\344\274\240\350\276\223/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/4.\346\225\260\346\215\256\347\232\204\344\274\240\350\276\223/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-2244dd4b61cc478094ba7013770f1f29", "keywords": [], "children": [], - "export": [], + "export": [ + "mem4.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/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/4.\346\225\260\346\215\256\347\232\204\344\274\240\350\276\223/mem4.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/4.\346\225\260\346\215\256\347\232\204\344\274\240\350\276\223/mem4.md" new file mode 100644 index 0000000..4930870 --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/4.\346\225\260\346\215\256\347\232\204\344\274\240\350\276\223/mem4.md" @@ -0,0 +1,19 @@ +# 数据传输 + +对于CUDA中的数据传输函数`cudaMemcpy(void *dst, const void *src, size_t count, cudaMemcpyKind kind) +`,以下说法错误的是? + +## 答案 + +count可以无限大 + +## 选项 + +### A +dst可以是由cudaMalloc()分配的,指向GPU内存的地址. + +### B +dst也可以是指向CPU内存的地址 + +### C +kind指的是数据传输方向 \ No newline at end of file diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/5.\346\225\260\346\215\256\344\270\216\347\272\277\347\250\213\344\271\213\351\227\264\347\232\204\345\257\271\345\272\224\345\205\263\347\263\273/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/5.\346\225\260\346\215\256\344\270\216\347\272\277\347\250\213\344\271\213\351\227\264\347\232\204\345\257\271\345\272\224\345\205\263\347\263\273/config.json" index 0b41cd4..921a832 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/5.\346\225\260\346\215\256\344\270\216\347\272\277\347\250\213\344\271\213\351\227\264\347\232\204\345\257\271\345\272\224\345\205\263\347\263\273/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/5.\346\225\260\346\215\256\344\270\216\347\272\277\347\250\213\344\271\213\351\227\264\347\232\204\345\257\271\345\272\224\345\205\263\347\263\273/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-3fa4ca2a53d74b9d92a11ba6a7f23306", "keywords": [], "children": [], - "export": [], + "export": [ + "mem5.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/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/5.\346\225\260\346\215\256\344\270\216\347\272\277\347\250\213\344\271\213\351\227\264\347\232\204\345\257\271\345\272\224\345\205\263\347\263\273/mem5.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/5.\346\225\260\346\215\256\344\270\216\347\272\277\347\250\213\344\271\213\351\227\264\347\232\204\345\257\271\345\272\224\345\205\263\347\263\273/mem5.md" new file mode 100644 index 0000000..2f8794c --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/3.CUDA\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250/5.\346\225\260\346\215\256\344\270\216\347\272\277\347\250\213\344\271\213\351\227\264\347\232\204\345\257\271\345\272\224\345\205\263\347\263\273/mem5.md" @@ -0,0 +1,17 @@ +# 数据存储单元与线程之间的对应关系 + +以下说法正确的是? + +## 答案 + +所有的线程都可以访问global memory + +## 选项 + +### A +每个线程都有自己的寄存器, 其他线程无法访问. + +### B +所有的线程都可以访问一个shared memory + + diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/1.CUDA\344\270\255\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203\347\247\215\347\261\273/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/1.CUDA\344\270\255\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203\347\247\215\347\261\273/config.json" index edbe359..21e1cd8 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/1.CUDA\344\270\255\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203\347\247\215\347\261\273/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/1.CUDA\344\270\255\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203\347\247\215\347\261\273/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-73f87372510e4546a282aea26e371e53", "keywords": [], "children": [], - "export": [], + "export": [ + "mem6.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/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/1.CUDA\344\270\255\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203\347\247\215\347\261\273/mem6.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/1.CUDA\344\270\255\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203\347\247\215\347\261\273/mem6.md" new file mode 100644 index 0000000..d4731ca --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/1.CUDA\344\270\255\347\232\204\345\255\230\345\202\250\345\215\225\345\205\203\347\247\215\347\261\273/mem6.md" @@ -0,0 +1,15 @@ +# CUDA中的多种存储单元类型 + +下面关于CUDA中的多种存储单元说法错误的是? + +## 答案 +Register和Shared memory有很多, 每个线程更多的占用它们,可以让更多的block驻留在SM中 + +## 选项 + +### A +GPU上有onchip和onboard的存储单元类型 + +### B +Onchip的存储单元包括Register 和 Shared memory + diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/2.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250\346\226\271\346\263\225/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/2.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250\346\226\271\346\263\225/config.json" index 512b46d..2b13885 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/2.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250\346\226\271\346\263\225/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/2.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250\346\226\271\346\263\225/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-3347d61cb34745a4adbe216f6eca305c", "keywords": [], "children": [], - "export": [], + "export": [ + "mem7.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/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/2.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250\346\226\271\346\263\225/mem7.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/2.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250\346\226\271\346\263\225/mem7.md" new file mode 100644 index 0000000..00bc985 --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/2.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\344\275\277\347\224\250\346\226\271\346\263\225/mem7.md" @@ -0,0 +1,17 @@ +# CUDA中的多种存储单元 +下面关于GPU中多种存储单元的说法错误的是? + +## 答案 +内核无法使用多于可用寄存器数量的任何变量(这也称为寄存器溢出) + +## 选项 + +### A +寄存器变量是每个线程私有的,一旦thread执行结束,寄存器变量就会失效 + +### B +同一个Block中的线程共享一块Shared Memory + +### C +在同一个编译单元,constant对所有kernel可见 + diff --git "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/3.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\351\200\202\347\224\250\346\235\241\344\273\266/config.json" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/3.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\351\200\202\347\224\250\346\235\241\344\273\266/config.json" index 0359065..2e7aa63 100644 --- "a/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/3.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\351\200\202\347\224\250\346\235\241\344\273\266/config.json" +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/3.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\351\200\202\347\224\250\346\235\241\344\273\266/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-73179a76ecd34f5dbf8e53b3a1e84228", "keywords": [], "children": [], - "export": [], + "export": [ + "mem8.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/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/3.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\351\200\202\347\224\250\346\235\241\344\273\266/mem8.md" "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/3.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\351\200\202\347\224\250\346\235\241\344\273\266/mem8.md" new file mode 100644 index 0000000..59b6b0b --- /dev/null +++ "b/data/1.CUDA\345\205\245\351\227\250\345\210\235\351\230\266/4.\345\244\232\347\247\215CUDA\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/3.CUDA\344\270\255\347\232\204\345\220\204\347\247\215\345\255\230\345\202\250\345\215\225\345\205\203\347\232\204\351\200\202\347\224\250\346\235\241\344\273\266/mem8.md" @@ -0,0 +1,18 @@ +# CUDA中的多种存储单元 + +下面对于CUDA中的多种存储单元说法错误的是? + +## 答案 +Texture Memory驻留在onchip Memory中,并且使用一个只读cache. + +## 选项 + +### A +当一个warp中所有thread都从同一个Constant Memory地址读取数据时,Constant Memory表现会非常好,会触发广播机制. + +### B +Texture Mmeory是专门为那些在内存访问模式中存在大量空间局部性(Spatial Locality)的图形应用程序而设计的. + +### C +Global Memory驻留在Device memory中. + 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/1.\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/config.json" "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/1.\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/config.json" index 8199ec0..5e1a24a 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/1.\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/config.json" +++ "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/1.\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-8965afc1396c4aad8fa3eaa203b6e3ac", "keywords": [], "children": [], - "export": [], + "export": [ + "mem8.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/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/1.\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/mem8.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/1.\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/mem8.md" new file mode 100644 index 0000000..797e882 --- /dev/null +++ "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/1.\345\205\261\344\272\253\345\255\230\345\202\250\345\215\225\345\205\203\350\257\246\350\247\243/mem8.md" @@ -0,0 +1,14 @@ +# 共享内存 +下面关于共享内存的说法错误的是? + +## 答案 +Shared Memory可以被设置成512KB,1024KB ,2048KB…剩下的给L1缓存 + +## 选项 + +### A +有可能会出现同时有很多线程访问Shared Memory上的数据 + +### B +为了克服这个同时访问的瓶颈,Shared Memory被分成32个逻辑块(banks) + 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/2.\345\205\261\344\272\253\345\206\205\345\255\230\347\232\204Bank conflict/config.json" "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/2.\345\205\261\344\272\253\345\206\205\345\255\230\347\232\204Bank conflict/config.json" index 1e56c8f..6b58c31 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/2.\345\205\261\344\272\253\345\206\205\345\255\230\347\232\204Bank conflict/config.json" +++ "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/2.\345\205\261\344\272\253\345\206\205\345\255\230\347\232\204Bank conflict/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-3c183e532dcd44d88311a778f6958916", "keywords": [], "children": [], - "export": [], + "export": [ + "mem9.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/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/2.\345\205\261\344\272\253\345\206\205\345\255\230\347\232\204Bank conflict/mem9.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/2.\345\205\261\344\272\253\345\206\205\345\255\230\347\232\204Bank conflict/mem9.md" new file mode 100644 index 0000000..1dfff31 --- /dev/null +++ "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/2.\345\205\261\344\272\253\345\206\205\345\255\230\347\232\204Bank conflict/mem9.md" @@ -0,0 +1,14 @@ +# 共享内存 +下面关于共享内存说法错误的是? + +## 答案 + +同一个warp 内多个线程访问同一个bank的同一个地址时,会出现bank冲突. + +## 选项 + +### A +同常量内存一样,当一个 warp 中的所有线程访问同一地址的共享内存时,会触发一个广播(broadcast)机制到 warp 中所有线程. + +### B +同一个warp 内多个线程访问同一个bank的不同地址时,会出现bank冲突. \ No newline at end of file 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/config.json" "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/config.json" index eb509a2..3774bac 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/config.json" +++ "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/config.json" @@ -2,7 +2,9 @@ "node_id": "cuda-6560fcc5a5c9465b84aa0f15b9576b79", "keywords": [], "children": [], - "export": [], + "export": [ + "mem10.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/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" new file mode 100644 index 0000000..e69de29 -- GitLab