问题标签 [coalescing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1386 浏览

cuda - 内存合并与向量化内存访问

我试图了解NVIDIA GPU/CUDA 上的内存合并与x86-SSE/C++ 上的矢量化内存访问之间的关系。

我的理解是:

  • 内存合并是内存控制器的运行时优化(在硬件中实现)。完成warp的加载/存储需要多少内存事务是在运行时确定的。除非有完美的合并,否则可能会重复发出扭曲的加载/存储指令。
  • 内存向量化是一种编译时优化。矢量化加载/存储的内存事务数是固定的。每个向量加载/存储指令只发出一次。
  • 可合并 GPU 加载/存储指令比 SSE 向量加载/存储指令更具表现力。例如,一条st.global.s32PTX 指令可以存储到 32 个任意内存位置(warp 大小为 32),而movdqaSSE 指令只能存储到一个连续的内存块中。
  • CUDA 中的内存合并似乎可以保证高效的向量化内存访问(当访问可合并时),而在 x86-SSE 上,我们必须希望编译器实际上对代码进行向量化(它可能无法这样做)或使用 SSE 内在函数手动向量化代码,这对程序员来说更难。

它是否正确?我是否错过了一个重要方面(也许是线程屏蔽)?

现在,为什么 GPU 具有运行时合并功能?这可能需要额外的硬件电路。与 CPU 中的编译时合并相比,主要优势是什么?由于缺少运行时合并,是否存在更难在 CPU 上实现的应用程序/内存访问模式?

0 投票
1 回答
91 浏览

c++ - 是否矢量涉及合并向量元素?

如主题所述:是否vector<atomic_bool>涉及以相同的方式合并向量元素vector<bool>

0 投票
3 回答
293 浏览

operators - 如何在 Haxe 中使用合并运算符?

正如我在问题中提到的,

如何在 Haxe 中使用合并运算符?

0 投票
2 回答
95 浏览

ios - 使用swift在字典索引内合并零

textFieldOne.text!我试图用来自文本字段和的可选值为字典键分配一个值textFieldTwo.text!,但是 Xcode 抛出构建错误。

Build Failed as编译器无法在合理的时间内对该表达式进行类型检查;尝试将表达式分解为不同的子表达式

0 投票
1 回答
97 浏览

memory - CUDA 合并和全局内存

我在 CUDA 课程中被告知,如果我的“a”数组的元素大小为 4,8 或 16 字节,则以下访问(全局内存)将被合并。

合并的两个条件是:warp 的线程必须访问 32、64 或 128 字节的块。Warp 的第一个线程必须访问一个 32、64 或 128 倍数的地址

但是在这个例子中(第一个条件),没有任何东西可以保证 warp 会访问一个 32 字节的块。

如果我假设a的元素是浮点数(4字节),并且如果我将blockDim.x定义为5,那么即使我的“a”数组的元素大小为4,每个warp都将访问20(4x5)字节的块, 8 或 16 个字节,而不是 32 个字节。那么,关于合并的第一个声明是 false 吗?

谢谢您的回答。

0 投票
0 回答
118 浏览

php - PHP 返回与空合并运算符组合

我想知道是否可以退出函数,例如通过在 PHP 中空合并运算符的第二个语句中返回。

我想用它来检查函数中的一些 POST 数据并在未设置 POST var 时退出函数。

这将是干净的代码,没有痛苦的 if(isset(...))。

示例脚本文件:

0 投票
1 回答
86 浏览

r - 其他变量条件下的第一个和最后一个非缺失时间点的值。条件合并 (dplyr)

a/b/c是不同的变量,t1是时间点1,t2是时间点2,t3是时间点3。

目的是为 a_t1 到 a_t3 的每一行创建两个新列:一个具有第一列,一个具有最后一个非缺失值。在变量 b 和 c 中也没有缺失的条件下(在同一时间点)。

我认为coalesce()可以使用某种条件格式。但是,我对此的了解是有限的。最好是 tidyverse 解决方案,但其他解决方案也可以。

a 的第一个值的预期输出: 1、8、3、NA、9

a的最后一个值的预期输出: 9、8、3、NA、9

(在真实数据集中有更多的时间点和变量需要考虑)

0 投票
2 回答
77 浏览

r - R 使用 na.locf() 正确使用 cross() 函数

我正在尝试复制这个 SO 问题,但是通过使用使用该across()函数的更新语法并远离已弃用的summarise_all()and funs()

起始数据

我有一个数据库提取每种事件类型的一行,如下所示:

期望的结果

...并且我想通过按装运和停靠点,甚至只是按装运分组来折叠行数(我不确定是否留NA在最终数据框中会影响答案,但我正在寻求成为能够以任何方式解决它)。

df_finish1 # 一个期望的结果

df_finish2 # 第二个/替代的期望结果

我研究并尝试过的

基于这个 SO question,它确实有效:

但是我看到的是该summarise_all()函数和该funs()函数已被弃用并且不会继续使用,所以我试图了解如何across()正确使用该函数,但没有成功:

我已经通读了vignette("colwise")描述差异的内容,并建议我只替换上面显示的语法,但显然我没有做对。帮助?

0 投票
0 回答
28 浏览

caching - 如何使用 tokio futures/streams 或等待来自多个位置的保存的 future 来合并昂贵的函数调用

我有一个前向缓存,它计算一些昂贵的值。

在某些情况下,我必须对同一资源执行阻塞调用(而不是通过缓存)

在前向缓存已经在计算“消息”的情况下,我想await(阻塞调用)直到这个正在进行的计算完成。

我当前的(简单)代码的结构类似于: