提交 5d6c3e03 编写于 作者: K Ken He

Ken He

上级 aa253ffa
# 利用共享存储单元优化程序
下面关于共享存储单元的说法错误的是?
## 答案
驻留在一个SM中的block中的线程如果shared memory不够用, 可以利用其他SM中的shared memory
## 选项
### A
在优化矩阵乘的过程中, 我们可以利用shared memory减少从global memory中数据的读取次数.
### B
同一Block中的线程可以利用shared memory进行协作.
......@@ -2,7 +2,9 @@
"node_id": "cuda-e2ec9573577d42fdbed66392ffc835d3",
"keywords": [],
"children": [],
"export": [],
"export": [
"mem11.md"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
# 统一内存的基本概念
以下关于统一内存的说法错误的是?
## 答案
申请的统一内存不需要进行数据传输,所以不受硬件带宽限制(如: PCIE等).
## 选项
### A
不需要手动拷贝数据.
### B
可以利用cudaMallocManaged() 函数分配统一内存.
......@@ -2,7 +2,9 @@
"node_id": "cuda-634b3d9492044bafb7a089431c878879",
"keywords": [],
"children": [],
"export": [],
"export": [
"error.md"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
# CUDA 错误检测
下面关于CUDA错误检测错误的是?
## 答案
当异步函数发生错误的时候, 会马上终止并报告错误代码.
## 选项
### A
运行时函数会返回错误代码.
### B
内核启动不返回任何错误代码,因此必须在内核启动后立即调用 `cudaPeekAtLastError()``cudaGetLastError()` 以检索任何启动前错误.
......@@ -2,7 +2,9 @@
"node_id": "cuda-5a542af3254b49a8ab5266364d421e47",
"keywords": [],
"children": [],
"export": [],
"export": [
"event.md"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
# 事件
下面关于CUDA编程模型中的event说法错误的是?
## 答案
CUDA运行时提供了一种密切监视设备进度以及执行准确计时的方法,方法是让应用程序同步记录程序中任何点的事件
## 选项
### A
以下代码示例创建`start`, `stop`两个事件:
```C++
cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);
```
### B
可以利用以下代码销毁event:
```C++
cudaEventDestroy(start);
cudaEventDestroy(stop);
```
# 原子操作
下面关于CUDA中原子操作错误的是?
## 答案
原子函数可以在GPU或者CPU上执行
## 选项
### A
原子函数对驻留在全局或共享内存中的一个 32 位或 64 位字执行读-修改-写原子操作.
### B
原子操作保证在不受其他线程干扰的情况下执行。 换句话说,在操作完成之前,没有其他线程可以访问它处理数据的地址。
......@@ -2,7 +2,9 @@
"node_id": "cuda-10a7cead25f14eeaaf0730ff2468cb90",
"keywords": [],
"children": [],
"export": [],
"export": [
"atom.md"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
# 原子操作
下面关于原子操作的说法正确的是?
## 答案
原子操作可以处理CPU内存的数据
## 选项
### A
原子操作可以处理GPU中global memory的数据.
### B
原子操作可以处理GPU中shared memory的数据.
......@@ -2,7 +2,9 @@
"node_id": "cuda-9e74b1fb163e46bb8cc2e72b3c9990a9",
"keywords": [],
"children": [],
"export": [],
"export": [
"atom1.md"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
......@@ -2,7 +2,9 @@
"node_id": "cuda-a95b22ce131e42979daabc1f2ec82886",
"keywords": [],
"children": [],
"export": [],
"export": [
"stream.md"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
# CUDA流
下面关于CUDA流的说法错误的是?
## 答案
CUDA流只能在设备代码中调用执行.
## 选项
### A
流是按顺序执行的命令序列(可能由不同的主机线程发出).
### B
不同的流可能会彼此乱序或同时执行它们的命令.
......@@ -2,7 +2,9 @@
"node_id": "cuda-93c84af94c154430b93094befb70f5c8",
"keywords": [],
"children": [],
"export": [],
"export": [
"stream1.md"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
# CUDA流
下面关于CUDA流的说法是错误的是?
## 答案
调用`cudaStreamSynchronize()` 函数, 程序会一直等待,直到所有主机线程的所有流中的所有先前命令都完成.
## 选项
### A
未指定任何流参数或等效地将流参数设置为零的内核启动和主机 <-> 设备内存拷贝将发布到默认流.
### B
调用`cudaDeviceSynchronize()`函数, 程序会一直等待,直到所有主机线程的所有流中的所有先前命令都完成.
......@@ -2,7 +2,9 @@
"node_id": "cuda-24b5313252644192b40894d9d677a40f",
"keywords": [],
"children": [],
"export": [],
"export": [
"stream2.md"
],
"keywords_must": [],
"keywords_forbid": []
}
\ No newline at end of file
# CUDA流
下面关于CUDA流的说法错误的是?
## 答案
以下设备操作对主机不是异步的:
* 内核启动;
* 内存复制在单个设备的内存中;
* 从主机到设备内存拷贝的内存块大小不超过64kb的;
* 由带有Async后缀的函数执行的内存拷贝;
* 内存设置函数调用。
## 选项
### A
如果主机线程在它们之间发出以下任一操作,则来自不同流的两个命令不能同时运行:
* 页面锁定的主机内存分配,
* 设备内存分配,
* 设备内存设置,
* 两个地址之间的内存拷贝到同一设备内存,
* 对 NULL 流的任何 CUDA 命令,
* 计算能力 3.x 和计算能力 7.x 中描述的 L1/共享内存配置之间的切换。
### B
CUDA 将以下操作公开为可以彼此同时操作的独立任务:
* 在主机上计算;
* 设备上的计算;
* 从主机到设备的内存传输;
* 从设备到主机的内存传输;
* 在给定设备的内存中进行内存传输;
* 设备之间的内存传输。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册