qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [v2 0/2] add avx2 instruction optimization


From: Michael S. Tsirkin
Subject: Re: [Qemu-devel] [v2 0/2] add avx2 instruction optimization
Date: Thu, 7 Apr 2016 15:54:05 +0300

On Thu, Apr 07, 2016 at 12:09:52PM +0100, Dr. David Alan Gilbert wrote:
> * Eric Blake (address@hidden) wrote:
> > On 11/12/2015 12:56 PM, Dr. David Alan Gilbert wrote:
> > 
> > >> One thing I still can't understand, why the unit test in host 
> > >> environment shows
> > >> 'memcmp()' have better performance?
> > 
> > Have you tried running under a profiler, to see if there are hotspots or
> > at least get an idea of where the time is being spent?
> > 
> > > 
> > > Are you aware of any program other than QEMU that also wants to do 
> > > something
> > > similar?  Finding whether a block of memory is zero, sounds like something
> > > that would be useful in lots of places, I just can't think which ones.
> > 
> > At least dd, cp, and probably several other utilities.  It would be nice
> > to post an RFE to glibc to see if they can come up with a dedicated
> > interface that is faster than memcmp(), although that still only helps
> > us when targetting a system new enough to have that interface.
> 
> I've just posted that RFE:
> https://sourceware.org/bugzilla/show_bug.cgi?id=19920
> 
> Dave

Have you guys seen the discussion in
http://rusty.ozlabs.org/?p=560#respond

In particular it claims this is close to optimal:


char check_zero(char *p, int len)
{
    char res = 0;
    int i;

    for (i = 0; i < len; i++) {
        res = res | p[i];
    }

    return res;
}


If you compile this function with --tree-vectorize and --unroll-loops.

Now, this version always scans all of the buffer, so
it will be slower when buffer is *not* all-zeroes.

Which might indicate that you need to know what your
workload is to implement compare to zero efficiently,
and if that is the case, it's not clear this is appropriate for libc.


> > -- 
> > Eric Blake   eblake redhat com    +1-919-301-3266
> > Libvirt virtualization library http://libvirt.org
> > 
> 
> 
> --
> Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]