检查机器cpu是否支持 Intel dpdk 1.7

create date: 2014-8-12 19:37:34

作者:朝阳tony

邮箱:linzhaolover@163.com

声明:本文只用于学习交流使用,请勿用于其他商业用途,

转载请注明出处: http://blog.csdn.net/linzhaolover

此文请结合intel dpdk源码去阅读,基于dpdk-1.7 版本源码讲解,源码可以去http://dpdk.org/dev 网页中下载;更多官方文档请访问http://dpdk.org

intel DPDK交流群希望大家加入互相学习,QQ群号:289784125

摘要

今天有人在QQ群里提到了问题,说dpdk 1.7版本在自己的机器上编译不通过,编译时报sse4.2 错;后来查到原来是cpu不支持这个指令集;


1、编译时报的错误

dpdk1.7/lib/librte_acl/acl_bld.c:在函数'acl_calc_wildness'中错误:隐式声明函数'_mm_popcnt_u32'


开始我以为是确少库,上网查了一下发限这是simd指令集,就上网找了段例程自己试一下,

gcc     main.c   -o main
In file included from main.c:2:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/nmmintrin.h:31:3: error: #error "SSE4.2 instruction set not enabled"
make: *** [main] Error 1

2、查看cpu信息

# cat  /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi 
mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
 xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt 
lahf_lm arat epb dts tpr_shadow vnmi flexpriority ept vpid



注意,有的机器cpu是不支持sse4.1 和sse4.2这个指令集的,随着dpdk的版本升高,用到越来越新的指令集,希望大家在配置环境时,尽量用 新版本的机器或者系统;


加标志位在编译试试

# gcc   -msse4.2  main.c   -o main
编译通过


3、编写测试code

我将我的测试code列在这儿,这code是在网上找的

源码出处,

http://msdn.microsoft.com/zh-cn/library/bb514083.aspx


main.c

#include <stdio.h>
#include <nmmintrin.h>
//http://msdn.microsoft.com/zh-cn/library/bb514083.aspx
//发出的流 SIMD 扩展 4 (SSE4) 命令 popcnt。 此命令计算设置为 1. 参数的位数
int main ()
{
    unsigned int a = 0x2F63A150;

    int res = _mm_popcnt_u32(a);

    printf("Result res should be 14: %d\n", res);

    return 0;
}

Makefile

CC :=gcc

CFLAGS += -msse4.2
objects += main.o

Target := main

all: $(Target)

Target: $(objects)
        $(CC) $(CFLAGS) -c -o  $@


.PHONY:clean
clean:
        $(RM) $(objects) $(Target)

技术水平有待提高,如果文章有错误的地方希望读者指正,相互交流,互相学习;O(∩_∩)O~


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值