首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有效使用英特尔编译器SVML `__m128 _mm_sincos_ps ()`

__m128 _mm_sincos_ps() 是英特尔编译器SVML(Short Vector Math Library)中的一个函数,用于计算一组四个单精度浮点数的正弦和余弦值。

该函数的参数是一个包含四个单精度浮点数的向量(__m128类型),返回值也是一个包含四个单精度浮点数的向量。

函数的作用是同时计算输入向量中每个元素的正弦和余弦值,并将结果存储在返回的向量中。这种向量化计算可以提高计算效率,特别适用于需要大量计算正弦和余弦值的场景,如图形渲染、物理模拟等。

使用_mm_sincos_ps()函数可以有效地利用英特尔处理器的SIMD(Single Instruction, Multiple Data)指令集,实现并行计算,提高计算性能。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云计算产品:https://cloud.tencent.com/product
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云弹性容器实例(Elastic Container Instance):https://cloud.tencent.com/product/eci
  • 腾讯云函数计算(Serverless Cloud Function):https://cloud.tencent.com/product/scf
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏多媒体引擎(GME):https://cloud.tencent.com/product/gme
  • 腾讯云视频直播(Live):https://cloud.tencent.com/product/live
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Open Source Talk 02|首个中国团队自己培养的OpenJDK Reviewer背后的那些事

在架构设计方面,Kona修复了Vector API对C2编译器强耦合的顶层设计缺陷。如上图所示,虚拟机执行引擎包括解释器、C1编译器和C2编译器三种。...SVML是一款高性能向量优化数学库,用于进一步加速Vector API的向量数学运算。受C2编译器历史遗留的至少两个double才能向量化的限制,官方最初的SVML无法对单个double数据进行加速。...但实际业务中会经常使用单个double的数学运算,优化的需求也很大。...经过反复分析和实验,我们打破了C2编译器强制要求至少两个double的不合理限制,巧妙地将单个double数据转换为64位向量进行SVML加速。...后来由于其重要性,在我不知情的前提下,该Patch被社区GC专家反向移植到了JDK8和JDK11等业界广泛使用的版本。

71720

Tencent Kona:OpenJDK贡献全国四连冠,赋能数据科学计算加速

▍Kona:连续四次全国冠军,综合贡献全国第一 Kona是腾讯基于OpenJDK研发的JDK产品,Kona JDK完全免费,并提供长期支持,所发版本均通过腾讯内部和云上超大规模应用验证,欢迎下载使用。...受向量编译器历史遗留的至少需要两个double才能向量化的限制,最初的SVML无法对单个double数据进行加速。但实际业务基于单个double的数学运算也很常见,加速需求也很迫切。...经过反复分析和实验,Kona突破了向量编译器强制要求至少两个double的限制,巧妙地将单个double视为64位向量进行SVML加速。...于是优化了SVML对幂运算的加速策略,当且仅当在AVX512机型上才启用,从而解决了SVML性能下降问题。...最后,欢迎各位优秀的开发者加入腾讯大数据编译器团队!

80321
  • SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(一)。

    注意到列方向的边缘位置,为了方便代码的处理,我们在高度方向上上下分别扩展了3个行的像素,当进行完中间的有效行的行方向前向和反向传播后,按照前述的重复边缘像素的方式填充上下那空出的三行数据。      ...LinePD[0] = LinePS[0]; LinePD[1] = LinePS[1]; LinePD[2] = LinePS[2]; } } } 在有效的范围内...对于同样的3000*2000的彩色图像,SSE版本的代码耗时只有145ms的耗时,相对于普通的C代码有约2.5倍左右的提速,这也情有可原,因为我们在执行SSE的代码时时多处理了一个通道的计算量的,但是同编译器自身的...SSE优化220ms,只有1.5倍的提速了,这说明编译器的SSE优化能力还是相当强的。      ...比如我们指定openmp使用2个线程,在上述机器上(四核的),纯C版本能优化到252ms,而纯SSE的只能提高到100ms左右,编译器自身的SSE优化速度大约是150ms,基本上还是保持同一个级别的比例

    2.1K60

    SSE图像算法优化系列二:高斯模糊算法的全面优化过程分享(二)。

    ,所以我就想我如果直接用汇编写效率肯定还能有进一步的提高,于是我首先尝试把GaussBlurFromLeftToRight_SSE优化,仔细观察这个函数,如果弄得好,确实能有效的利用这些寄存器,有关代码如下...后来我反编译intrinsics的相关代码,发现编译器真的很厉害,他的汇编代码和我上面的基本一致,只是寄存器的利用顺序有所不同而已,后面又看了其他的几个函数,发现编译器的汇编码都写的非常高效,基本上我们是超不过他了...,而且编译器还能充分调整指令执行的顺序,使得有关指令还能实现指令层次的并行,而如果我们自己写ASM,这个对功力的要求就更高了,所以说网络上的说法也不可以完全相信,而如果不是有特别强的汇编能力,也不要去挑战编译器...同样为了节省内存,我们也使用了类似上述第三种和第四重尝试的方式,但是考虑到Deriche的特殊性(主要是 ?...这里),他还是需要一份中间内存的,为了效率和内存,我们再次以牺牲精度为准备,中间使用了一份和图像一样的字节数据内存。

    1.4K60

    《游戏引擎架构》阅读笔记 第一部分第4章

    插值时,平移矢量和缩放因子采用LERP,四元数则可使用LERP或SLERP。(P166 last2) 对偶四元数:对偶四元数四个分量为对偶数。...其他数学对象 直线,射线,线段 球体 平面:点法式 轴对齐包围盒:AABB;定向包围盒:OBB(P171) 平截头体:(P171 last) 凸多面体区域 4.7 硬件加速的SIMD运算 1994年,英特尔...英特尔陆续加入多个版本的扩展指令集,称为单指令数据流扩展(streaming SIMD extensions,SSE),其中第一个SSE版本出现于奔腾III处器。...(P173) SSE寄存器(P173) _m128数据类型:此数据类型可以声明全局变量、自动变量和类或结构体的成员变量。...大多数情况下,此数据类型的变量会存储于内存中,但在计算之时_m128的值会直接在CPU的SSE寄存器中运用43。

    36110

    如何在 i5 上实现 20 倍的 Python 运行速度?

    使用 “conda create”来创造被我称之为 intelpy 的环境。...然后,我能够使用 “source activate intelpy”、“source deactivate intelpy”来激活、关闭它。...值得注意的是, “accelerated Python” 只是使用更快的 Python 算法库,不需要对代码做任何改动。当然,我们的 Python 代码必须使用了某些加速的东西,才能从中获益。...据 AI 研习社得知,英特尔通过三大方面实现 Python 加速: 利用多核; 利用矢量指令(SIMD),比如 SSE, AVX, AVX2 和 AVX-512; 使用英特尔 Math Kernel...这些优化的核心是对 NumPy 的改变,使得 primitives (在 ndarray 数据上进行运算)能选择性地使用英特尔 MKL Short Vector Math Library (SVML)

    1.9K130

    第十二章:向量指令 第一部分

    为此,使用了所谓的内嵌函数,这些是嵌入编译器的对象。在头文件中声明一个或多个数据类型,并且这些类型的变量对应于一个向量寄存器。...实际上,这些函数并不是用软件实现的:相反,编译器在生成目标代码时,用向量指令替换了对它们的每个调用。因此,内嵌函数允许使用高级语言编写程序,其性能接近或等同于汇编程序。...使用内嵌函数所需的一切就是包含相应的头文件,并且在使用某些编译器时,应启用相应的编译器选项。...图 3:水平加法 SSE3 和 SSSE3 指令集引入了水平加法的指令(图3):_mm_hadd_ps(__m128 a, __m128 b)、_mm_hadd_pd(__m128d a, __m128d...英特尔有一个在线参考,您可以在那里找到所有指令集内嵌函数的全面描述。ARM CPU 也有类似的参考。 如果您想了解向量指令的实际用途,请参考音频和视频编解码器的免费软件实现。

    13810

    深度优化局部拉普拉斯金字塔滤波器

    V = _mm_loadu_ps(GaussPyramid[0] + I); __m128 Diff = _mm_sub_ps(V, _mm_set1_ps(ref)); __m128...再者,我们还是来讨论下映射函数的问题,前面讲了,快速版本的代码使用的映射函数并没有使用原始论文的版本,所以我们尝试把这个替换一下,得到的结论就是,原始版本的映射函数不适合插值使用,效果如下所示: ?...接下来我们分析另外一个问题,现在我们推荐使用高斯曲线来进行数据的映射,当函数中f取值小于0时,是处于一个去燥或者说平滑图像的作用,同时还能有效地保留边缘,当f大于0时,起到了细节增强或者说锐化的作用,因此...,f小于0时该滤波器的作用相当于一个保边滤波器,比如他也可以有效地用在磨皮中(f = -1左右): ?...医学图像通常有很多都是16位的,该算法对16位依然有效,只是处理过程要稍作修改即可。

    1.2K40

    深度优化局部拉普拉斯金字塔滤波器。

    V = _mm_loadu_ps(GaussPyramid[0] + I); __m128 Diff = _mm_sub_ps(V, _mm_set1_ps(ref)); __m128...再者,我们还是来讨论下映射函数的问题,前面讲了,快速版本的代码使用的映射函数并没有使用原始论文的版本,所以我们尝试把这个替换一下,得到的结论就是,原始版本的映射函数不适合插值使用,效果如下所示: ?...接下来我们分析另外一个问题,现在我们推荐使用高斯曲线来进行数据的映射,当函数中f取值小于0时,是处于一个去燥或者说平滑图像的作用,同时还能有效地保留边缘,当f大于0时,起到了细节增强或者说锐化的作用,因此...,f小于0时该滤波器的作用相当于一个保边滤波器,比如他也可以有效地用在磨皮中(f = -1左右): ?...医学图像通常有很多都是16位的,该算法对16位依然有效,只是处理过程要稍作修改即可。

    2.4K30

    一文了解 ClickHouse 的向量化执行

    参考:https://www.cnblogs.com/xidian-wws/p/11023762.html C++使用SIMD编程的3种方法 SIMD指令集的使用,有如下三种方式: •编译器优化 即使用...C/C++编写程序之后,带有SIMD优化选项编译,在CPU支持的情况下,编译器按照自己的规则去优化。...•使用intrinsic指令 参考Intel手册,针对SIMD指令,可以在编程时直接使用其内置的某些库函数,编译的时候在cpu和编译器的支持下会生成对应的SIMD指令。.../huaping-audio/p/4115890.html 简单运算的Intrinsic和SSE指令对比 使用Intrinsic函数的代码: __m128 a1, b2; __m128 c1; for...源存储器内容按双字对齐,共4个单精度浮点数与目的寄存器相加,结果送入目的寄存器 计算机硬件支持与编译器支持 要能够使用 Intel 的 SIMD 指令集,不仅需要当前 Intel 处理器的硬件支持,还需要编译器的支持

    6.4K31

    英特尔公布首款AI推理芯片,今年年底量产

    历时两年,英特尔的AI推理芯片终于要来了。...最早在2017年,英特尔就表示正在研发两款AI加速器芯片,一款用于推断工作负载,另一款用于训练。...除此之外,英特尔提供了一个编译器,可以为NNP-I的加速器定制代码,并与Facebook合作,以确保Glo编译器也支持该设备。...英特尔人工智能产品业务总经理Naveen Rao表示,“为了实现‘AI无处不在’的未来的场景,我们必须收集处理大量的数据,并确保能有效利用数据所需的资源,所以这些计算机需要提高速度以运行复杂的人工智能应用...目前,英特尔已经开发了两代NNP-I,并开始向客户提供样品,他们准备在今年年底量产该款芯片。

    34810

    SSE图像算法优化

    在此过程中使用到的高斯模糊的权重矩阵的形式如下所示: ?   ...int ValidLen = DstLen - 2; // -2是因为第一和最后一个点的部分取样值是不在有效范围内的 int BlockSize...也很简单,我们使用_mm_loadu_si128一次性加载16个字节,然后每隔一个像素就置0,这样就相当于把剩下的8个像素的值直接变为了16位数据了,一举两得。...以上谈及的均是单通道的算法,如果是BGR 3个通道或者BGRA 4个通道的图像数据,情况就会复杂一些,但是同样的道理,可以使用shuffle来调整位置,然后使用类似的方式处理。   ...void IM_DownSampleLine32F(float *Src, float *Dest, int DstLen, int Channel) { // 只处理中间有效范围内的数,

    1K20

    英特尔开源HE-Transformer,允许AI模型对加密数据进行操作

    它作为英特尔神经网络编译器nGraph的后端,基于简单加密算法库(SEAL),这个加密库是微软研究院于本周开源的。 两家公司将HE-Transformer描述为“隐私保护”机器学习的一个例子。...英特尔研究科学家Fabian Boemer和英特尔研究高级主管Casimir Wierzynski在一篇博客文章中写道,“HE允许对加密数据进行计算。...它有效地消除了将模型手动集成到HE加密库中的需要。...由于这些优化,英特尔宣称,HE-Transformer在加密网络学习神经网络上提供了最先进的性能,可以使用TensorFlow中训练的浮点模型应用于加密数据。...目前,HE-Transformer直接与TensorFlow的nGraph编译器和运行时集成,并且即将支持PyTorch。

    1.1K60

    【说站】英特尔宣布推出LLVM架构的CC++编译器

    英特尔宣布推出LLVM架构的C/C++编译器 日前,英特尔官宣推出基于 LLVM 架构的下一代 C/C++ 编译器,从而代替之前经典的英特尔 C++ 编译器。...LLVM是底层虚拟机(Low Level Virtual Machine)的缩写,是一个开源的编译器架构,LLVM 核心库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。...对此,英特尔专家James R Reinders在一篇文章中做了解释:“英特尔为什么将 LLVM 用于最新的 C/C++ 编译器。...并且强调了 LLVM 可以帮助英特尔实现最佳 C/C++ 编译器的目标,认为使用基于LLVM架构的最新 C/C++ 编译器,可以获得更快的编译时间、更好的优化,更多技术标准的支持以及对 GPU 和 FPGA...最新编译器的未来计划 英特尔建议所有新项目都使用基于 LLVM 的英特尔 C/C++ 编译器,计划在今年把所有项目都迁移到新的编译器

    47840

    图像处理中任意核卷积(matlab中conv2函数)的快速实现。

    由于matlab的代码中使用到了IPL库进行加速,目前我写的Conv2函数还无法做到和其相当,对于任何核速度约为matlab的一半。      ...我的优化方法主要包括以下几个方面:       一:使用SSE进行乘法计算,由于SSE可以一次性进行4个单精度浮点数的计算,因此可以有明显的速度提升。      ...__m128 Sum0 = _mm_setzero_ps(); // 求和变量。...SSE赋初值0 __m128 Sum1 = _mm_setzero_ps(); __m128 Sum2 = _mm_setzero_ps(); __m128...第一:由于卷积取样时必然有部分取样点的坐标在原始图像的有效范围外,因此必须进行判断,耗时。第二:同样为了使用SSE,也必须把取样的数据放在和扩充的卷积矩阵一样大小的内存中。

    3.8K80
    领券