如果此问题已经得到解答,请原谅,我无法弄清楚哪些是正确的关键字。
我想使用openmp并行运行很多对linux命令的调用。我需要在某些方面保证每个工作人员等到命令完成并且命令可能需要不同的时间才能完成。为了简化问题,我试图生成运行命令的文件的名称,但每个文件名都生成了多次,但文件的名称是唯一的。如何修改以下代码行以使用OpenMP实现文件名的唯一调用(因此对命令进行唯一调用)?
dirview.qml
代码的这一部分将在一个功能中执行,而不是在主程序中执行。可以使用MPICH2做同样的事情吗?
更新 问题与我的计算机有关,而不是与代码有关,因为代码可以使用另一台机器正常工作。有什么建议吗?
UPGRADE:
尝试遵循Gilles的推荐,我将代码升级如下:
ToolButton {
onClicked: { // TODO toggle folderModel.showHidden property
var cur_tab_idx = tabView1.currentIndex;
console.log(tabView1.getTab(cur_tab_idx).item.folder_url);
console.log(tabView1.getTab(cur_tab_idx).item.show_hidden);
}
}
但保证每个文件只处理一次的问题仍然存在。如何确保每个任务都在一个唯一的文件上工作,等待命令执行完成?
答案 0 :(得分:0)
抱歉,我真的不明白你问的问题,也不了解它的背景。这句话特别困扰我:
为了简化问题,我试图生成运行该命令的文件的名称,但是每个文件名都生成了多次,但文件的名称是唯一的。
无论如何,所有这一切都说我的回答可能只是错过了重点。但是,我仍然可以报告您的代码段存在一个主要问题:您明确声明shared
您尝试并行化的循环的索引i_traj
。这没有任何意义,因为如果在OpenMP并行循环中有一个变量你想成为private
,那么这就是循环索引。此外,OpenMP标准明确禁止它section 2.14.1.1。 (重点是我的)
for的关联for循环中的循环迭代变量 或构造的并行是(是)私人 [...]
可能未列出具有预定数据共享属性的变量 在数据共享属性子句中,除了下面列出的情况。 仅限这些例外情况,列出预定变量 允许使用data-sharing属性子句并覆盖变量 预定的数据共享属性。
遵循一个例外列表,其中未提及shared
“循环迭代变量”。
所以再一次,我的答案可能完全忽略了这一点,但你肯定在这里遇到了一个问题,你最好先解决这个问题,然后再尝试更深入。