测试cuda trap指令对warp的影响

测试cuda trap指令对warp的影响


本文测试cuda trap指令对warp的影响

1.测试方法

  • 分别测试smsp上不同的warp数,并且在指定上tid上执行__trap指令,看看对其它线程的影响

2.测试小结

  • 如果32*4个线程(每个smsp只有一个warp),所有的线程并行执行,tid==32+16执行__trap后Kernel就退出了,kernel out这一行不会打印
  • 如果是3244个线程(每个smsp有4个warp),他们轮流调度,所以在tid==32+16执行__trap之前 kernel out这一行打印有机会被调度,会打印出来
  • 所在,不管哪一个线程只要执行到__trap kernel就退出,没有执行到的线程正常运行,如果带着cuda-gdb,则会收到SIGTRAP
  • cuda kernel里执行到assert(0)或_brkpt()或__trap(),lanuch失败,之后的cudaMemcpy,cudaFree调用也会失败(也就得不到设备内存的数据)

3.测试步骤

tee trap_inst_benchmark.cu<<-'EOF'
#include <iostream>
#include <cuda_runtime.h>
#include <iostream>
#include <vector>
#include <stdio.h>
#include <assert.h>
#include <cstdio>
#include <cuda.h>

#define CHECK_CUDA(call)                                           \
    do {
                                                                \
        cudaError_t err = call;                                    \
        if (err != cudaSuccess) {
                                       \
            std::cerr << "CUDA error at " << __FILE__ << ":" << __LINE__;  \
            std::cerr << " code=" << err << " (" << cudaGetErrorString(cudaGetLastError()) << ")" << std::endl; \
        }                                                          \
    } while
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi20240217

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值