intrinsics

    -2热度

    1回答

    在OpenGL/DirectX的常见操作(如三角形填充,纹理映射,剪辑等)中是否存在特定于GPU的内部函数/指令? 如果是这样,可以使用运行在GPU上的OpenCL或CUDA代码访问它们吗? 编辑:我,想知道如果像三角形填充等在OpenGL操作使用的是不能从的OpenCL或CUDA访问特定的GPU指令,因此,这是不可能为有效地实施他们的OpenCL/CUDA ,因为他们将使用OpenGL(具有渲染

    0热度

    1回答

    比方说,我有4个浮点矢量: __m128 vector = |f0|f1|f2|f3| (pseudocode) 我的目的是变量转换成这样: |0.0|f0|f1|f2| 做一个右移似乎是最简单的选择,但我一直没能找到这样一种可用于浮筒的内在物质。 什么是最快的方法来实现这一目标?

    2热度

    2回答

    我想知道是否有一个SSE2/AVX2整数指令或指令(或内在)序列: 给定一个的形式的8个字节的像素行: A = {a, b, c, d, e, f, g, h} 是否有任何方式来加载在包含8个32位ARGB像素,使得初始灰度值被广播到其它各2个字节的YMM寄存器这些像素对应的32位像素?结果应该是这样的:(0是Alpha值) B = {0aaa, 0bbb, 0ccc, 0ddd, 0eee,

    2热度

    2回答

    我想知道是否可以通过英特尔的SSE内部函数检查处理器的标志寄存器吗? 例如: int idx = _mm_cmpistri(mmrange, mmstr, 0x14); int zero = _mm_cmpistrz(mmrange, mmstr, 0x14); 在该示例中,编译器能够这两个内在优化对单个指令(pcmpistri)并检查标志由一个跳转指令(jz)寄存器。 然而,在下面的示例中

    0热度

    1回答

    我试图使用Intel Intrinsics在float阵列上快速执行操作。这些行动本身似乎运作良好;但是,当我尝试将操作的结果转换为标准C变量时,我得到一个SEGFAULT。如果我将下面的指示线注释掉,程序就会运行。如果我保存指定行的结果,但不以任何方式操纵它,程序运行正常。只有当我试图(以任何方式)与_mm_cvtss_f32(C)的结果进行交互时,我的程序才会崩溃。有任何想法吗? float

    1热度

    1回答

    背景:我开发了一个用C/C++编写的计算密集型工具,必须能够在各种不同的x86_64处理器上运行。为了加快float和integer的计算速度,代码中包含了很多SSE *内在函数,并针对不同的CPU SSE功能量身定制了不同的路径。 (由于CPU标志在程序开始时被检测到并用于设置布尔值,因此我假设对于量身定制的代码块的分支预测将非常有效地工作)。 为简单起见,我认为只有SSE2到SSE4.2需要考

    6热度

    1回答

    我该如何编写一个便携的GNU C builtin vectors版本,它不依赖于x86 set1内在的? typedef uint16_t v8su __attribute__((vector_size(16))); v8su set1_u16_x86(uint16_t scalar) { return (v8su)_mm_set1_epi16(scalar); // cast ne

    1热度

    1回答

    我正在使用AVX2 x86 256位SIMD扩展。我想要做一个32位整数成分明智的if-then-else指令。在英特尔文档中,这样的指令称为vblend。 英特尔内部指南包含函数_mm256_blendv_epi8。这个功能几乎可以满足我的需求。唯一的问题是它与8位整数一起工作。不幸的是,文档中没有_mm256_blendv_epi32。我的第一个问题是:为什么这个功能不存在?我的第二个问题是:

    3热度

    1回答

    我试图找到一种更有效的方法来“旋转”或将avx _m256矢量中的32位浮点值向右或向左移动一个地方。 使得: A7,A6,A5,A4,A3,A2,A1,A0 变得 0,A7,A6,A5,A4,A3,A2,A1 (我不介意,因为我反正更换单元中的数据丢失。) 我已经查看了这个线程:Emulating shifts on 32 bytes with AVX 但我不雷尔y理解正在发生的事情,并且它不会

    2热度

    1回答

    我认为我对延迟和吞吐量之间的差异有一个很好的理解。但是,对于Intel Intrinsics而言,延迟对指令吞吐量的影响对我来说并不明确,特别是在按顺序(或几乎按顺序)使用多个内部调用时。 例如,让我们考虑: _mm_cmpestrc 此为11延迟,并且在处理器的Haswell吞吐量7。如果我在一个循环中运行这个指令,我会在11个周期后得到一个连续的每个周期输出吗?由于这需要一次运行11条指令