Merge "Support for Atomic inc and dec in HIP" into amd-master

Bu işleme şunda yer alıyor:
Rahul Garg
2016-05-13 01:31:15 -04:00
işlemeyi yapan: Gerrit Code Review
işleme 86ce89aa52
3 değiştirilmiş dosya ile 26 ekleme ve 9 silme
+9
Dosyayı Görüntüle
@@ -376,6 +376,15 @@ __device__ unsigned int atomicXor(unsigned int* address,
__device__ unsigned long long int atomicXor(unsigned long long int* address,
unsigned long long int val);
//atomicInc()
__device__ unsigned int atomicInc(unsigned int* address,
unsigned int val);
//atomicDec()
__device__ unsigned int atomicDec(unsigned int* address,
unsigned int val);
// integer intrinsic function __poc __clz __ffs __brev
__device__ unsigned int __popc( unsigned int input);
+12
Dosyayı Görüntüle
@@ -657,7 +657,19 @@ __device__ unsigned long long int atomicXor(unsigned long long int* address,
return (long long int)hc::atomic_fetch_xor((uint64_t*)address,(uint64_t)val);
}
//atomicInc
__device__ int atomicInc(unsigned int* address,
unsigned int val)
{
return hc::__atomic_wrapinc(address,val);
}
//atomicDec
__device__ int atomicDec(unsigned int* address,
unsigned int val)
{
return hc::__atomic_wrapdec(address,val);
}
__device__ unsigned int test__popc(unsigned int input)
+5 -9
Dosyayı Görüntüle
@@ -121,8 +121,7 @@ int computeGold(int *gpuData, const int len)
for (int i = 0; i < len; ++i)
{
//val = (val >= limit) ? 0 : val+1;
val = val+1;
val = (val >= limit) ? 0 : val+1;
}
if (val != gpuData[5])
@@ -136,8 +135,7 @@ int computeGold(int *gpuData, const int len)
for (int i = 0; i < len; ++i)
{
//val = ((val == 0) || (val > limit)) ? limit : val-1;
val = val-1;
val = ((val == 0) || (val > limit)) ? limit : val-1;
}
if (val != gpuData[6])
@@ -234,12 +232,10 @@ __global__ void testKernel(hipLaunchParm lp,int *g_odata)
atomicMin(&g_odata[4], tid);
// Atomic increment (modulo 17+1)
//atomicInc((unsigned int *)&g_odata[5], 17);
//atomicInc((unsigned int *)&g_odata[5]);
atomicInc((unsigned int *)&g_odata[5], 17);
// Atomic decrement
// atomicDec((unsigned int *)&g_odata[6], 137);
//atomicDec((unsigned int *)&g_odata[6]);
atomicDec((unsigned int *)&g_odata[6], 137);
// Atomic compare-and-swap
atomicCAS(&g_odata[7], tid-1, tid);