小编Ale*_*ton的帖子

Numba 支持 cuda 协作块同步?Python numba cuda 网格同步

Numba Cuda 有syncthreads() 来同步块内的所有线程。如何在不退出当前内核的情况下同步网格中的所有块?

在C-Cuda 中有一个cooperativeBlocks 库来处理这种情况。我在 Numba 文档中找不到类似的内容。

为什么这很重要

这种事情发生在归约中,人们在每个块中计算一些东西,然后你想要找到块上的最大值。

很简单,我们可以将它们作为两个单独的调用推送到流中。这确保了块计算在调用reduce之前全部完成。

但如果这两个操作是轻量级的,那么执行时间主要由设置内核而不是操作的执行决定。如果它们位于 python 循环内,并且循环和两个内核调用可以融合到一个内核中,则循环的运行速度可以轻松提高 1000 倍

for u in range(100000):
   Amax =CudaFindArrayMaximum(A)
   CudaDivideArray(A,Amax)
   CudaDoSomethingWithMatrix(A)
Run Code Online (Sandbox Code Playgroud)

由于循环中的三行中的每一行都是快速内核,因此我想将它们和循环全部放入一个内核中。

但如果不同步网格中的所有块,我想不出任何方法可以做到这一点。事实上,出于同样的原因,即使是找到最大值的第一步本身也很棘手。

python synchronization cuda numba

5
推荐指数
1
解决办法
995
查看次数

如何在类中实例化 ESP AsyncWebServer?(Arduino esp8266)

问题: ESP8266 AsyncWebServer 仅当我将其实例化为全局时才有效,但当我在类中实例化它时则无效。

这是两个完整的草图,它们都会产生错误

方法 1:在没有构造函数的情况下尝试此方法来初始化:

#include <ESPAsyncWebServer.h>

//  AsyncWebServer server(80);  // works when I instantiate it here

class foo {
  AsyncWebServer server(80);  // fails if instead I instantiate it here
  int dummy{0};
};

void setup() {}
void loop() {}

Run Code Online (Sandbox Code Playgroud)

错误信息1

sketch_jun06d:6:25: error: expected identifier before numeric constant
   AsyncWebServer server(80);  // this does not work
                         ^
sketch_jun06d:6:25: error: expected ',' or '...' before numeric constant
Run Code Online (Sandbox Code Playgroud)

方法2 在构造函数中初始化

class foo{
  public:

 AsyncWebServer server;
 foo() {
   server(80);
 };
};
Run Code Online (Sandbox Code Playgroud)

错误信息2 …

webserver global arduino esp8266

3
推荐指数
1
解决办法
1168
查看次数

标签 统计

arduino ×1

cuda ×1

esp8266 ×1

global ×1

numba ×1

python ×1

synchronization ×1

webserver ×1