简单、可移植、快速的 SIMD 本征编程:通用 simd 库

WPMVP '14 Pub Date : 2014-02-16 DOI:10.1145/2568058.2568059
Haichuan Wang, Peng Wu, Ilie Gabriel Tanase, M. Serrano, J. Moreira
{"title":"简单、可移植、快速的 SIMD 本征编程:通用 simd 库","authors":"Haichuan Wang, Peng Wu, Ilie Gabriel Tanase, M. Serrano, J. Moreira","doi":"10.1145/2568058.2568059","DOIUrl":null,"url":null,"abstract":"Using SIMD (Single Instruction Multiple Data) is a cost-effective way to explore data parallelism on modern processors. Most processor vendors today provide SIMD engines, such as Altivec/VSX for POWER, SSE/AVX for Intel processors, and NEON for ARM. While high-level SIMD programming models are rapidly evolving, for many SIMD developers, the most effective way to get the performance out of SIMD is still by programming directly via vendor-provided SIMD intrinsics. However, intrinsics programming is both tedious and error-prone, and worst of all, introduces non-portable codes.\n This paper presents the Generic SIMD Library (https://github.com/genericsimd/generic_simd/), an open-source, portable C++ interface that provides an abstraction of short vectors and overloads most C/C++ operators for short vectors. The library provides several mappings from platform-specific intrinsics to the generic SIMD intrinsic interface so that codes developed based on the library are portable across different SIMD platforms.\n We have evaluated the library with several applications from the multimedia, data analytics and math domains. Compared with platform-specific intrinsics codes, using Generic SIMD Library results in less line-of-code, a 22% reduction on average, and achieves similar performance as platform-specific intrinsics versions.","PeriodicalId":411100,"journal":{"name":"WPMVP '14","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2014-02-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"21","resultStr":"{\"title\":\"Simple, portable and fast SIMD intrinsic programming: generic simd library\",\"authors\":\"Haichuan Wang, Peng Wu, Ilie Gabriel Tanase, M. Serrano, J. Moreira\",\"doi\":\"10.1145/2568058.2568059\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Using SIMD (Single Instruction Multiple Data) is a cost-effective way to explore data parallelism on modern processors. Most processor vendors today provide SIMD engines, such as Altivec/VSX for POWER, SSE/AVX for Intel processors, and NEON for ARM. While high-level SIMD programming models are rapidly evolving, for many SIMD developers, the most effective way to get the performance out of SIMD is still by programming directly via vendor-provided SIMD intrinsics. However, intrinsics programming is both tedious and error-prone, and worst of all, introduces non-portable codes.\\n This paper presents the Generic SIMD Library (https://github.com/genericsimd/generic_simd/), an open-source, portable C++ interface that provides an abstraction of short vectors and overloads most C/C++ operators for short vectors. The library provides several mappings from platform-specific intrinsics to the generic SIMD intrinsic interface so that codes developed based on the library are portable across different SIMD platforms.\\n We have evaluated the library with several applications from the multimedia, data analytics and math domains. Compared with platform-specific intrinsics codes, using Generic SIMD Library results in less line-of-code, a 22% reduction on average, and achieves similar performance as platform-specific intrinsics versions.\",\"PeriodicalId\":411100,\"journal\":{\"name\":\"WPMVP '14\",\"volume\":\"1 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2014-02-16\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"21\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"WPMVP '14\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/2568058.2568059\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"WPMVP '14","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2568058.2568059","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 21

摘要

使用 SIMD(单指令多数据)是在现代处理器上探索数据并行性的一种经济有效的方法。目前,大多数处理器供应商都提供 SIMD 引擎,如 POWER 处理器的 Altivec/VSX、Intel 处理器的 SSE/AVX 和 ARM 处理器的 NEON。虽然高级 SIMD 编程模型发展迅速,但对于许多 SIMD 开发人员来说,获得 SIMD 性能的最有效方法仍然是直接通过供应商提供的 SIMD 本征编程。然而,本征编程既繁琐又容易出错,最糟糕的是还会引入不可移植的代码。本文介绍了通用 SIMD 库 (https://github.com/genericsimd/generic_simd/),这是一个开源、可移植的 C++ 接口,提供了短向量的抽象,并为短向量重载了大多数 C/C++ 运算符。该库提供了从特定平台内在函数到通用 SIMD 内在函数接口的几种映射,因此基于该库开发的代码可以在不同 SIMD 平台上移植。我们利用多媒体、数据分析和数学领域的多个应用对该库进行了评估。与特定平台的本征代码相比,使用通用 SIMD 库减少了代码行数,平均减少了 22%,并获得了与特定平台本征版本类似的性能。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Simple, portable and fast SIMD intrinsic programming: generic simd library
Using SIMD (Single Instruction Multiple Data) is a cost-effective way to explore data parallelism on modern processors. Most processor vendors today provide SIMD engines, such as Altivec/VSX for POWER, SSE/AVX for Intel processors, and NEON for ARM. While high-level SIMD programming models are rapidly evolving, for many SIMD developers, the most effective way to get the performance out of SIMD is still by programming directly via vendor-provided SIMD intrinsics. However, intrinsics programming is both tedious and error-prone, and worst of all, introduces non-portable codes. This paper presents the Generic SIMD Library (https://github.com/genericsimd/generic_simd/), an open-source, portable C++ interface that provides an abstraction of short vectors and overloads most C/C++ operators for short vectors. The library provides several mappings from platform-specific intrinsics to the generic SIMD intrinsic interface so that codes developed based on the library are portable across different SIMD platforms. We have evaluated the library with several applications from the multimedia, data analytics and math domains. Compared with platform-specific intrinsics codes, using Generic SIMD Library results in less line-of-code, a 22% reduction on average, and achieves similar performance as platform-specific intrinsics versions.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
A SIMD programming model for dart, javascript,and other dynamically typed scripting languages Exploring the vectorization of python constructs using pythran and boost SIMD Vector seeker: a tool for finding vector potential Simple, portable and fast SIMD intrinsic programming: generic simd library High level transforms for SIMD and low-level computer vision algorithms
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1