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" index cba640f8e93915ceeab77fb934b3a170be79135b..d462a1c27d0e245db36cc08a9aa7efca3ae2eafb 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/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" @@ -1,16 +1,21 @@ # 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/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" index bb49dabe7a3d9934b40ce1ea42516121ef3ce70e..90d2560754505a0a248907bff63e51b3b4ab90d0 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/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" @@ -1,17 +1,22 @@ # 环境安装配置 + 以下介绍关于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/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" index bac18cf608444ab8477999a0e1bccc67fe4a0797..5d8b1d59e9d626251fd4d48a47319e4b157c5424 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/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" @@ -2,13 +2,20 @@ 以下哪个编译器可以用来编译CUDA程序? ## 答案 + nvcc ## 选项 ### A + gcc ### B + g++ +### C + +clang + 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" index 1e52360322e44836c7b592479cd697db4735f5dc..c797ce6cc4853eb2e10b25b8ad76e7720347d768 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/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" @@ -4,6 +4,7 @@ ## 答案 + ```C++ kernel<<>>(a,b,c) ``` @@ -11,16 +12,19 @@ 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/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" index a5a75413f227eef354724301b58c44d1ad8431e2..554765d6df48db5cdcab9bc3634fd414d6b4bca5 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/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" @@ -1,17 +1,22 @@ # 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/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" index 225d0ad8bddb72a1d92abe57c168028448f02d94..8542359f3af0a32f1051f347dd54914e54bd196d 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/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" @@ -1,16 +1,21 @@ # 使用多个线程的核函数 + 以下说法错误的是? ## 答案 + 每个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/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" index e25704d418dce22333a81aeaa1cbdf123e520fea..b784b398fce7980ea8b52bb4aa97e58813decc9b 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/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" @@ -1,5 +1,7 @@ # CUDA线程 + 在以下形式代码中调用kernel函数的前提下, 那每个线程的全局索引正确的是? + ```C++ dim3 gridDim = blocksPerGrid; dim3 blockDim = threadsPerBlock; @@ -10,6 +12,7 @@ kernel<<>>(a,b,c) ``` ## 答案 + ```C++ index = threadIdx.x + blockIdx.x * blockDim; ``` @@ -17,16 +20,19 @@ 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/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" index 348c7ab252215751e8c36e76237d4f336a6110ac..daeb55af5ca506cabdcbd4f155603239c70171f8 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/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" @@ -1,5 +1,7 @@ # 多维网格 + 以下代码调用kernel函数, 对于多维Grid中每个线程在***全局***中的索引(x, y)正确的是? + ```C++ dim3 gridDim = (blocksPerGrid, blocksPerGrid); dim3 blockDim = (threadsPerBlock, threadsPerBlock); 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" index f4cd6dd919b6c436b4614fa80fb1ffc0961c03a5..a293ab78c1288976489c2bde164d8a6b7afb457c 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/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" @@ -1,4 +1,5 @@ # 网格和线程块 + 以下说法不正确的是? ## 答案 @@ -12,4 +13,10 @@ 同一个Block中的线程一定会运行在同一个SM中 ### B + 一个Grid可以包含多个线程block + + +### C + +一个Grid可以包含1个线程block \ 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" index 01ad378533b6ac3f1f477e9b96b8db86bcd37dba..96bf11461cec9c6005826209dda9cd5f0c8fc67c 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/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" @@ -3,15 +3,19 @@ 以下关于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/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" index ed9fb2dea1e518eec619c9f0a6de110c95d4c7bf..e6b1e3ad949bca5d9e833ef7cded62ea88edc6f2 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/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" @@ -3,13 +3,19 @@ 下面关于GPU存储单元说法错误的是? ## 答案 + CUDA线程有对所有类型的存储类型的读写权限 ## 选项 ### A + 同一个Block内的线程可以通过 shared memory来进行协作 ### B -CPU可以对GPU中的global memory, constant memory 和 texture memory进行读写 +CPU可以对GPU中的global memory, constant memory 进行读写 + +### C + +CPU可以对GPU中的texture memory进行读写 \ 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" index c96fe352affb09d7c3b0a78940b5e2d616bd4322..5d9491cb65ab5a7df5d21f99c774b2cf41addc44 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/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" @@ -3,14 +3,21 @@ 下面关于GPU存储单元的分配与释放的说法错误的是? ## 答案 + 可以使用`cudaMemcpy(d_m, h_m, sizeof(int)*m*m, cudaMemcpyHostToDevice)` 的形式将数据从GPU传输给CPU ## 选项 ### A -可是使用`cudaMalloc()`函数来分配GPU存储空间 + +可以使用`cudaMalloc()`函数来分配GPU存储空间 ### B + 可以使用`cudaFree()`函数来释放显存 +### C + +不可以使用`free()`函数来释放显存 + 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" index 49308706aba0de0a35872bf38848adab9f1152c4..0bbb3b2f68ed14bcd2d166eef9d32c2e520606c0 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/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" @@ -1,7 +1,6 @@ # 数据传输 -对于CUDA中的数据传输函数`cudaMemcpy(void *dst, const void *src, size_t count, cudaMemcpyKind kind) -`,以下说法错误的是? +对于CUDA中的数据传输函数 `cudaMemcpy(void *dst, const void *src, size_t count, cudaMemcpyKind kind)`, 以下说法错误的是? ## 答案 @@ -10,10 +9,13 @@ 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/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" index 2f8794c7bc5125b4b79dfeee133d47a6e1376371..11396719b010fe790eab819127a4e08dbe438939 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/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" @@ -9,9 +9,14 @@ ## 选项 ### A + 每个线程都有自己的寄存器, 其他线程无法访问. ### B -所有的线程都可以访问一个shared memory +所有的线程都可以访问一个 shared memory + + +### C +所有的线程都不可以访问 shared memory \ 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" index d4731ca1314e825b7cd1a94d73a17b4f40cf8ac8..6c4854d23752b7fb44bc27cf97d3b18bc430ce63 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/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" @@ -3,13 +3,19 @@ 下面关于CUDA中的多种存储单元说法错误的是? ## 答案 + Register和Shared memory有很多, 每个线程更多的占用它们,可以让更多的block驻留在SM中 ## 选项 ### A + GPU上有onchip和onboard的存储单元类型 ### B + Onchip的存储单元包括Register 和 Shared memory +### C + +每个线程块拥有一块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/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" index 00bc9857fde3d353a39e423c729d5eed17432c63..5efe764534e48e49637897d7e66c91d79055ffcf 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/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" @@ -1,17 +1,22 @@ # 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/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" index 797e88261a9dd83bb8ba5165d5bd4bfcd22c0c32..81557dfdc968b7d11409a366e0a68feb84de8d27 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/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" @@ -1,14 +1,22 @@ # 共享内存 + 下面关于共享内存的说法错误的是? ## 答案 + Shared Memory可以被设置成512KB,1024KB ,2048KB…剩下的给L1缓存 ## 选项 ### A + 有可能会出现同时有很多线程访问Shared Memory上的数据 ### B + 为了克服这个同时访问的瓶颈,Shared Memory被分成32个逻辑块(banks) +### C + +可以被同一block中的所有线程读写 + 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" index 1dfff310d7386c52d0659e11713db2b5de78b0e3..30144cffdaf9dbb614ffa630aa5a818d595bd9c9 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/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" @@ -1,14 +1,21 @@ # 共享内存 + 下面关于共享内存说法错误的是? ## 答案 -同一个warp 内多个线程访问同一个bank的同一个地址时,会出现bank冲突. +同一个 warp 内多个线程访问同一个bank的同一个地址时,会出现bank冲突. ## 选项 ### A + 同常量内存一样,当一个 warp 中的所有线程访问同一地址的共享内存时,会触发一个广播(broadcast)机制到 warp 中所有线程. ### B -同一个warp 内多个线程访问同一个bank的不同地址时,会出现bank冲突. \ No newline at end of file + +同一个 warp 内多个线程访问同一个bank的不同地址时,会出现bank冲突. + +### C + +一个 warp 中的线程必然在同一个block中 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 0b94022b901b40d20b8930839468353fad198b2a..d18e64429a351297c4632ae121f33cf75c3b179a 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" @@ -13,4 +13,10 @@ 在优化矩阵乘的过程中, 我们可以利用shared memory减少从global memory中数据的读取次数. ### B + 同一Block中的线程可以利用shared memory进行协作. + + +### C + +同一Block中的线程可以利用shared memory进行协作, 减少从global memory中数据的读取次数 \ 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" index 091b72a1c23c50df4cb8fba2dbd8a21b0bd07146..ac2e83ff1dfa4bbfe5d173a2d32e2652f645765a 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/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" @@ -9,8 +9,15 @@ ## 选项 ### A + 不需要手动拷贝数据. ### B + 可以利用cudaMallocManaged() 函数分配统一内存. +### C + +统一内存是可从系统中的任何处理器访问的单个内存地址空间 + + 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" index 6f214b734c6e2e7f47ca273b51402a7efc45fbba..db5764f61149301eabb942160cc05b58e75d8f9d 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/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" @@ -9,8 +9,14 @@ ## 选项 ### A + 运行时函数会返回错误代码. ### B + 内核启动不返回任何错误代码,因此必须在内核启动后立即调用 `cudaPeekAtLastError()` 或 `cudaGetLastError()` 以检索任何启动前错误. +### C + +`checkCudaErrors`可对CUDA API进行错误检测,及时定位错误所在位置。 + 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" index 27311d6c4180f6c1f8b05ced2f18a45bed25a255..c7e01607c5d88d9ed4b7f639e974a99d63bada84 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/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" @@ -1,4 +1,5 @@ # 事件 + 下面关于CUDA编程模型中的event说法错误的是? ## 答案 @@ -8,7 +9,9 @@ CUDA运行时提供了一种密切监视设备进度以及执行准确计时的 ## 选项 ### A + 以下代码示例创建`start`, `stop`两个事件: + ```C++ cudaEvent_t start, stop; cudaEventCreate(&start); @@ -16,8 +19,22 @@ cudaEventCreate(&stop); ``` ### B + 可以利用以下代码销毁event: + ```C++ cudaEventDestroy(start); cudaEventDestroy(stop); ``` + +### C + +可以利用以下代码统计事件间消耗的时间: + +```C++ +cudaEventRecord(start); +cudaEventRecord(stop); +float time; +cudaEventElapsedTime(&time, start, 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" index ea268571da4ab749f89485d6ff9160e739a110cf..7c8abc8c6c39a32ae6a7728d2d89e339e316b8d6 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/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" @@ -1,4 +1,5 @@ # 原子操作 + 下面关于CUDA中原子操作错误的是? ## 答案 @@ -8,9 +9,14 @@ ## 选项 ### A + 原子函数对驻留在全局或共享内存中的一个 32 位或 64 位字执行读-修改-写原子操作. ### B + 原子操作保证在不受其他线程干扰的情况下执行。 换句话说,在操作完成之前,没有其他线程可以访问它处理数据的地址。 +### C + +原子操作是指,当一个线程要对同一个显存变量依次进行“读-计算-写”的操作时,操作必须连贯地执行,中间不能插入任何其他操作。 \ 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" index a76535710f7eca510500f3f5334d16cf6973303f..d9a9a62efa6094ff84555380ac6b4c7b89e7ffae 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/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" @@ -9,8 +9,14 @@ ## 选项 ### A + 原子操作可以处理GPU中global memory的数据. ### B + 原子操作可以处理GPU中shared memory的数据. +### C + +`atomicAdd` 是一个原子操作 + 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" index f191f5bafc07cb4d8345c723072c51994bd2ec11..93a428e6f370015aba6e0cc0fafaf0a7ab40aa5f 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/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" @@ -1,4 +1,5 @@ # CUDA流 + 下面关于CUDA流的说法错误的是? ## 答案 @@ -8,8 +9,14 @@ CUDA流只能在设备代码中调用执行. ## 选项 ### A + 流是按顺序执行的命令序列(可能由不同的主机线程发出). ### B + 不同的流可能会彼此乱序或同时执行它们的命令. +### C + +CUDA流表示一个GPU操作队列,并且该队列中的操作将以指定的顺序执行 + 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" index f998598df98575e1bd0ffb8ca8a050af89552796..4d3b9a88bcf6cf550a81bf3d1a57c372cd01b62a 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/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" @@ -1,13 +1,21 @@ # CUDA流 + 下面关于CUDA流的说法是错误的是? ## 答案 + 调用`cudaStreamSynchronize()` 函数, 程序会一直等待,直到所有主机线程的所有流中的所有先前命令都完成. + ## 选项 ### A + 未指定任何流参数或等效地将流参数设置为零的内核启动和主机 <-> 设备内存拷贝将发布到默认流. ### B + 调用`cudaDeviceSynchronize()`函数, 程序会一直等待,直到所有主机线程的所有流中的所有先前命令都完成. +### C + +调用`cudaStreamCreate`创建一个流 \ 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" index cbfaff888074159e19ac6ce60089c7a87d3b662c..71b9b6e96f0c75884fd789fbc3d15d16b2bc8efd 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/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" @@ -1,7 +1,9 @@ # CUDA流 + 下面关于CUDA流的说法错误的是? ## 答案 + 以下设备操作对主机不是异步的: * 内核启动; @@ -13,6 +15,7 @@ ## 选项 ### A + 如果主机线程在它们之间发出以下任一操作,则来自不同流的两个命令不能同时运行: * 页面锁定的主机内存分配, @@ -23,11 +26,18 @@ * 计算能力 3.x 和计算能力 7.x 中描述的 L1/共享内存配置之间的切换。 ### B + CUDA 将以下操作公开为可以彼此同时操作的独立任务: * 在主机上计算; * 设备上的计算; * 从主机到设备的内存传输; + +### C + +CUDA 将以下操作公开为可以彼此同时操作的独立任务: + * 从设备到主机的内存传输; * 在给定设备的内存中进行内存传输; -* 设备之间的内存传输。 \ No newline at end of file +* 设备之间的内存传输。 +