cmake配置
cmake_minimum_required(VERSION 3.10)
project(BenchmarkTest)
set(CMAKE_CXX_STANDARD 11)
# 查找 Google Benchmark
find_package(benchmark REQUIRED)
# 添加源文件
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx512f -march=native")
add_definitions(-std=c++11)
add_executable(benchmark_test main.cc)
# 链接 Google Benchmark 库
target_link_libraries(benchmark_test benchmark::benchmark)
示例
#include <immintrin.h>
#include <iostream>
#include <cstring>
#include <benchmark/benchmark.h>
void mp_avx512(const int16_t * a, const int16_t * b, int16_t *result, size_t len){
for(int i = 0; i < len; ++i){
__m512i va = _mm512_loadu_si512(reinterpret_cast<const __m512i*>(a + i));
__m512i vb = _mm512_loadu_si512(reinterpret_cast<const __m512i*>(b + i));
__m512i vc = _mm512_mullo_epi16(va, vb);
_mm512_storeu_si512(reinterpret_cast<__m