小编equ*_*all的帖子

如何让 WSL Vim 接受来自 Powershell 的管道输入?

我正在尝试创建一个 Powershell 函数,充当 WSL 中 Vim 的包装器。我希望这个包装器能够接受来自管道的输入。

在 WSL 中,可以执行以下操作:

$ cat manylines.txt | vim -
Run Code Online (Sandbox Code Playgroud)

指示-Vim 应该从 stdin 读取输入,然后通过管道重定向该输入。这将打开 vim,命令输出已在缓冲区中,但没有任何关联的文件。(您也可以简单地使用 打开文件vim manylines.txt,但这通常不适用于其他命令或可执行文件的输出)。

在 Powershell 和 Windows 原生 Vim 中也可以实现同样的效果:

Get-Content manylines.txt | vim -
Run Code Online (Sandbox Code Playgroud)

可以更进一步,在另一个 Powershell 或 cmd 实例中执行 Vim:

Get-Content manylines.txt | powershell -Command vim -
Get-Content manylines.txt | cmd /c vim -
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于 WSL Vim。

# doesn't work, Vim freezes
Get-Content manylines.txt | wsl vim -
Get-Content manylines.txt | wsl bash -c "vim …
Run Code Online (Sandbox Code Playgroud)

vim powershell windows-subsystem-for-linux

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

何时以及为何在 CUDA 中使用atomicInc()?

我一直在阅读 CUDA 中的原子操作,并且更新模式atomicInc()似乎相当任意。

来自CUDA 编程指南

unsigned int atomicInc(unsigned int* address, unsigned int val);
Run Code Online (Sandbox Code Playgroud)

读取位于全局或共享内存中的地址地址的 32 位字 old,计算 ((old >= val) ? 0 : (old+1)),并将结果存储回内存中的同一地址。这三个操作在一个原子事务中执行。该函数返回旧值。

这是增量和“环绕”操作。 atomicInc(&x, val) 与 非常相似 x = (x+1) % (val+1)

这对于什么样的应用程序有用?这是 CUDA 编程中常见的代码模式吗?如果是这样,是否有专用硬件来执行此操作,这atomicInc()比使用 的等效操作更好atomicCAS()

cuda atomic

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