ICode9

精准搜索请尝试: 精确搜索
  • Compiler intrinsics and assembly language2022-03-28 12:33:58

    https://docs.microsoft.com/en-us/cpp/intrinsics/?view=msvc-170 https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html intrinsics #include <mmintrin.h> // Intel MMX #include <xmmintrin.h> // Intel SSE #include <emmintrin.

  • ARM Neon Intrinsics 学习指北:从入门、进阶到学个通透2021-03-24 19:05:02

    本文同步发表于GiantPandaCV公众号,未经作者允许严禁转载   前言 Neon是ARM平台的向量化计算指令集,通过一条指令完成多个数据的运算达到加速的目的,常用于AI、多媒体等计算密集型任务。 本文主要是一篇对ARM官方资料的导读。笔者根据自己Neon学习经历,将这些资料按照逻辑进行组织,

  • ARM NEON Intrinsics 使用详解2021-01-14 20:01:21

    目录   前言 SIMD简介 ARM NEON Intrinsics简介 函数改写示例 结语   前言 最近公司在视频直播项目中要使用H.265/HEVC,具体的是使用HW硬件编码H.264/AVC,云端转码成H.265/HEVC并推流的解决方案。方案中使用的解码器是FFMpeg中的H.265解码器,该解码器是从OpenHEVC直接获取的,比起

  • python-在OSX 10.14.5上安装clickhouse-cityhash时缺少指令’_mm_crc32_u64′2019-12-10 20:56:47

    我试图在OSX 10.14.5上使用pip安装clickhouse-cityhash,但它失败,并显示以下(摘要)输出: src/city.cc:396:5: error: use of undeclared identifier '_mm_crc32_u64' CHUNK(1, 1); CHUNK(k0, 0); ^ ... fatal error: too many errors emitted, stopping now [-ferror-limit

  • c-128乘法和除法的内在函数2019-10-13 10:08:43

    在x86_64中,我知道mul和div opp代码通过将低64位放在rax中并将高64位放在rdx寄存器中来支持128个整数.我在intel内在函数指南中正在寻找某种内在函数来执行此操作,但找不到.我正在写一个大数字库,字长为64位.现在,我正在像这样用一个词进行除法. int ubi_div_i64(ubigint_t* a, ub

  • c-_mm_cvtsd_f64类似物,用于更高阶的浮点2019-10-12 10:05:42

    我在玩SIMD,想知道为什么没有类似_mm_cvtsd_f64的类来从__m128d引出高阶浮点. GCC 4.6进行了扩展,可以很好地实现此目的: __m128d a = ...; double d1 = a[0]; double d2 = a[1]; 但是在较旧的GCC(即4.4.)上,我唯一能设法做到这一点的方法是使用__builtin_ia32_vec_ext_v2df定义自

  • c-SSE半载(_mm_loadh_pi / _mm_loadl_pi)发出警告2019-10-11 23:09:28

    我从英特尔网站借来了矩阵求逆算法: http://download.intel.com/design/PentiumIII/sml/24504301.pdf 它使用_mm_loadh_pi和_mm_loadl_pi加载4×4矩阵系数并同时进行部分混洗.我的应用程序的性能改善非常显着,如果我使用_mm_load_ps对矩阵进行经典的加载/随机播放,则速度会稍慢一些.

  • c – 中止的xbegin事务是否恢复了xbegin启动时存在的堆栈上下文?2019-10-03 15:05:28

    我感兴趣的是在静态汇编程序库中将事务xbegin和xend封装在XBEGIN()和XEND()函数中.但是我不清楚如何(或者如果)堆栈恢复到原始xbegin调用状态,给定xabort源自其他堆栈级别(更高或更低).换句话说,动态堆栈上下文(包括中断效果)是否作为事务的另一部分进行管理和回滚? 对于没有支持或

  • c – 为什么编译器没有定义__ARM_FEATURE_CRC32?2019-10-03 07:06:25

    我已经在这个问题上工作了一段时间,我希望有人可以指出我的错误.我想我再也看不到穿过树林的森林了. 我有一个用于测试的LeMaker HiKey开发板.它的AArch64,所以它有NEON和其他cpu功能,如AES,SHA和CRC32: $cat /proc/cpuinfo Processor : AArch64 Processor rev 3 (aarch64) ...

  • c – 检查所有__m128i组件是否为0的最有效方法[使用<= SSE4.1内在函数]2019-09-27 18:05:34

    我正在使用SSE内在函数来确定矩形(由四个int32值定义)是否已更改: __m128i oldRect; // contains old left, top, right, bottom packed to 128 bits __m128i newRect; // contains new left, top, right, bottom packed to 128 bits __m128i xor = _mm_xor_si128(oldRect, newRec

  • c – 如果16位字节对齐,是否可以将浮点数直接转换为__m128?2019-09-27 09:07:05

    如果它们是16字节对齐的话,将浮点数直接转换为__m128是否安全/可行/可取? 我注意到使用_mm_load_ps和_mm_store_ps来“包装”原始数组会增加显着的开销. 我应该注意哪些潜在的陷阱? 编辑: 使用加载和存储指令实际上没有开销,我得到了一些数字混合,这就是为什么我有更好的性能.即使你能

  • c – 我什么时候应该使用_mm_sfence _mm_lfence和_mm_mfence2019-09-23 03:07:13

    我阅读了“英特尔架构的英特尔优化指南指南”. 但是,我仍然不知道我应该何时使用 _mm_sfence() _mm_lfence() _mm_mfence() 任何人都可以解释在编写多线程代码时何时应该使用它们?解决方法:警告:我不是这方面的专家.我还在努力学习这个.但由于过去两天没有人回复,看来记忆围栏指示

  • c – 为什么即使是16字节对齐的地址也会导致_mm_load_si128导致访问冲突?2019-08-31 00:06:57

    以下编译在MSVC上没有警告. #include <iostream> #include <emmintrin.h> int main() { __declspec(align(16)) int x = 42; std::cout << &x << "\n"; // Print out the address that holds x __m128i v = _mm_load_si128((__

  • c – _MM_TRANSPOSE4_PS导致GCC编译错误?2019-08-30 15:06:31

    我是第一次在GCC而不是MSVC中编译我的数学库,并且经历了所有的小错误,而且我找到了一个根本没有意义的数学库: 第284行:错误:左值作为赋值的左操作数 第284行是什么?这个: _MM_TRANSPOSE4_PS(r,u,t,_ mm_setr_ps(0.0f,0.0f,0.0f,1.0f)); (r,u和t都是__m128的实例) 那些熟悉使用xmmintrin

  • c – Intel SIMD – 如何检查__m256 *是否包含任何非零值2019-08-30 03:08:18

    我正在使用Microsoft Visual Studio编译器.我试图找出256位向量是否包含任何非零值.我试过res_simd =! _mm256_testz_ps(* pSrc1,* pSrc1);但它不起作用.解决方法:_mm256_testz_ps只测试符号位 – 为了测试你需要与0进行比较的值,然后提取结果掩码,例如 __m256 vcmp = _mm256_cmp_p

  • c – 为什么英特尔的一些内在函数采用const immediates,而另一些则是非const?2019-08-29 01:05:05

    Intel’s intrinsic guide似乎与直接的价值观有着神秘的区别.他们将一些标记为const而一些不标记为const.在实践中,两种类型无论是编译时间常数还是编译器都会抱怨.我只是想知道为什么这个区别?我错过了什么? 这是英特尔所说的一个例子: _mm_blend_epi16 (__m128i a, __m128i b, cons

  • c – 为什么_mm_set_epi16有时比_mm_load_si128快?2019-08-25 05:06:47

    我知道最好避免使用_mm_set_epi *,而是依赖于_mm_load_si128(如果数据未对齐,则依赖于_mm_loadu_si128,性能损失很小).但是,这对性能的影响似乎与我不一致.以下是一个很好的例子. 考虑使用SSE内在函数的以下两个函数: static uint32_t clmul_load(uint16_t x, uint16_t y) { co

  • c – SSE内在函数,用于复制寄存器中的字节2019-08-24 21:07:14

    假设我有四个浮点数加载到寄存器(f0到f3),如下面的伪代码所示: __m128 xmm1 = < f0, f1, f2, f3 > 现在我想将第一个元素复制到其他位置,以便我得到一个看起来如下的寄存器: __m128 xmm2 = < f0, f0, f0, f0 > (f0仅在该SSE登记册内有效) 如何以尽可能高效的方式存档?我知道有一个

  • C SSE2或AVX2内在函数,用于灰度到ARGB转换2019-08-24 00:07:04

    我想知道是否有一个SSE2 / AVX2整数指令或指令序列(或内在函数)要执行以实现以下结果: 给定一行8字节像素的形式: A = {a, b, c, d, e, f, g, h} 有没有办法在包含8个32位ARGB像素的YMM寄存器中加载这些像素,以便将初始灰度值广播到每个相应32位像素的其他2个字节?结果应该是这样的:

  • 使用SSE将C中32位整数的两个向量相乘的最快方法2019-07-29 00:07:08

    我有两个无符号向量,大小都是4 vector<unsigned> v1 = {2, 4, 6, 8} vector<unsigned> v2 = {1, 10, 11, 13} 现在我想将这两个向量相乘并获得一个新向量 vector<unsigned> v_result = {2*1, 4*10, 6*11, 8*13} 什么是SSE操作?它是跨平台还是仅跨平台 在某些指定的平台? 添加:如果

  • c# – JitIntrinsicAttribute如何影响代码生成?2019-07-13 22:18:15

    我浏览.NET源代码并看到了this attribute.它说, An attribute that can be attached to JIT Intrinsic methods/properties 并根据MSDN: Indicates that a modified method is an intrinsic value for which the just-in-time (JIT) compiler can perform special code gene

  • java – cpu的矩阵访问和乘法优化2019-07-03 17:50:18

    我在java中制作了一些内在优化的矩阵包装器(在JNI的帮助下).需要肯定这一点,你能给出关于矩阵优化的一些提示吗?我要实施的是: Matrix可以表示为四组缓冲区/数组,一组用于水平访问,一组用于垂直访问,一组用于对角访问,命令缓冲区仅在需要时计算矩阵元素.这是一个例子. Matrix signat

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有