CUDA 标量和 SIMD 视频指令的效率

2024-03-11

SIMD指令的吞吐量低于32位整数运算。 如果是 SM2.0(仅标量指令版本)则低 2 倍。 如果是 SM3.0,则低 6 倍。

什么情况下适合使用它们?


如果您的数据已经以 SIMD 视频指令本机处理的格式打包,则需要多个步骤对其进行解包,以便可以由普通指令处理。

此外,与普通算术运算相比,SIMD视频指令的吞吐量还应该乘以实际执行的运算数量。

例如,对于指令vadd4 http://docs.nvidia.com/cuda/parallel-thread-execution/index.html#simd-video-instructions-vadd4-vsub4-vavrg4-vabsdiff4-vmin4-vmax4,正在对打包的 32 位数量(4 字节整数数量)执行 4 次整数加法。为了用普通的整数加法来复制这种行为,需要相当复杂的指令序列来将数据解压缩为 4 个int数量,进行 4 次整数加法,然后重新打包结果。如果您尝试使用单个整数加法来执行此操作,则一个结果的进位可能会损坏下一个结果。vadd4还提供钳位能力和整数加法不可用的其他行为。

在SM2.0的情况下,仅执行4次操作的比率vadd4与未打包数据上必要的 4 个整数相加将使其具有吸引力。在SM3.0的情况下,当将拆包和打包添加到普通整数加法例程时,vadd4看起来很有吸引力。情况变得更加有吸引力与CC 5.0 http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CUDA 标量和 SIMD 视频指令的效率 的相关文章

  • C 中带括号和不带括号的循环处理方式不同吗?

    我在调试器中单步执行一些 C CUDA 代码 如下所示 for uint i threadIdx x i lt 8379 i 256 sum d PartialHistograms blockIdx x i HISTOGRAM64 BIN
  • arm64 汇编:LDP 与 LD4 执行时间

    假设我想用连续内存位置的值加载四个连续的 aarch64 向量寄存器 一种方法是 ldp q0 q1 x0 ldp q2 q3 x0 32 根据ARM优化指南 https static docs arm com uan0016 a cort
  • 构建 Erlang 服务器场(用于业余爱好项目)最便宜的方法是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 假设我们有一个 本质上并行 的问题需要用 Erlang 软件来解决 我们有很多并行进程 每个进程都执行顺序代码 不是数字运算 并且我们向它们投入的 C
  • CUDA错误:在python中使用并行时初始化错误

    我的代码使用 CUDA 但运行速度仍然很慢 因此 我将其更改为使用 python 中的多处理 pool map 并行运行 但我有CUDA ERROR initialization error 这是函数 def step M self ite
  • AVX2浮点比较并得到0.0或1.0而不是全0或全1位

    基本上 在生成的向量中 我想为所有输入浮点值 gt 1 保存 1 0 而为所有输入浮点值 float f 8 1 2 0 5 1 7 1 9 0 34 22 9 18 6 0 7 float r 8 Must be 1 0 1 1 0 1
  • 如何在 gitlab-ci docker 执行器中使用 cuda

    我们正在使用 gitlab 持续集成来构建和测试我们的项目 最近 其中一个项目添加了 CUDA 的要求以启用 GPU 加速 我不想改变我们的管道 docker 和 gitlab ci 对我们来说运行良好 所以我想以某种方式让 docker
  • 在C中使用AVX实现矩阵运算

    我正在尝试使用 AVX 实现以下操作 for i 0 i
  • cudaMemcpyToSymbol 与 cudaMemcpy [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图找出
  • 某些子网格未使用 CUDA 动态并行执行

    我正在尝试 CUDA 5 0 GTK 110 中的新动态并行功能 我遇到了一个奇怪的行为 即我的程序没有返回某些配置的预期结果 不仅是意外的 而且每次启动都会出现不同的结果 现在我想我找到了问题的根源 似乎当生成太多子网格时 某些子网格 由
  • 如何用Go语言的cgo编译Cuda源码?

    我用 cuda c 编写了一个简单的程序 它可以在 eclipse nsight 上运行 这是源代码 include
  • libstdc++.so.6 与 cuda 相关的链接器问题

    今天我在链接我编译的 cuda 内容时遇到了问题 我有一个最新的 debian 测试 w 2 6 32 3 amd64 我整天都在写我的代码 不时编译 没有问题 但在进行了较小的代码更改后 我收到以下错误 gcc o pa CUDA o h
  • cudaMallocManaged() 返回“不支持的操作”

    在 CUDA 6 0 中尝试托管内存给了我operation not supported打电话时cudaMallocManaged include cuda runtime h include
  • 当我有表面声明时,如何为 sm_1X 和 sm_2X 编译 CUDA 程序

    我正在编写一个使用表面 重新采样并写入纹理 来提高性能的库 surface
  • CUDA 中的广义霍夫变换 - 如何加快分箱过程?

    正如标题所示 我正在对并行计算机视觉技术进行一些个人研究 使用 CUDA 我尝试实现 GPGPU 版本的霍夫变换 我遇到的唯一问题是在投票过程中 我调用atomicAdd 来防止多个同时写入操作 但我似乎没有获得太多的性能效率 我在网上搜索
  • C++ 错误:“_mm_sin_ps”未在此范围内声明

    我正在尝试对将函数应用于数组的不同方法进行基准测试 why is mm sin ps在我的范围内不知道但是 mm sqrt ps is 我怎样才能让它知道 并且编译没有错误 include
  • CUDA Thrust 和 sort_by_key

    我正在寻找 CUDA 上的排序算法 它可以对元素数组 A 双精度 进行排序 并返回该数组 A 的键 B 数组 我知道sort by keyThrust 库中的函数 但我希望元素数组 A 保持不变 我能做些什么 我的代码是 void sort
  • MPI+CUDA 与纯 MPI 相比有何优势?

    加速应用程序的常用方法是使用 MPI 或更高级别的库 例如在幕后使用 MPI 的 PETSc 并行化应用程序 然而 现在每个人似乎都对使用 CUDA 来并行化他们的应用程序或使用 MPI 和 CUDA 的混合来解决更雄心勃勃 更大的问题感兴
  • Nvcc 的版本与 CUDA 不同

    我安装了 cuda 7 但是当我点击 nvcc version 时 它打印出 6 5 我想在 GTX 960 卡上安装 Theano 库 但它需要 nvcc 7 0 我尝试重新安装cuda 但它没有更新nvcc 当我运行 apt get i
  • 如何在 CUDA 中执行多个矩阵乘法?

    我有一个方阵数组int M 10 以便M i 定位第一个元素i th 矩阵 我想将所有矩阵相乘M i 通过另一个矩阵N 这样我就收到了方阵数组int P 10 作为输出 我看到有不同的可能性 分配不同元素的计算M i 到不同的线程 例如 我
  • NvCplGetThermalSettings 返回 false

    问题 您好 我正在尝试使用 Delphi 获取 nividia gtx 980 的 GPU 温度 我看过C 问题 他的解决方案是不使用nvcpl dll 我认为这不是正确的解决方案 因为 nivida 有完整的文档说明如何处理 API 见下

随机推荐

  • Laravel 4 - 验证器 - 文件大小

    只是询问有关 Laravels 验证器的问题 我网站的用户有时会上传大约 100MB 的文件 我看过 http laravel com docs 4 2 validation http laravel com docs 4 2 valida
  • 如何创建固定结构的对象?

    我的揭示模块中有以下代码 但我不确定如何声明 定义imageListItem 这严格来说是一个 DTO 并不真正需要任何信息隐藏 我是否正确定义了这个对象 var imageListItem function var title Objec
  • Gorilla Sessions - 如何根据请求自动更新 Cookie 过期时间?

    我知道许多其他语言和 Web 框架会在每次通过后端访问会话 或类似的操作 时自动将 cookie 的过期时间更新为会话超时 我不相信 Gorilla 提供这个实用程序 我正在考虑编写一些请求中间件 如果它检测到有效会话 将延长 cookie
  • jQuery 事件未触发

    我一直在努力让它发挥作用 基本上我有一个搜索框 其中有一个默认字符串 即搜索 当用户单击输入字段时它应该消失 这是代码 HTML
  • 构建 MAUI Android 失败

    我创建了一个全新的 MAUI 应用程序 我必须创建一个新应用程序 因为当我升级 Visual Studio 预览版时 我使用预览版本创建的先前应用程序无法工作 这个应用程序使用 prism maui 这应该没有任何区别 我还使用使用预览版本
  • 即使明确设置,PreparedStatement 也不会超时

    我正在尝试模拟一个场景 其中我的服务失去与数据库的连接并且无法执行INSERT通过阻止与 iptables 的连接 但我无法使executeQuery 方法超时 我所做的是为PreparedStatement设置一个超时 如下所示state
  • 如何复制cmake目标

    我正在我的 cmake 项目中编写函数 该函数需要从一个目标创建两个目标 并稍微更改其中之一 option BORG STRIP TEST BINARIES OFF Strip symbols from test binaries to r
  • 从旧的 Subversion 备份中恢复文件

    我有一个来自旧的颠覆服务器的 tar 备份 该服务器早已失效 该服务器管理的所有源代码都是遗留代码 永远不会再需要 除了这个项目 tar 文件充满了小目录 如 conf dav db 有没有办法从这个备份中提取单个项目的最终源代码 您只需从
  • 在 Laravel 中如何在查询中不带参数的 groupBy Url

    下面的查询包含大量连接表和 DB raw 查询 它按预期工作 我想 groupBy 一个 landing 它是表中存储 URL 的字段 但我想对不带参数的 URL 进行分组 我怎样才能实现这个目标 下面的查询尝试使用 SUBSTRING I
  • 如何在反应导航6中分别处理两个抽屉?

    我创建了两个抽屉导航器 const MenuDrawerRight createDrawerNavigator const MenuDrawerLeft createDrawerNavigator function RightDrawerS
  • FluentNHibernate 和枚举

    我有一个名为 Permissions 的枚举 可以为用户分配权限 或者可以将权限分配给角色并为用户指定角色 用户和角色都有这样的属性 public virtual IList
  • Python SQLite - 慢速更新记录

    我有一个脚本 可以将数据库中存储的日期从 Unix 时间 纪元 转换为人类可读的格式 有30 000条记录 从数据库中提取数据 转换数据并将其打印到屏幕上的速度非常快 然而 从数据库中提取数据 转换数据并执行 更新 语句来更新记录的速度非常
  • 序列化为 json 响应时避免 hibernate 延迟初始化异常的更好方法

    这是参考中的我一个月前问的一个问题 https stackoverflow com questions 13354766 avoid hibernate lazy initialization exception 在这个问题中 https
  • 使用 Laravel 邮件类时如何设置 SwifMailer 插件?

    Laravel 不会返回任何有用的信息来显示电子邮件失败的原因 斯威夫邮递员记录器插件 http swiftmailer org docs plugins html logger plugin有助于发送过程中的调试 当通过 Laravel
  • 赋值运算符真的“只是”一个运算符吗?

    我的问题是由this https stackoverflow com questions 63228851 does assignment precede logical operator in ruby 63230036 noredire
  • 驱动程序如何成为操作系统的一部分?

    我知道操作系统内核是由驱动程序组成的 但是驱动程序是如何成为操作系统的一部分的 是内核自己反编译 然后添加驱动程序并重新编译自己吗 或者驱动程序是内核的插件 有人告诉我 对于大多数操作系统 驱动程序实际上成为内核的一部分 但是每当我编译c程
  • pycharm看不到python3.7解释器

    我在 Linux Mint 19 Tara Xfce 上使用 Pycharm Community 2018 1 4 它与 Python 3 5 解释器配合良好 我安装了 Python 3 7 作为系统上默认的 Python 解释器 pyth
  • 修改LD_LIBRARY_PATH

    在 UNIX 中 我正在尝试修改LD LIBRARY PATH为了使其包含一些库 我无法添加到系统的常规库中 我没有根权限 它是大学服务器 此时我已经使用了很多我在网络上找到的方法执行此操作但无法修改它 我也看不到是什么PATH 我尝试过使
  • 反转 ResourceManager

    如果执行 ResourceManager GetString Key 则可以获得资源中项目的值 有没有办法进行反向查找以从给定值的资源中获取密钥 本质上是反翻译 您应该能够获取 ResourceSet 并迭代它的值 如果它们相等则返回键 请
  • CUDA 标量和 SIMD 视频指令的效率

    SIMD指令的吞吐量低于32位整数运算 如果是 SM2 0 仅标量指令版本 则低 2 倍 如果是 SM3 0 则低 6 倍 什么情况下适合使用它们 如果您的数据已经以 SIMD 视频指令本机处理的格式打包 则需要多个步骤对其进行解包 以便可