小编Mat*_*ich的帖子

OpenMP动态与引导式调度

我正在研究OpenMP的调度,特别是不同的类型.我理解每种类型的一般行为,但澄清将有助于何时选择dynamicguided安排.

英特尔的文档描述了dynamic调度:

使用内部工作队列为每个线程提供一个块大小的循环迭代块.线程完成后,它会从工作队列的顶部检索下一个循环迭代块.默认情况下,块大小为1.使用此调度类型时要小心,因为涉及额外的开销.

它还描述了guided调度:

与动态调度类似,但块大小从大开始减小以更好地处理迭代之间的负载不平衡.可选的chunk参数指定它们使用的最小大小块.默认情况下,块大小约为loop_count/number_of_threads.

由于guided调度在运行时动态地减少了块大小,为什么我会使用dynamic调度?

我研究过这个问题,从达特茅斯找到了这张桌子:

在此输入图像描述

guided被列为具有high开销,同时dynamic具有中等开销.

这最初是有意义的,但经过进一步调查,我读了一篇关于该主题的英特尔文章.从上一张表中可以看出,guided由于在运行时分析和调整块大小(即使正确使用),理论调度也会花费更长的时间.但是,在英特尔文章中它指出:

引导时间表最适合小块大小作为其限制; 这提供了最大的灵活性.目前尚不清楚为什么它们在更大的块尺寸下会变得更糟,但是当它们被限制在大块尺寸时它们可能会花费太长时间.

为什么块大小与guided花费更长时间相关dynamic?通过将块大小锁定得太高而导致性能损失缺乏"灵活性"是有意义的.但是,我不会将其描述为"开销",锁定问题会破坏先前的理论.

最后,它在文章中说明:

动态计划提供了最大的灵活性,但在计划错误时可以获得最大的性能影响.

dynamic调度比最优化更有意义static,但为什么它比最优化guided?这只是我在质疑的开销吗?

这个有点相关的SO帖子解释了与调度类型相关的NUMA.这与此问题无关,因为所需的组织因这些调度类型的"先到先得"行为而丢失.

dynamic调度可能是合并的,导致性能提高,但同样的假设应该适用guided.

以下是英特尔文章中不同块大小的每种调度类型的时序,以供参考.它只是来自一个程序的记录,一些规则适用于每个程序和机器(特别是调度),但它应该提供一般趋势.

在此输入图像描述

编辑(我的问题的核心):

  • 是什么影响了guided调度的运行时间?具体例子?为什么它比dynamic某些情况慢?
  • 我什么时候会偏爱guided,dynamic反之亦然?
  • 一旦解释了这个,上面的来源是否支持您的解释?他们完全矛盾吗?

c++ parallel-processing multithreading scheduling openmp

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

使用Mongo(ose)从NumberDecimal中提取十进制

在用于存储货币值的数字模型中,MongoDB文档声明:

从mongo shell中使用NumberDecimal()构造函数分配和查询十进制值.

同样,使用Morphia Java库时,BigDecimals会自动插入BigDecimals.

我在Node中使用Mongoose查询Mongo并尝试提取存储为NumberDecimal的字段的数值.但是,这个值奇怪地包含在查询结果中,我不知道如何通过Mongo或Mongoose提取它:

[  
   {  
      "openValue":{  
         "$numberDecimal":"119.931"
      },
      "timestamp":"2017-01-20T10:30:00.000Z"
   },
   {  
      "openValue":{  
         "$numberDecimal":"119.965"
      },
      "timestamp":"2017-01-20T10:31:00.000Z"
   }
]
Run Code Online (Sandbox Code Playgroud)

我读过的一篇文章parseFloat()在我的应用程序代码中使用将执行我想要的,但是迭代结果来执行此转换效率不高.避免迭代和转换意味着每当我想要它们的值时,就在NumberDecimals上运行函数,这会很烦人.

有没有办法可以使用Mongo或Mongoose将上面的JSON查询结果转换成下面的内容?

[  
   {  
      "openValue": 119.931,
      "timestamp":"2017-01-20T10:30:00.000Z"
   },
   {  
      "openValue": 119.965,
      "timestamp":"2017-01-20T10:31:00.000Z"
   },
   {  
      "openValue": 119.975,
      "timestamp":"2017-01-20T10:32:00.000Z"
   }
]
Run Code Online (Sandbox Code Playgroud)

我尝试选择该字段...openValue.$numberDecimal,但这不起作用.谢谢!

编辑:这是我的Mongoose架构:

var EquityHistoryModel = new Schema({
   _id: {
      equityIdentifier: { type: {
         exchange: { type: String, index: true },
         symbol: { type: String, index: true }
      }, index: true },
      instant: { type: Date, …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js mongodb-query

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

离子Android内部共享内存

我正在使用带有$ cordovaFilecordova电子邮件插件的Ionic v1来创建文件,然后将其附加到新电子邮件中.我在任何设备上都有适用于iOS的工作解决方案,但我遇到了Android的一个奇怪问题.

Android文件系统布局

当试图在Android(dataDirectory等)上附加在任何内部存储位置创建的文件时,我收到"拒绝附件的权限".但是,当我将文件保存到外部存储时,附件已成功添加.

我已经使用Android外部存储发布了我的应用程序,但不幸的是,当今一些最流行的设备没有外部存储.

有谁知道解决方案?我已经考虑过变通方法,例如将文件上传到文件托管服务,并在电子邮件中包含下载链接.我会使用$ cordovaFileTransfer,但我不知道内部存储中是否存在权限错误.如果可能的话,我想使用真正的电子邮件附件.谢谢!

android ionic-framework cordova-plugins ionic-native

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

使用 Spring Security 的 SAML 2.0 在本地选择身份提供商

我正在使用 Spring Security 的 SAML 2.0 将我的服务提供者连接到多个身份提供者。

Spring 的 SAML 2.0 文档中的所有内容都有意义。我读过许多有用的教程,包括这篇教程,它与我现有的代码类似。

但是,我缺少在哪里以及如何为给定用户选择身份提供者

我了解SAMLDiscovery可用于将身份提供商选择委托给第三方服务。我还了解如何配置多个身份提供商。但我正在寻找一种方法来运行我自己的代码(即检查数据库),然后触发对所选身份提供商(而不是第三方服务)的 SAML 请求。我预计在SAMLEntryPoint被击中时会发生这种情况。我看到提到在初始请求中指定 EntityID。这有关系吗?

我正在尝试执行 SP 发起的 SAML 2.0 SSO。有人可以指出我可以在哪里根据当前用户手动指定 IdP 吗?

java spring spring-security saml-2.0 spring-security-saml2

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

外键引用同一个表

我搜索得很好,但找不到可以很好地解释问题的答案。这是我的问题的一个简化示例。假设我有一个test包含两个字段firstsecond. 我制作first了主键并希望在更新时second引用first和级联。这将允许我制作一个行列表,知道哪一行出现在任何给定行之后,除非“头”。

创建表工作正常,但是当我尝试添加一行时,它抱怨带有级联更新的外键约束失败。这是有道理的,因为我保留second为空。因此,我想我可以插入两行,然后添加外键:

  1. first: a second: b
  2. first: b second: a

这是成功的。然后我尝试将第 1 行更新firstc. 但是,这不起作用,说明外键失败。为什么?不应该变成下面这样吗?

  1. first: c second: b
  2. first: b second: c

我唯一的预感是循环更新的存在,第 1 行的更新级联到第 2 行,级联回到第 1 行,但这不应该发生!没有任何引用second,所以更新应该只是级联到第 2 行并停止。请帮忙,这让我发疯。

编辑:根据要求,这是我的show create table test.

CREATE TABLE `test` (
 `first` varchar(32) NOT NULL,
 `second` varchar(32) NOT NULL,
PRIMARY KEY (`first`),
KEY `fk` (`second`),
CONSTRAINT `fk` FOREIGN KEY …
Run Code Online (Sandbox Code Playgroud)

mysql sql key foreign-keys

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

带有 PHP 后端的 Web 推送通知示例

我正在寻找一个带有 JS 代码和 PHP 后端的网络推送通知示例。任何人都可以分享示例代码或教程吗?

notifications push web-push

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