zoukankan      html  css  js  c++  java
  • float / double 使用 atimicAdd

    // 8 Rows of square-matrix A processed by each CTA.
    // This can be max 32 and only power of 2 (i.e., 2/4/8/16/32).
    #define ROWS_PER_CTA 8
    
    #if !defined(__CUDA_ARCH__) || __CUDA_ARCH__ >= 600
    #else
    __device__ double atomicAdd(double* address, double val)
    {
        unsigned long long int* address_as_ull =
                                  (unsigned long long int*)address;
        unsigned long long int old = *address_as_ull, assumed;
    
        do {
            assumed = old;
            old = atomicCAS(address_as_ull, assumed,
                            __double_as_longlong(val +
                                   __longlong_as_double(assumed)));
    
        // Note: uses integer comparison to avoid hang in case of NaN (since NaN != NaN)
        } while (assumed != old);
    
        return __longlong_as_double(old);
    }
    #endif
  • 相关阅读:
    RIGHT JOIN 关键字
    LEFT JOIN 关键字
    INNER JOIN 关键字
    连接(JOIN)
    别名
    BETWEEN 操作符
    IN 操作符
    通配符
    LIKE 操作符
    LIMIT 子句
  • 原文地址:https://www.cnblogs.com/luoyinjie/p/13232321.html
Copyright © 2011-2022 走看看