【发布时间】:2017-12-11 06:48:58
【问题描述】:
我正在尝试运行一个由我的朋友创建的 Visual Studio cpp 项目。我正在尝试在没有 VS 的情况下运行该文件。但我得到了一个错误列表,格式相同:
inlining failed in call to always_inline '__m256d _mm256_broadcast_sd(const double*)': target specific option mismatch|
它在带有发布模式的VS中正常运行,在调试模式下运行时中断。
includes 如下:
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <vector>
# include <omp.h>
#include <chrono>
#include <fstream>
#include <algorithm>
#include <immintrin.h>
using namespace std::chrono;
using namespace std;
并且从这里调用错误:
double zero = 0;
__m256d acc = _mm256_broadcast_sd(&zero);
更新:
我正在使用这个命令来运行它:g++ -std=c++0x multip.cpp -o multip,是否有额外的参数可以将 -mavx 添加到编译器调用中?
【问题讨论】:
-
旁注不能解决您的问题:您可以使用 _mm256_setzero_pd()
-
相关:The Effect of Architecture When Using SSE / AVX Intrinisics 解释了 GCC/clang 与 MSVC/ICC 的不同之处:GCC/clang 要求您启用使用内在函数的扩展。他们永远不会在没有
-msse4.1的情况下发出 SSE4.1 指令,即使来自内在函数也是如此。
标签: c++ gcc x86 intrinsics avx