CUDA学习(四十四)

简介:

原子操作的算术函数:
atomicAdd():

int atomicAdd(int* address, int val);
unsigned int atomicAdd(unsigned int* address,
    unsigned int val);
unsigned long long int atomicAdd(unsigned long long int* address,
    unsigned long long int val);
float atomicAdd(float* address, float val);
double atomicAdd(double* address, double val);

读取全局或共享内存中地址地址处的32位或64位字,计算(old+ val),并将结果存回相同地址的存储器中。 这三个操作在一个原子事务中执行。 该函数返回旧的。
atomicAdd()的32位浮点版本仅受计算能力2.x及更高版本的设备支持。
atomicAdd()的64位浮点版本仅受计算能力6.x及更高版本的设备支持。
atomicSub():

int atomicSub(int* address, int val);
unsigned int atomicSub(unsigned int* address,
    unsigned int val);

读取全局或共享内存中地址地址处的32位字节,计算(old - val),并将结果存回相同地址的存储器中。 这三个操作在一个原子事务中执行。 该函数返回旧的。
atomicExch():

int atomicExch(int* address, int val);
unsigned int atomicExch(unsigned int* address,
    unsigned int val);
unsigned long long int atomicExch(unsigned long long int* address,
    unsigned long long int val);
float atomicExch(float* address, float val);

读取位于全局或共享内存中地址地址的32位字节或64位字节,并将val存回相同地址的存储器中。 这两个操作在一个原子事务中执行。 该函数返回旧的。
atomicMin():

int atomicMin(int* address, int val);
unsigned int atomicMin(unsigned int* address,
    unsigned int val);
unsigned long long int atomicMin(unsigned long long int* address,
    unsigned long long int val);

读取位于全局或共享内存中地址地址处的32位字节或64位字节,计算old和val的最小值,并将结果存回相同地址的存储器中。 这三个操作在一个原子事务中执行。 该函数返回旧的。
atomicMin()的64位版本仅受计算能力3.5及更高版本的设备支持。
atomicInc():

unsigned int atomicInc(unsigned int* address,
    unsigned int val);

读取位于全局或共享内存中地址地址的32位字节,计算((old> = val)?0:(old + 1)),并将结果存回同一地址的存储器中。 这三个操作在一个原子事务中执行。 该函数返回旧的。
atomicDec():

unsigned int atomicDec(unsigned int* address,
    unsigned int val);

读取位于全局或共享内存中地址地址的32位字节,计算(((old == 0)|(old> val))?val:(old-1)),并将结果存回 内存在相同的地址。 这三个操作在一个原子事务中执行。 该函数返回旧的。
atomicCAS():

int atomicCAS(int* address, int compare, int val);
unsigned int atomicCAS(unsigned int* address,
    unsigned int compare,
    unsigned int val);
unsigned long long int atomicCAS(unsigned long long int* address,
    unsigned long long int compare,
    unsigned long long int val);

读取位于全局或共享内存中地址地址的32位字节或64位字节,计算(old == compare?val:old),并将结果存回相同地址的存储器中。 这三个操作在一个原子事务中执行。 该函数返回旧的(比较和交换)。
timg

目录
相关文章
|
并行计算 索引
|
存储 并行计算 C语言
|
并行计算 API 编译器
CUDA学习(六十五)
很早之前就发现云栖社区的编辑器有一个Bug,往草稿箱存博客,当草稿箱博客数超过十篇时,无法再选择十篇前的博客进行编辑
2397 0
|
并行计算 API
|
并行计算 API
|
缓存 并行计算 异构计算
|
并行计算 API
|
存储 并行计算 API