|
Message-ID: <63ab08c183319a02c62da2a79c455f80@smtp.hushmail.com> Date: Fri, 1 Mar 2013 10:37:50 +0100 From: magnum <john.magnum@...hmail.com> To: john-dev@...ts.openwall.com Subject: Re: sizeof(unsigned long) On 1 Mar, 2013, at 10:25 , magnum <john.magnum@...hmail.com> wrote: > On 1 Mar, 2013, at 4:03 , Claudio André <claudioandre.br@...il.com> wrote: > >> Em 28-02-2013 23:37, magnum escreveu: >>> Claudio, >>> >>> In both opencl_sha256.h and opencl_sha512.h, you define uint64_t like this: >>> >>> #define uint64_t unsigned long //Tip: unsigned long long int failed on compile (AMD). >>> >>> Unsigned long will fail on most 32-bit builds and even some 64-bit ones, because it will be just 32-bits. If you need a workaround, this is not sufficient. OTOH if uint32_t is enough, you should obviously use that instead. >>> >>> Apparently some people are very fond of 32-bit builds so this must be fixed. Are you sure using long longs caused failures? Sounds weird to me. >> Well (it should be C99 compliant): >> Build log: "/tmp/OCLhwRn1e.cl", line 37: error: the type "long long" is nonstandard >> >> I care about it only inside OpenCL code. I will try to think about it further. >> >> Claudio >> > > Apparently long long is 128-bit in OpenCL, and long is always 64-bit. I did not know this, I just saw it in the reference. So on GPU side you should keep it as unsigned long but on CPU side it should better be ARCH_WORD_64 (or better, include "stdint.h" for a proper definition of uint64_t) Since long is always 64-bit in OpenCL you can use cl_ulong - this should work fine on both CPU and GPU! magnum
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.