测试原子操作不同的变量
来源:互联网 发布:模具cnc编程 是什么 编辑:程序博客网 时间:2024/05/01 12:14
const int N=1000000;
__global__ void test(int x,int y,int z)
{
const int tid=threadIdx.x;
if(tid==0)
for(int i=0;i<N;i++)
{ atomicAdd(&x,1);
__syncthreads();}
//x++;
/*for(int i=0;i<N;i++)
x++;*/
if(tid==1)
for(int i=0;i<N;i++)
{ atomicAdd(&x,1);
__syncthreads();}
/*for(int i=0;i<N;i++)
y++;*/
if(tid==2)
for(int i=0;i<N;i++)
{atomicAdd(&x,1);
__syncthreads();}
/*for(int i=0;i<N;i++)
z++;*/
// if(tid==0)
// atomicAdd(&x,1);
//__syncthreads();
//if(tid==1)
// atomicAdd(&x,1);
//__syncthreads();
//if(tid==2)
// atomicAdd(&x,1);
//__syncthreads();
}
int main(void)
{
clock_t h_start,h_elapsed;
int x=0,y=0,z=0;
h_start=clock();
cout<<"a"<<endl;
//for(int i=0;i<10;i++)
//{
test<<<1,3>>>(x,y,z);
cudaDeviceSynchronize();
//}
h_elapsed=clock()-h_start;
cout<<h_elapsed<<endl;
return 0;
__global__ void test(int x,int y,int z)
{
const int tid=threadIdx.x;
if(tid==0)
for(int i=0;i<N;i++)
{ atomicAdd(&x,1);
__syncthreads();}
//x++;
/*for(int i=0;i<N;i++)
x++;*/
if(tid==1)
for(int i=0;i<N;i++)
{ atomicAdd(&x,1);
__syncthreads();}
/*for(int i=0;i<N;i++)
y++;*/
if(tid==2)
for(int i=0;i<N;i++)
{atomicAdd(&x,1);
__syncthreads();}
/*for(int i=0;i<N;i++)
z++;*/
// if(tid==0)
// atomicAdd(&x,1);
//__syncthreads();
//if(tid==1)
// atomicAdd(&x,1);
//__syncthreads();
//if(tid==2)
// atomicAdd(&x,1);
//__syncthreads();
}
int main(void)
{
clock_t h_start,h_elapsed;
int x=0,y=0,z=0;
h_start=clock();
cout<<"a"<<endl;
//for(int i=0;i<10;i++)
//{
test<<<1,3>>>(x,y,z);
cudaDeviceSynchronize();
//}
h_elapsed=clock()-h_start;
cout<<h_elapsed<<endl;
return 0;
}
通过运行可以得出,原子操作是完全的串行
0 0
- 测试原子操作不同的变量
- 原子变量的操作
- 原子变量和原子操作
- Java原子变量&原子操作
- 关于atomic_t 原子变量的操作
- 线程4:原子变量与原子操作
- volatile 不能保证变量的原子性的操作
- 多线程下变量原子操作的几种方法
- WINCE的原子操作
- 互锁的原子操作
- gcc的原子操作
- 内核的原子操作
- sqlite3的原子操作
- boost的原子操作
- c++ ++ ---的原子操作
- 原子操作的好处
- GCC的原子操作
- 文件的原子操作
- 栈的应用——表达式求和
- UrlRewrite实现伪静态
- Gmail是怎么判断垃圾邮件
- CXF部署到WebLogic的问题
- ArcGIS教程:用不规则矢量多边形裁切栅格数据的方法比较
- 测试原子操作不同的变量
- JavaScript 实现Map效果
- 仿真树:仿真圣诞树
- 使用bit-field和union巧妙定义/存取具有特定结构的数据
- 递归原则
- 【已解决】Android中用DOM方式解析xml时使用getElementsByTagName去获得节点结果为空
- linux下svn命令大全
- ArrayList vs. LinkedList vs. Vector
- win7 64位光驱不读盘