小编MRO*_*ROF的帖子

检查向量是否包含大于零的任何元素

如果有人可以帮助编写一个接收AVX向量的函数并检查它是否包含任何大于零的元素,我将感激不尽.

我编写了以下代码,但它不是最佳的,因为它存储元素然后操纵它.矢量应该作为一个整体进行检查.

int check(__m256 vector)
{
  float * temp;
  posix_memalign ((void **) &temp, 32, 8 * sizeof(float));    
  _mm256_store_ps( temp, vector );

  int flag=0;
  for(int k=0; k<8; k++)
  {
    flag= ( (temp[k]>0) ? 1 : 0 );
    if (flag==1) return 1;
  }

  free( temp);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c vector avx

5
推荐指数
1
解决办法
883
查看次数

编译AVX2程序

我已经编写了一个具有AVX内在函数的程序,该程序可以在带有以下编译行的Ubuntu 12.4 LTS和GCC 4.6上正常运行:g ++ -g -Wall -mavx ProgramName.cc -o ProgramName

问题开始了当我将编译器更新到4.7和4.8.1版本以支持16位AVX2内部函数时,gcc 4.6不支持该内部函数

当前,更新的gcc版本可以正确编译AVX和AVX2程序。但是,当我运行程序时,它给了我以下错误:非法指令(核心转储),尽管它在gcc 4.6上运行

我的问题是:编译和运行AVX和AVX2内部函数的完美方法是什么?

c gcc avx avx2

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

avx ×2

c ×2

avx2 ×1

gcc ×1

vector ×1