当前位置: 首页 > 知识库问答 >
问题:

是否可以在Rust中使用SIMD指令?

濮阳默
2023-03-14

在C/C中,可以对SIMD(如AVX和AVX2)指令使用内部函数。有没有办法在Rust中使用SIMD?

共有1个答案

施权
2023-03-14

答案是肯定的,但需要注意:

  • 它通过重新导出为std::arch的模块在稳定的x86和x86\u 64上可用

arch模块只提供作为内部函数的CPU指令,并且需要在包含这些指令的函数上使用不安全的块以及特定的功能来正确对齐参数。std::arch的文档是CPU特性的编译时和运行时检测的良好起点。

如文档中所述,将来可能会有更高级别的API在标准simd下可用(也可能是核心simd);stdsimd板条箱中提供了预览:

需要注意的是,使用arch模块并不是世界上最简单的事情,因此如果你想尝试一下,你可能需要准备一些冗长的内容!

本模块的主要目的是在板条箱上启用稳定的板条箱。io建立了更多的人体工程学抽象,最终在引擎盖下使用SIMD。随着时间的推移,这些抽象可能也会转移到标准库本身中,但目前此模块的任务是提供在稳定的Rust上使用供应商内部函数所需的最低限度。

注意:您也可能使用FFI链接为您这样做的库;例如,Shepmaster的丘比特板条箱使用这样的策略在运行时访问cpu功能。

 类似资料:
  • 我有int的向量,我需要找到并用特定的值替换一些元素。他们都是一样的 例如:将所有元素的4替换为8。 我正在尝试c中循环中的直接内存访问。但对我来说还是很慢。 更新: 我正在上使用OpenCV对象: 函数仅在释放模式下通过指针返回值

  • 我正在音频应用程序中的不同参数上处理多个(独立)指数移动平均1极滤波器,目的是在音频速率下平滑每个参数值: 我想利用CPU指令,并行处理它们,但我不确定如何实现这一点。 事实上,z1是递归的:不能考虑“以前的值”来“打包”double数组,对吗? 也许有一种方法可以正确组织不同过滤器的数据并并行处理它们? 欢迎提供任何提示或建议! 请注意:我没有几个信号路径。任何参数表示(唯一)处理信号的不同控制

  • 问题内容: 我正在尝试使用jQuery在特定端口上运行AJAX查询: 这不起作用:没有进行AJAX调用,并且Firebug中没有任何异常。如果我不指定端口,它确实可以工作。有人知道为什么吗? 问题答案: 由于“ 同源来源”政策而无法使用。仅在相同的域,协议和端口中才允许AJAX请求。 如果您确实需要从该来源获取数据,则应该期待JSONP。

  • AccessibilityService在系统的内存管理方面与普通服务有何不同? 我想问的是:系统可以为了节省内存而关闭AccessibilityService吗?如果可以,当您进入AccessibilityService时,您会看到它打开还是关闭?用户是否必须再次手动打开? 使用startForeground是否有助于使AccessibilityService保持活动状态? 在一个类似的问题中,

  • 问题内容: 我正在使用Spring和struts,并且在“ /META-INF/context.xml”中具有以下条目 是否可以通过以下方式实现, 我的applicationContext.xml具有以下内容, 我想从属性文件中选取jdbc.username和jdbc.pwd的值。 问题答案: 使用Spring的PlaceholderPropertyConfigurer(仅替换Spring上下文中