带有限制关键字的 typedef

2023-12-13

我这样定义对齐浮动

typedef __attribute((aligned(64))) float aligned_float;

然后我定义对齐的浮动restrict像这样的关键字

typedef aligned_float * restrict aligned_floatptr;

这就像我期望的那样工作。但因为我几乎总是想把这两个放在一起,所以我在一行中尝试了 typedef 像这样

typedef __attribute((aligned(64))) float * restrict aligned_floatptr2

然而,这是行不通的。这restrict关键字仍可识别,但对齐方式无法识别。但是编译器没有给我任何警告。我只是通过查看装配体才意识到对齐不起作用。

为什么组合定义不起作用并且为什么我没有收到警告?

您可以看到 Clang 和 GCC 的程序集here.


我想这样做的原因是我有这样的代码

static void kernel(float * restrict a, float * restrict b, float * restrict c, int n) {
  a = __builtin_assume_aligned(a, 64);
  b = __builtin_assume_aligned(b, 64);
  c = __builtin_assume_aligned(c, 64);
  //rest of code

}

我对此有很多变体。我觉得用起来比较方便

static void kernel(aligned_flotptr a, aligned_floatptr b, aligned_floatptr c, int n) {
    //rest of code
}

我刚刚意识到 Clang 似乎甚至不认识aligned_float。只有 GCC 承认它。对于 Clang 我仍然需要使用__builtin_assume_aligned(或者可能#praga omp sind aligned)。另一方面,即使没有对齐,Clang 也能生成良好的代码(未对齐的指令与现在几代的对齐版本一样快),因此对于 GCC,我确实需要对齐。


None

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

带有限制关键字的 typedef 的相关文章

随机推荐

  • iPhone Web 应用程序缓存持久性

    如何编写一个 ASP NET C 应用程序 该应用程序将呈现一个页面 当该页面被添加为 主屏幕图标 时 可以永久缓存在 iPhone 上 我尝试在 Response ExpiresAbsolute DateTime MaxValue 后面的
  • 为 C++(指针)创建 swig 包装器到 python

    我对 swig 非常陌生 我正在尝试创建一个 swig 包装器 以便在 python 中使用一些 C 文件 我有以下 C 课程 以下是我尝试转换的代码片段 packet buffer h class CPacketBuffer public
  • ember-cli (2.4.3) 不生成 DS 模型

    我很惊讶在生成 ember cli 模型时没有获得 DS 模型 ember v ember cli 2 4 3 node 5 10 1 os darwin x64 ember g model rental 然后我得到 app models
  • MySQL 在结果集中添加缺失的月份

    我正在尝试在此结果集中添加缺失的月份 如果缺少月份 请添加值 0Quantita SELECT MONTH Data AS Mese Count AS Quantita FROM prenotazioni WHERE Cancellata
  • 使用 Python 绘图

    我有一个 txt 文件 从中找到有序对 然后使用 numpy 和 matplotlib 绘制图形 例如 这些是我订购的对 4 0 0 0 6 0 6 0 0 0 3 0 每个子列表代表最终图形中的一条线 图形如下所示 但我想找到两条线之间的
  • 同步运行摩卡测试

    我有以下设置来运行 it 测试 X is environment variable if X all X some value read directory and run test using it with callbacks if X
  • 使用 Google App Engine 时无法导入 Flask

    我正在跟进本指南并尝试开发一个在 Google App Engine 上运行的 Flask 应用程序 我按照这封信的指南进行操作 但是当我从启动器启动开发应用程序服务器并转到http localhost 8080 com 我收到 HTTP
  • SoftLayer 中的对象过滤器不起作用

    我发现 ObjectFilter 在 SoftLayer 中不起作用 我什至尝试了 SoftLayer 网页中提供的示例 https sldn softlayer com article object filters REST 列出 ID
  • FBLPromises.framework 不包含位码 - 构建失败

    即使在我的 Podfile 中将 Bitcode 设置为 No 后 我也会收到以下错误 这种情况发生在不同的 Xcode 中 最高版本为 14 0 此时我收到签名错误 这也是没有意义的 因为我已经在所有目标上建立了开发团队 错误 Xcode
  • C# System.Diagnostics.Process:无法在 64 位操作系统中启动 32 位 exe 文件

    我有一个用 Turbo Pascal 编译的 32 位 exe 文件 我需要启动它 当我使用 Windows 7 32 位时它运行良好 但现在我使用 Windows 7 64 位 并且出现以下异常 指定的可执行文件不是此操作系统平台的有效应
  • 如何用 na.spline 替换 data.table 中的 NA 值

    我正在尝试准备从欧盟统计局检索到的一些人口统计数据以供进一步处理 其中包括用相应的近似数据替换任何丢失的数据 首先我只使用 data frames 但后来我确信 data tables 可能比常规 data frames 提供一些优势 所以
  • 如何在 Excel WebBrowser 控件上调整图像大小

    我有名为的 WebBrowser 控件WebBrowser1 我使用此代码通过 URL 显示图像 WebBrowser1 Navigate https cdn2 iconfinder com data icons modern latin
  • jsp 中的通用链接、变量和路径

    Requests 仅当您深入了解其含义时才请回答 我从中找到帮助的相关问题 JSP JSTL 中的嵌套表达式 我想让我的链接 路径和变量 用于图像 脚本和其他页面和包含内容 通用 以便将来重构或更改文件位置不会产生大问题 我的想法是 变量
  • 无法在 Internet Explorer 11 上运行量角器

    我正在尝试在 IE11 上运行我的 jasmine E2E 测试 但没有运气或发生任何情况 我使用的是 Windows 8 1 我的配置 exports config directConnect true Capabilities to b
  • 将多个自定义栏按钮添加到自定义导航栏

    我需要在我的每一端添加两个栏按钮项目customSwift 中的导航栏 我正在使用以下方法 虽然我没有收到任何错误 但什么也没有出现 我正在使用自己的自定义图标 当我使用界面生成器添加它们时 它们确实会出现 显然 我只能这样在两端添加一个
  • 是否允许在 1 个项目中使用多个 YouTube API 密钥?

    在仅使用 1 个 API 密钥使用 YouTube Data API v3 进行搜索时 我很快就达到了配额限制 我已申请增加配额 但听说这可能需要一些时间 不过 我发现下面的文章指出 1 个项目最多可以使用 300 个 API 我真的可以使
  • Windows XP/Delphi 7 中的持久对象

    我正在尝试在 Delphi 7 Windows XP 中制作 AlarmSystem 我必须在数据库 MS SQL Server 2000 中注册警报 但是如果服务器宕机了怎么办 好吧 我可以想象我必须保留 TAlarm 类型的对象 那么
  • 使用 JAVA 从 CSV 更新 MySQL

    我的问题如下 CSV 文件按照给定的时间间隔从服务器下载 必须解析文件 必须删除不必要的空格 必须为每个条形码更新商品价格 建议零售价和库存数量 每个 CSV 行包含商品编号 产品标题 仓库 ID 仓库名称 价格 RRP 价格 库存和条形码
  • 在 Spring Batch 中的多线程步骤中写入 StepExecutionContext

    我正在使用 Spring Batch 并且创建了一个使用SimpleAsyncTaskExecutor 在这一步中 我正在检索StepExecutionContext with BeforeStep public void saveStep
  • 带有限制关键字的 typedef

    我这样定义对齐浮动 typedef attribute aligned 64 float aligned float 然后我定义对齐的浮动restrict像这样的关键字 typedef aligned float restrict alig