|
Message-ID: <CABh=JRFYn1VaPA2kOt8AfEYRbOt8KvF7-pf05M6UsvFWqX8qSg@mail.gmail.com>
Date: Sat, 21 Apr 2012 03:39:49 +0300
From: Milen Rangelov <gat3way@...il.com>
To: john-dev@...ts.openwall.com
Subject: Re: cl_khr_byte_addressable_store
Yes, there are natively no 8-bit writes, it's 32-bit. When you actually
write a char to local or global memory, using the extension, the compiler
does some things behind the scenes. uchar writes to global memory use
complete path. Writes to local memory have (I guess) implicit barrier even
if each workitem writes to its part of local memory because the compiler
can't be smart enough to figure that out. Not that you can't use byte
addressable stores, but it's slow because the compiler can't make the
assumptions about your code. Fortunately though, bitwise macros work good
for both hardware vendors, even with vectorized code.
Anyway that's just my opinion, I am not trying to impose it. The best thing
is to code several versions and profile/benchmark them.
On Sat, Apr 21, 2012 at 2:26 AM, magnum <john.magnum@...hmail.com> wrote:
> On 04/21/2012 01:03 AM, Solar Designer wrote:
> > On Sat, Apr 21, 2012 at 12:45:56AM +0200, magnum wrote:
> >> Then I'm afraid you lost me. Just how should I approach this? Should I
> >> do two separate kernels or should I try some kind of bit-flipping
> >> madness that just might work on both AMD and nvidia?
> >
> > I can't speak for Milen, but I guess that to write a byte you need to
> > read a naturally aligned 4-byte word, mask out the original byte in it,
> > OR in your new byte value, and write that word back. Of course, this is
> > non-atomic, but you should not be accessing nearby bytes from another
> > thread anyway.
> >
> > An obvious optimization would be to combine multiple byte writes
> > together such that you read/write fewer words (such as one per 4 bytes).
>
> Yes, thanks. I already do things similar to what you say for performance
> reasons but the non-aligned cases will get nasty (or tedious at the very
> least) if I am not allowed to ever write an unaligned byte. I am really
> surprised by this limitation, this was not the obstacles I was picturing
> when I got into this game.
>
> The older I get, the older I become :)
>
> magnum
>
>
Content of type "text/html" skipped
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.