Integer64 DataElement::hash() const { try { std::vector<Octet> buffer; encodeInto(buffer); Integer64 hash = 8191; for (std::vector<Octet>::const_iterator i = buffer.begin(); i != buffer.end(); ++i) hash = hash*Integer64(127) + Integer64(*i); return hash; } catch (const EncoderException&) { return -1; } }
__host__ __device__ typename enable_if< sizeof(Integer64) == 8, Integer64 >::type atomic_load(const Integer64 *x) { #if defined(__CUDA_ARCH__) return atomicAdd(const_cast<Integer64*>(x), Integer64(0)); #elif defined(__GNUC__) return atomic_load_n(x, __ATOMIC_SEQ_CST); #elif defined(_MSC_VER) return InterlockedExchangeAdd(x, Integer64(0)); #elif defined(__clang__) return __c11_atomic_load(x); #else #error "No atomic_load_n implementation." #endif }