30.04.2014 Views

NVIDIA CUDA 计算统一设备架构

NVIDIA CUDA 计算统一设备架构

NVIDIA CUDA 计算统一设备架构

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

节 来<br />

不<br />

(stream)<br />

后<br />

应<br />

实<br />

和<br />

;<br />

提 的 和 的<br />

将 的<br />

节 实<br />

环<br />

来 调 并<br />

节<br />

节<br />

数<br />

的<br />

操<br />

的<br />

实<br />

的 使 的<br />

和<br />

实<br />

应<br />

<br />

设 执<br />

设 备 与 设 备 间 双 向 存 储 器 复 制 的 函 数 置 存 储 器 的 函 数 。 某 些 设 备 还 可 在 分 页 锁 定 的 宿 主 存 储 器 和 设 备 存 储 器 之 间 执 行 复 制 , 且 与 内 核 执 行 并 发 地 执 行 此 类 复 制 操 行<br />

4.5.2.4 节<br />

。 如 果 使 用 的 是 运 行 时 API,<br />

则 请 参 请 ) 分 配 的 二 维 数 组 的 存 储 器 复 制 。 作<br />

流 的 定 义 方 法 是 创 建 流 对 象 , 并 将 其 指 定 为 内 核 启 动 和 宿 主 与 设 备 间 内 存 双 向 复 制 序 列 的 流 参 数 。 管<br />

的<br />

为<br />

第<br />

cudaGetDeviceProperties() 序 可 通 过 调 用 程 用<br />

deviceOverlap 查 检<br />

询 此 功 能 ; 如 果 使 用 的 是 驱 动 程 序 API, 查<br />

CU_DEVICE_ATTRIBUTE_GPU_OVERLAP 过 使 用 通 可<br />

用 cuDeviceGetAttribute()<br />

<strong>CUDA</strong> 。 此 功 能 当 前 仅 支 持 不 涉 及 询 查<br />

或 通 过 cudaMallocPitch()( 组<br />

4.5.2.3 第 见<br />

或 cuMemAllocPitch()( )<br />

4.5.3.6 第 见 参<br />

用 程 序 通 过 流 理 并 发 。 流 就 是 按 顺 序 执 行 的 一 系 列 操 作 。 另 一 方 面 , 不 同 的 流 可 与 其 他 流 乱 序 执 行 其 操 作 , 也 可 并 发 执 行 。 应<br />

API 了 如 何 通 过 运 行 时 述 描<br />

4.5.3.7 目 标 , 第 此 现<br />

API 了 如 何 通 过 驱 动 程 序 述 描<br />

现 此 目<br />

。 不 带 流 参 数 或 使 用 零 作 为 流 参 数 的 任 何 内 核 启 动 、 存 储 器 设 置 或 存 储 器 复 制 函 数 都 仅 能 在 此 前 的 操 作 完 成 标<br />

API<br />

始 包 括 作 为 流 部 分 的 操 作 , 而 在 此 类 函 数 完 成 之 前 , 无 法 启 动 任 何 后 续 操 作 。 无 流 参 数 的 内 核 启 动 , 缀 的 存 储 器 复 制 都 将 被 指 派 给 默 认 零 流 种 方 法 , 使 其 能 够 了 解 一 个 流 中 的 之 前 全 部 操 作 是 否 已 完 成 。 用 于 运 行 时 开 后<br />

无 Async<br />

有 操 作 完 成 。 类 似 地 , 用 于 运 行 所<br />

API 运 行 时 于 用<br />

cudaStreamQuery()<br />

用 于 驱 动 程<br />

应 用 程 序 提 供 了 一<br />

序 API<br />

cuStreamQuery()<br />

cudaStreamSnchronize()<br />

API 于 驱 动 程 序 用 和<br />

cuStreamSynchronize()<br />

了 一 种 方 法 , 可 显 式 强 制 要 求 运 行 时 等 待 流 中 之 前 的 应 用 程 序 能 够 强 制 要 求 运 行 时 等 待 所 有 流 中 的 所 有 之 前 设 备 任 务 完 成 。 为 了 避 免 不 必 要 的 减 速 , 最 好 将 这 些 供<br />

待 给 定 流 内 之 前 的 所 有 任 务 完 成 , 之 后 再 销 毁 流 , 并 将 控 制 返 回 给 等<br />

操<br />

时 API<br />

cudaThreadSynchronize()<br />

API 驱 动 程 序 于 用<br />

cuCtxSynchronize()<br />

API 序 宿 主 线 程 。 运 行 时 还 提 供 了 一 种 方 法 , 可 密 切 监 控 设 备 的 进 度 并 执 行 准 确 的 计 时 , 它 允 许 应 用 程 序 异 步 记 录 程 序 内 任 意 点 的 事 件 , 并 查 询 这 些 事 件 的 实 际 记 录 事 件 。 一 个 事 件 将 在 先 于 该 事 件 的 所 有 任 务 ( 也 可 以 是 给 定 流 中 程 动<br />

cuStreamDestroy()<br />

函 数 用 于 计 时 或 者 隔 离 失 败 的 启 动 或 存 储 器 复 制 操 作 。 用 于 运 行 时 API<br />

cudaStreamDestroy()<br />

用 于 驱<br />

4.5.2 运 行 时 API<br />

果 宿 主 线 程 在 来 自 不 同 流 的 两 项 操 作 之 间 调 了 分 页 锁 定 的 宿 主 存 储 器 分 配 、 设 备 存 储 器 分 配 、 设 备 存 局 禁 用 异 步 执 行 。 此 特 性 仅 为 调 试 提 供 , 不 应 用 于 使 生 产 软 件 更 可 靠 运 行 之 目 的 。 如<br />

/ 有 操 作 ) 均 已 完 成 时 记 录 。 零 流 中 的 事 件 将 在 设 备 完 成 来 自 所 有 流 的 之 前 任 务 作 后 记 录 。 所 的<br />

第 4.5.2.5<br />

4.5.2.1 初 始 化<br />

API 描 述 如 何 通 过 运 行 时 将 节<br />

4.5.3.8 目 标 , 第 此 现<br />

API 述 如 何 通 过 驱 动 程 序 描 将<br />

此 目 标 。 现<br />

<strong>CUDA</strong> 设 置 、 设 备 与 设 备 之 间 的 双 向 存 储 器 复 制 或 零 流 的 任 何 器 储<br />

, 则 这 两 项 操 作 无 法 并 行 执 行 。 作<br />

4.5.2.2 设 备 管 理<br />

<strong>CUDA</strong>_LAUNCH_BLOCKING 员 可 将 序 程<br />

变 量 设 置 为 1, 从 而 为 系 统 上 运 行 的 所 境<br />

有 <strong>CUDA</strong><br />

用 程 序 全<br />

cudaGetDeviceCount() 和<br />

提<br />

API 时 行 运<br />

存 在 显 式 初 始 化 函 数 ; 它 将 在 运 行 时 函 数 被 首 次 调 用 时 初 始 化 。 需 要 牢 记 , 在 计 时<br />

int deviceCount;<br />

cudaGetDeviceCount(&deviceCount);<br />

其 属 性 : 索<br />

24 <strong>CUDA</strong> 编<br />

运 行 时 调 用 发 生 时 , 或 解 释 来 自 第 一 次 运 行 时 调 用 的 错 误 码 时 , 即 进 行 初 始 化 。<br />

(timing)<br />

cudaGetDeviceProperties()<br />

供 了 一 种 方 法 , 用 于 枚 举 这 些 设 备 并 检<br />

2.0 南 , 版 本 指 程

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!