On Wed, Nov 12, 2014 at 10:23:49AM -0500, Neil Horman wrote: > On Wed, Nov 12, 2014 at 02:24:10PM +0000, De Lara Guarch, Pablo wrote: > > > > > > > -----Original Message----- > > > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Masaru Oki > > > Sent: Wednesday, November 12, 2014 1:48 PM > > > To: Yaron Illouz > > > Cc: <dev at dpdk.org> > > > Subject: Re: [dpdk-dev] compile dpdk with no avx > > > > > > Hi, > > > > > > Some libraries need AVX instruction, but if you don't use, it can disable. > > > e.g. CONFIG_RTE_LIBRTE_IXGBE_PMD=n in config file. > > > > > > > > > 2014-11-12 21:45 GMT+09:00 Yaron Illouz <yaroni at radcom.com>: > > > > Hi > > > > > > > > > > > > > > > > I use dpdk in my product. I can't change my dpdk version. > > > > > > > > I compile it on a server that have avx. > > > > > > > > Most of the time, it run on machine that have avx, but not always. > > > > > > > > > > > > > > > > When running the product on a machine with no avx, it crash on illegal > > > > instruction. > > > > > > > > The current solution is to build it on a computer with no avx. > > > > > > > > > > > > > > > > Is there a compilation flag to disable avx? So it doesn't matter on > > > > which computer I compiled it. > > > > Basically, you are looking at cross-compiling DPDK. One thing you could do > > is go to one of the config files (i.e. > > defconfig_x86-64-native-linuxapp-gcc) > > and change CONFIG_RTE_MACHINE, from "native" to one of the > > micro-architectures that do not have avx, such as "wsm" (Westmere). > > > What version of dpdk are you running? We fixed this a while ago with > commits 8777aabc538fdac24457958eaab929f33d6c4cdf and > 074f54ad03ee0c84dcae235933e2b426208fe591. They do runtime checking for > availability of the AVX and SSE3 instructions and only exeucte paths using > those > instructions if the running cpu supports them. Note that you are still > required > to build for the default arch. > Neil >
Hi Neil, those commits only fix the cases where we compile the code generically, and have specific runtime code paths. However, when compiling for a native target the compiler will freely use AVX instructions when it feels it will lead to faster code. There is no run-time checking we can do to avoid this, hence the need for changing the build-time configuration. /Bruce > > Regards, > > Pablo > > > > > > > > > > > > > > > > > > Compile flag > > > > > > > > defconfig_x86_64-default-linuxapp-gcc > > > > > > > > > > > > > > > > Dpdk version > > > > > > > > PACKAGE_VERSION_MAJOR_NUMBER=1 > > > > > > > > PACKAGE_VERSION_MINOR_NUMBER=6 > > > > > > > > PACKAGE_VERSION_PATCH_NUMBER=0 > > > > > > > > PACKAGE_VERSION_BUILD_NUMBER=18 > > > > > > > > > > > > > > > > Gcc version > > > > > > > > gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4) > > > > > > > > > > > > > > > > OS > > > > > > > > CentOS release 6.3 (Final) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >