Sab*_*zra 3 c gcc simd codeblocks
我正在运行带有 SIMD 指令的 C 代码来测试我的环境。我在 Codeblocks 和 Windows 10 中运行它
#include <immintrin.h>
#include <stdio.h>
#define ARRAY_LENGTH 8
int main(int argc, char* argv[]) {
__m256i first = _mm256_set_epi32(10, 20, 30, 40, 50, 60, 70, 80);
__m256i second = _mm256_set_epi32(5, 5, 5, 5, 5, 5, 5, 5);
__m256i result = _mm256_add_epi32(first, second);
int* values = (int*) &result;
for (
unsigned short i = 0;
i < ARRAY_LENGTH;
i += 1
) {
printf("%d ", values[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码抛出一个错误,我无法修复它。
error: inlining failed in call to always_inline '_mm256_add_epi32': target specific option mismatch
Run Code Online (Sandbox Code Playgroud)
是Codeblocks环境造成的吗?
您必须通过在 gcc 命令行中添加正确的选项来本地启用相应的指令集,-mavx2 在本例中,即:
gcc -O2 -mavx2 prog.c -o prog
Run Code Online (Sandbox Code Playgroud)
当然,你必须确保你运行程序的CPU确实支持这个指令集扩展,否则你会遇到分段错误或非法指令异常。
| 归档时间: |
|
| 查看次数: |
4702 次 |
| 最近记录: |