小编Aka*_*cik的帖子

如何确定代码是否在信号处理程序上下文中运行?

我刚刚发现有人正在调用 - 从信号处理程序 - 一个绝对不是我编写的异步信号安全函数.

所以,现在我很好奇:如何避免这种情况再次发生?我希望能够轻松确定我的代码是否在信号处理程序上下文中运行(语言是C,但解决方案不适用于任何语言吗?):

int myfunc( void ) {
    if( in_signal_handler_context() ) { return(-1) }
    // rest of function goes here
    return( 0 );
}
Run Code Online (Sandbox Code Playgroud)

这是在Linux下.希望这不是一个简单的答案,否则我会觉得自己像个白痴.

linux signals handler

11
推荐指数
1
解决办法
3549
查看次数

了解流式多处理器 (SM) 和流式处理器 (SP)

我试图了解 GPU 的基本架构。我已经阅读了很多材料,包括这个非常好的 SO 答案。但我仍然很困惑,无法得到一张好的照片。

我的理解:

  • 一个 GPU 包含两个或多个流式多处理器 (SM),具体取决于计算能力值。
  • 每个 SM 由流处理器 (SP) 组成,它们实际上负责指令的执行。
  • 每个块都由 SP 以扭曲(32 个线程)的形式处理。
  • 每个块都可以访问共享内存。不同的块无法访问其他块的共享内存的数据。

困惑:

在下图中,我无法理解哪个是流式多处理器 (SM),哪个是 SP。我认为Multiprocessor-1代表单个 SM,而Processor-1(最多 M)代表单个 SP。但我不确定这一点,因为我可以看到每个处理器(蓝色)都提供了一个寄存器,但据我所知,一个寄存器提供给线程单元。

如果你能提供一些关于这张图片或任何其他图片的基本概述,这对我会很有帮助。

图片

cuda gpu

6
推荐指数
1
解决办法
5968
查看次数

标签 统计

cuda ×1

gpu ×1

handler ×1

linux ×1

signals ×1