小编jmi*_*loy的帖子

在 CUDA 程序中禁用所有异步执行

根据 CUDA 编程指南,您可以通过设置环境变量 (CUDA_LAUNCH_BLOCKING=1) 在运行时禁用异步内核启动。

这是一个有用的调试工具。我还想确定使用并发内核和传输在我的代码中的好处。

我还想禁用其他并发调用,特别是cudaMemcpyAsync.

是否CUDA_LAUNCH_BLOCKING会影响这些种类除了内核启动电话?我怀疑不是。什么是最好的选择?我可以添加cudaStreamSynchronize调用,但我更喜欢运行时解决方案。我可以在调试器中运行,但这会影响时间并破坏目的。

asynchronous cuda

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

cuda 无效资源句柄

这个错误是什么意思?我似乎找不到任何关于它的信息。它发生在 cudaEventRecord 上。

在项目头文件中:

cudaEvent_t cudaEventStart;
Run Code Online (Sandbox Code Playgroud)

在 .c 文件中:

cudaEventCreate(&cudaEventStart);
printf("create event: %d\n", (int) cudaEventStart);
Run Code Online (Sandbox Code Playgroud)

在我的一个 .cu 文件中:

printf("record event: %d\n", (int) cudaEventStart);
cudaEventRecord(cudaEventStart);
Run Code Online (Sandbox Code Playgroud)

相关输出显示呼叫的问题是什么。由于某种原因,cudaEventStart 在我的 cu 文件中不是有效的事件资源:

create event: 44199920
record event: 0
Run Code Online (Sandbox Code Playgroud)

细节

  • CUDA 3.2
  • GTX 480
  • 64位Win7

我正在将我的代码从 Linux 移植到 Windows。它在 linux 中的同一张卡上运行良好,并且只有一些更改。我定义roundf并添加了以下内容:

typedef size_t off_t;
#define strtof(str,n) (float)strtod(str,n)
#include <float.h>
#define isnan(n) _isnan(n)
#define strcasecmp _stricmp
#include <io.h>
#define read _read
Run Code Online (Sandbox Code Playgroud)

我不清楚为什么这些事情会影响 cuda 资源。也许我以某种方式错误地构建了项目......?

cuda

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

强制mysqldb dict游标返回带有表名的所有列名前缀

SELECT * FROM a, b WHERE ...
Run Code Online (Sandbox Code Playgroud)

Mysql允许在查询结果中使用重复的列名.因此,在终端中,没有列名称使用上述查询作为前缀.

但是,我在使用DictCursor的python中使用mysqldb.结果是列表名称为键的字典列表.有时,dict游标会自动在列名前加上表名.据我所知,它是针对两个不明确的列名称中的第二个,但仅当第二个值是唯一的时才这样做.无论如何,我想强制光标使用表名为所有键添加前缀.

来自fetch.row()函数的mysqldb文档 ...

第二个参数(how)告诉它应该如何表示行.默认情况下,它为零,表示作为元组返回.how = 1表示,将其作为字典返回,其中键是列名,如果有两列具有相同的名称(例如,来自连接),则返回table.column.how = 2表示与how = 1相同,除了键总是table.column; 这是为了与旧的Mysqldb模块兼容.

所以,它似乎可行,但我没有直接使用fetch.row()函数...所以问题是,如何在获取行时使mysqldb dict游标始终使用how = 2?

python mysql select mysql-python

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

有没有办法在每个 uwsgi 工作线程中运行初始化代码(分叉后)

有没有一种方法(在uWSGI或Flask中)注册一个函数,以便在每个worker生成尽快运行?

我们有一个 Flask 应用程序,它可以从预加载一堆东西中受益。以下仅对preload8 个工作进程调用一次。第一个请求很快,但预加载的对象以某种方式共享,这会导致错误。

app = Flask(__name__)
preload()
Run Code Online (Sandbox Code Playgroud)

如果我使用before_first_request,那么对象会在每个工作进程中加载​​,并且不会出现错误,但第一个请求非常慢。

app = Flask(__name__)

@app.before_first_request
def bfr():
    preload()
Run Code Online (Sandbox Code Playgroud)

我还尝试设置一个烧瓶脚本。运行该命令可以工作,但显然对象是在命令的进程中加载​​的,而不是在 uwsgi 工作线程中加载的。

app = Flask(__name__)
manager = Manager(app)

@manager.command
def preload():
    ...
Run Code Online (Sandbox Code Playgroud)

我想如果我们使用before_first_request,我们可以在重新启动 uwsgi 后手动触发请求。这是唯一的解决方案吗?

编辑:刚刚找到了 uswgi hook-post-fork选项(以及其他钩子选项)。明天我要尝试一下。也许其中之一就是我所需要的。

python flask uwsgi flask-script

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

CUDA阻止标志

创建CUDA事件时,您可以选择打开该cudaEventBlockingSync标志.但是 - 如果创建一个有或没有标志的事件之间的区别怎么办?我读了精美的手册 ; 它对我来说没有意义.什么是"调用主机线程",以及什么是"阻止" 使用标志?

4.6.2.7 cudaError_t cudaEventSynchronize(cudaEvent_t事件)

直到事件实际被记录为止....等待使用cudaEventBlockingSync标志创建的事件 将导致调用主机线程阻塞,直到事件实际被记录为止.

synchronization cuda

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

mysql外连接 - 确定连接的行是否存在

我有两个具有相同主键的表,但是一个比另一个大得多.我想知道哪些ID在较小的表中有一行.(在这个例子中,a很大而且b很小).现在,我正在使用带有CASE的OUTER JOIN来确定b值是否为NULL.它不起作用(总是得到1).修复此问题会很好,但必须有更好的方法.我该怎么办?

SELECT a.id,
       CASE b.id
         WHEN NULL THEN 0
         ELSE 1
         END AS exists
FROM a LEFT OUTER JOIN b
  ON a.id=b.id;
Run Code Online (Sandbox Code Playgroud)

mysql outer-join

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

如何在不擦除操作系统的情况下将新的 MLO 和 u-boot.img 写入 SD 卡

我有一张带有标准 Beaglebone Debian 映像的 SD 卡。我也有构建 u-boot的MLOu-boot.img文件。我想在 SD 卡上安装新的 u-boot,然后将修改后的映像闪存到 Beaglebone Black 上的 MMC。

我可以很好地从 SD 卡闪存板载 MMC。我还可以通过串行连接到电路板并在 u-boot 中停止。

我不知道如何做的是将新的u-boot正确写入SD卡。我尝试了几件事

  1. 这些elinux 指令用于擦除 SD 卡并创建新的可引导分区。我实际上并没有尝试这个,因为我想将新的 u-boot 安装到现有映像中。

    $ echo -e "o\nn\np\n1\n\n+64M\na\n1\nt\nc\nw\n" | sudo fdisk /dev/MYDISK ; sudo fdisk /dev/MYDISK -l
    $ sudo mount /dev/MYDISK /mnt
    $ sudo cp MLO /mnt
    $ sudo cp u-boot.img  /mnt
    $ sudo sync
    $ sudo umount  /mnt
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这些digikey 指令是同一事物的不同版本。我尝试以这种方式编写 MLO 和 u-boot.img,而无需擦除磁盘,但该板仍然使用原始 u-boot 而不是新的引导。

    $ sudo …
    Run Code Online (Sandbox Code Playgroud)

u-boot beagleboneblack

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

随机走在有向图/网络中

我有一个加权图(实际上)最多50,000个顶点.给定一个顶点,我想根据所有相邻边的相对权重随机选择一个相邻的顶点.

我应该如何将此图存储在内存中,以便进行选择?什么是最好的算法?它可以像每个顶点的键值存储一样简单,但这可能不适合最有效的算法.我还需要能够更新网络.

请注意,我一次只想采取一个"步骤".


更正式:给定的加权,定向,和潜在的完全图,让W(A,B)是边缘A-> B的重量,并让W¯¯ 一个是从所有的边缘的总和一个.给定一个输入顶点v,我想随机选择一个顶点,其中选择顶点x的可能性是W(v,x)/W v

示例:

假设W(v,a) = 2,W(v,b) = 1,W(v,c) = 1.

给定输入v,函数应以概率0.5和bc以概率0.25 返回a.

c algorithm graph data-structures

2
推荐指数
1
解决办法
1315
查看次数

在javascript中解析MySQL TIME

我通过ajax请求获得MySQL TIMESTAMP和MySQL TIME.在javascript中将时间添加到时间戳的好方法是什么?

鉴于2013-11-06 15:46:031:00:00,结果应该是2013-11-06 16:46:03.下面,我有一个部分解决方案:

a = "2013-11-06 15:46:03";
b = "1:00:00";

//convert a to timestamp (in milliseconds)
a_ms = Date.parse(a);

//convert b to milliseconds
b_vals = b.split(':');
b_ms = 360000*bvals[0] + 60000*bvals[1] + 1000*bvals[2];

//add and convert to Date object
c = new Date(a_ms + b_ms); //Wed Nov 06 2013 15:52:03 GMT-0500 (EST)
Run Code Online (Sandbox Code Playgroud)
  1. 主要问题:有更好的方法吗?例如,有没有更好的方法转换b为毫秒?[编辑:请不要图书馆.无论多小,我都不会认为它比在一行中解析它更"好".

  2. 次要问题:我如何输出c作为YYYY-MM-DD HH-MM-SS

javascript mysql datetime

2
推荐指数
1
解决办法
4468
查看次数

替换Angular中的ComponentMetadata

我试图使用的代码在此SO答案,它的用途ComponentMetadata。看起来它曾经是角形/芯形的,但是我想它不再可用了?

这是代码。我该怎么做才能metadata在最后一行中使用?

function ExtendComponent(annotation: any) {
  return function (target: Function) {
    var parentTarget = Object.getPrototypeOf(target.prototype).constructor;
    var parentAnnotations = Reflect.getMetadata('annotations', parentTarget);

    var parentAnnotation = parentAnnotations[0];
    Object.keys(parentAnnotation).forEach(key => {
      if (isPresent(parentAnnotation[key])) {
        // verify is annotation typeof function
        if(typeof annotation[key] === 'function'){
          annotation[key] = annotation[key].call(this, parentAnnotation[key]);
        }else if(
        // force override in annotation base
        !isPresent(annotation[key])
        ){
          annotation[key] = parentAnnotation[key];
        }
      }
    });

    var metadata = new ComponentMetadata(annotation);
    Reflect.defineMetadata('annotations', [ metadata ], target);
  }
}
Run Code Online (Sandbox Code Playgroud)

我在这里确实是在黑暗中拍摄,但是我在使用的角度源中找到了该测试MetadataCollector …

angular

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

打字稿数学文档

我在哪里可以找到(内置?)数学模块的文档?

在 JavaScript 中,我想我曾经用来Math.apply.max(Math.max, a)获取 Array 中的最大值a,但 Typescript 中的相同给了我一个 Math.apply 不存在的转换错误。那么我该如何查看 Math 的内容呢?我在手册上没找到。

typescript

0
推荐指数
1
解决办法
8502
查看次数