请教一个cuda动态并行,随机卡死的问题

GKatHere GKatHere 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
// 源代码如下, VS2022, cuda 12.6,

__global__ void SetBool(volatile int* b)
{
	if (ptrdiff_t(b) > 100)
		* b = 1;
	else
		__nanosleep(1);
}

__device__ volatile int fc = 0;
__global__ void fk()
{
	size_t pidx = threadIdx.x;
	if(0 == pidx) // cudaStreamTailLaunch 放在这,导致随机卡死(3000次就会产生卡死)
		SetBool << <1, 1, 0, cudaStreamTailLaunch >> > (&fc);
	switch (pidx)
	{
	case 0: // cudaStreamTailLaunch 放在这,没有发现随机卡死
		//SetBool << <1, 1, 0, cudaStreamTailLaunch >> > (&fc);
		return		SetBool<<<1,1>>>(0);
	case 1: return		SetBool << <1, 1 >> > ((volatile int*)1);
	case 2: return		SetBool << <1, 1 >> > ((volatile int*)2);
	case 3: return		SetBool << <1, 1 >> > ((volatile int*)3);
	case 4: return		SetBool << <1, 1 >> > ((volatile int*)3);
	case 5: return		SetBool << <1, 1 >> > ((volatile int*)3);
	case 6: return		SetBool << <1, 1 >> > ((volatile int*)3);
	case 7: return		SetBool << <1, 1 >> > ((volatile int*)3);
	default:
		break;
	}
}
__global__ void waitf()
{
	fc = 0;
	fk << <1, 10 >> > ();
	while (!fc)__nanosleep(1);
}



int main(int argc, char** argv)
{
for (size_t i =0; ; i++)
{
	auto t = clock();
	waitf << <1, 10 >> > ();
	cudaDeviceSynchronize(); // 当运行次数很多的时候,会随机卡死在这。
	auto e = clock();
	printf("%lld: %d, ", i, e - t);
}
}

 

...全文

相关推荐

Ubuntu 安装cuda10.1驱动的实现步骤

主要介绍了Ubuntu 安装cuda10.1驱动的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38617297

CUDA第一性原理:从GPU硬件架构到PTX汇编的并行计算重建

并行计算不是简单地增加线程数,而是对计算、内存与调度的协同建模。GPU并行的本质源于SM(流式多处理器)的物理结构——寄存器文件容量、32-bank共享内存、WARP调度机制共同决定了线程并发上限与访存效率。理解coalesced memory access(合并访问)和branch divergence(分支发散),需回归到硅基硬件约束:如L2缓存带宽是HBM2的16倍,却受共享内存/L1配置牵制;如PTX中`ld.global.f32`指令延迟达400周期,必须靠计算掩盖。这些并非调优技巧,而是Roof

cuiyingchan0663

Windows本地AI训练显存优化:多卡并行与4GB显存三板斧实战

在AI模型训练中,显存瓶颈远比算力不足更常见——它直接决定模型能否加载、batch size能否扩大、推理是否实时。显存占用本质由模型参数、梯度、优化器状态和中间激活值共同构成,而激活值又随序列长度与batch size呈平方/线性增长。张量并行通过权重切分线性降低单卡显存压力,流水线并行以micro-batch换空间缓解激活峰值,数据并行则受限于通信开销与显存冗余。当硬件仅剩4GB显存时,精度降级(FP8/INT8)、梯度检查点与CPU offload构成可落地的‘三板斧’组合策略。本文基于Windows

weixin_30235225

解决Pytorch 训练与测试时爆显存(out of memory)的问题

今天小编就为大家分享一篇解决Pytorch 训练与测试时爆显存(out of memory)的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38659527

pytorch模型提示超出内存RuntimeError: CUDA out of memory.

跑模型时出现RuntimeError: CUDA out of memory.错误 查阅了许多相关内容,原因是:GPU显存内存不够 简单总结一下解决方法: 将batch_size改小。 取torch变量标量值时使用item()属性。 可以在测试阶段添加如下代码: with torch.no_grad(): # 停止自动反向计算梯度 参考: https://wisdomai.xyz/tool/pytorch/archives/2301 https://ptorch.com/news/160.html 作者:菜叶儿掉啦

weixin_38552305
评论
收藏 已收藏
分享
返回顶部
GKatHere
CUDA 591 成员 2,925 内容