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 />

,type<br />

位<br />

、64 位<br />

个<br />

或<br />

条<br />

位<br />

的<br />

位<br />

块<br />

出 指 令 。 发<br />

5.1.1.4 同 步 指 令<br />

,__syncthreads 将<br />

5.1.2 存 储 器 带 宽<br />

程 需 要 等 待 其 他 线 程 线 何 任 有 没 果 如<br />

存 储 器 带 宽<br />

<br />

<br />

<br />

<br />

<br />

若 在 与 将<br />

存 储 器 空 间 的 有 效 带 宽 主 要 取 决 于 访 问 模 式 下 面 几 节 将 介 绍 相 关 内 容 由 于 设 备 存 储 器 比 片 上 存 储 器 的 延 迟 更 高 、 带 宽 更 低 , 因 此 应 尽 量 减 少 设 备 存 储 器 访 问 。 典 型 的 编 程 模 式 是 将 来 自 设 备 存 储 器 的 数 据 转 入 共 享 存 储 器 , 也 就 是 说 , 使 一 个 块 的 所 有 线 程 各<br />

自 设 备 存 储 器 的 载 入 共 享 存 储 器 共 享 存 储 器 中 处 理 数 据 ; 来<br />

4 用 占<br />

warp 周 期 来 为 一 个 钟 时<br />

5.1.2.1 全 局 存 储 器<br />

:。<br />

块 中 的 其 他 所 有 线 程 同 步 , 使 各 线 程 可 安 全 地 读 取 由 其 他 线 程 写 入 的 共 享 存 储 器 位 置 ; 有 必 要 , 再 次 进 行 同 步 , 确 保 使 用 结 果 更 新 了 共 享 存 储 器 ; ;<br />

值 : 赋<br />

果 写 回 设 备 存 储 器 。 结<br />

__device__ type device[32];<br />

问 的 高 昂 成 本 时 更 是 如 此 。 访 器 储 存<br />

type data = device[tid];<br />

sizeof(type) 字 必<br />

的 等<br />

的<br />

全 局 存 储 器 空 间 不 会 被 缓 存 , 因 而 采 用 正 确 的 访 问 模 式 来 实 现 最 大 化 的 存 储 器 带 宽 尤 为 重 要 , 考 虑 到 设 备<br />

节<br />

或<br />

32 , 设 备 能 够 通 过 一 条 指 令 将 全 局 存 储 器 中 的 先 首<br />

或 128<br />

读 入 寄 存 器 。 对 于 下 面 这 样 的<br />

类<br />

或<br />

来<br />

struct __align__(8) {<br />

float a;<br />

float b;<br />

};<br />

对<br />

将 其 编 译 为 一 条 加 载 指 令<br />

sizeof(type) 使 须<br />

于 4、8<br />

16,<br />

type 为 型<br />

量 必 须 与 变<br />

sizeof(type) 致 ( 也 就 是 说 , 它 的 地 址 必 须 是 一 节<br />

倍 数 )。<br />

齐 要 求 , 举 例 如 下 :<br />

struct __align__(16) {<br />

对<br />

};<br />

float a;<br />

float b;<br />

float c;<br />

个<br />

4.3.1.1 于 对<br />

float2 的 内 置 类 型 , 如 绍 介<br />

float4,<br />

要 求 可 自 动 满 足 。 齐<br />

__align__(8) 结 构 体 来 说 , 可 通 过 使 用 对 齐 说 明 符 于 对<br />

__align__(16)<br />

使 编 译 器 实 施 大 小 和<br />

节 的 结 构 体 来 说 , 编 译 器 会 生 成 多 条 加 载 指 令 。 为 了 确 保 生 成 的 指 令 数 量 最 少 , 应 使 用 字<br />

__align__(16)<br />

struct __align__(16) {<br />

float a;<br />

float b;<br />

float c;<br />

float d;<br />

float e;<br />

};<br />

定<br />

: 或<br />

于 超 对<br />

条<br />

此 类 结 构 体 , 举 例 如 下 义<br />

位<br />

38 <strong>CUDA</strong> 编<br />

过 16<br />

加 载 指 令 , 而 的 加 载 指 令 。 位 于 全 局 存 储 器 中 的 变 量 的 地 址 , 或 由 驱 动 程 序 或 运 行 存 储 器 分 配 例 程 返 回 的 变 量 地 址 总 是 会 字 节 。<br />

:<br />

2 编 译 为 将 这<br />

非 5<br />

2.0 南 , 版 本 指 程<br />

256 到 至 少 齐 对<br />

时 API<br />

128<br />

32

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

Saved successfully!

Ooh no, something went wrong!