标签: parallel-processing

Powershell 3.0 - 工作流程 - 限制并行执行次数

我正在从模板克隆ESX服务器上的VM.简化代码如下所示:

Workflow Create-VM {
  $List = 1..500
  foreach -parallel ($Elem in $List)
  {
      # Create VM ...
      # Configure created VM ..
  }
}

Create-VM
Run Code Online (Sandbox Code Playgroud)

并行执行非常有用.不幸的是,在这种情况下不能很好地工作.生成了太多并行请求.我需要将并行执行次数限制为较小的数字(例如4).

我试图更改本地会话配置(SessionThrottleLimit,MaxSessionsPerWorkflow,MaxRunningWorkflows)http://technet.microsoft.com/en-us/library/hh849862.aspx.

$WWE = New-PSWorkflowExecutionOption  -SessionThrottleLimit 4
Set-PSSessionConfiguration -Name microsoft.powershell.workflow `
   -SessionTypeOption $WWE 
Get-PSSessionConfiguration microsoft.powershell.workflow | 
fl SessionThrottleLimit
Run Code Online (Sandbox Code Playgroud)

  • 我应该更改哪个参数(或组合)的会话配置,以便将并行执行的数量限制为4?
  • 是否有其他方法如何实现(例如:执行工作流的不同方式......)?

parallel-processing powershell workflow powershell-3.0

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

为什么并行化会如此显着地降低性能?

我有一个OpenMP程序(数千行,不可能在这里重现),其工作原理如下:

它由工作线程和任务队列组成.
任务包括卷积; 每当工作线程从工作队列中弹出一个任务时,它就会执行所需的卷积,并可选择将更多的卷积推送到队列中.
(没有特定的"主"线程;所有工人都是平等的.)

当我在自己的机器上运行这个程序(4核HT非NUMA Core i7)时,我得到的运行时间是:

(#threads: running time)
 1: 5374 ms
 2: 2830 ms
 3: 2147 ms
 4: 1723 ms
 5: 1379 ms
 6: 1281 ms
 7: 1217 ms
 8: 1179 ms
Run Code Online (Sandbox Code Playgroud)

这是有道理的.

但是,当我在NUMA 48核AMD Opteron 6168机器上运行时,我得到了这些运行时间:

 1: 9252 ms
 2: 5101 ms
 3: 3651 ms
 4: 2821 ms
 5: 2364 ms
 6: 2062 ms
 7: 1954 ms
 8: 1725 ms
 9: 1564 ms
10: 1513 ms
11: 1508 ms
12: 1796 ms  <------ why …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing performance multithreading

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

MATLAB parfor中的错误版本或字节顺序键?

我正在使用MATALB进行并行计算parfor.代码结构看起来很像

%%% assess fitness %%%
% save communication overheads
bitmaps = pop(1, new_indi_idices);
porosities = pop(2, new_indi_idices);
mid_fitnesses = zeros(1, numel(new_indi_idices));
right_fitnesses = zeros(1, numel(new_indi_idices));
% parallelization starts
parfor idx = 1:numel(new_indi_idices) % only assess the necessary
    bitmap = bitmaps{idx};
    if porosities{idx}>POROSITY_MIN && porosities{idx}<POROSITY_MAX
        [mid_dsp, right_dsp] = compute_displacement(bitmap, ['1/' num2str(PIX_NO_PER_SIDE)]);
        mid_fitness = 100+mid_dsp;
        right_fitness = 100+right_dsp;
    else % porosity not even qualified
        mid_fitness = 0;
        right_fitness = 0;
    end
    mid_fitnesses(idx) = mid_fitness;
    right_fitnesses(idx) = right_fitness;
    fprintf('Done.\n');
    pause(0.01); % …
Run Code Online (Sandbox Code Playgroud)

parallel-processing matlab distributed-computing parfor

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

你如何在apache spark工作中执行阻塞IO?

如果,当我遍历RDD时,我需要通过调用外部(阻塞)服务来计算数据集中的值?您认为如何实现这一目标?

val值: Future[RDD[Double]] = Future sequence tasks

我试图创建一个Futures列表,但由于RDD id不是Traversable,Future.sequence不适合.

我只是想知道,如果有人有这样的问题,你是如何解决的?我试图做到的,是得到一个工作节点上的并行性,所以我可以调用外部服务3000每次第二.

可能还有另一种解决方案,更适合火花,就像在单个主机上有多个工作节点一样.

有趣的是,你如何应对这样的挑战?谢谢.

parallel-processing scala apache-spark

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

计算执行期间多处理.Pool中执行的任务总数

我想总体上说明我们当前的谈话.我正在耕种工作,想知道目前的进展情况.因此,如果我将100作业发送到10处理器,我如何显示返回的当前作业数量.我可以获取id但是如何从我的map函数中计算已完成的返回作业的数量.

我正在调用我的函数如下:

op_list = pool.map(PPMDR_star, list(varg))
Run Code Online (Sandbox Code Playgroud)

在我的功能中,我可以打印当前名称

current = multiprocessing.current_process()
print 'Running: ', current.name, current._identity
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing

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

Parallel.ForEach错误HttpContext.Current

这种方法 - doDayBegin(item.BranchId)需要很长时间才能执行.所以我用Parallel.ForEach它来并行执行它.当我使用正常foreach循环时它的工作正常但当我使用Parallel.ForEach它时显示此错误
对象引用未设置为对象的实例.

 public ActionResult Edit([DataSourceRequest] DataSourceRequest request)
        {
            try
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                List<DB0010020Vm> _listDB0010020Vm = new List<DB0010020Vm>();

                string dataDB0010020vm = Request.Form["griddetailsvm"];
                if (!string.IsNullOrEmpty(dataDB0010020vm))
                {
                    _listDB0010020Vm = js.Deserialize<List<DB0010020Vm>>(dataDB0010020vm).
                    Where(d => d.IsValid == "YES").ToList();
                }
                DateTime start = DateTime.UtcNow;


                Parallel.ForEach(_listDB0010020Vm, item =>
                {
                    doDayBegin(item.BranchId);
                });

                DateTime end = DateTime.UtcNow;
                TimeSpan duration = end - start;
                return Json(new
                {
                    success = true,
                    message = "Day Begin Process Completed Successfully!" + duration …
Run Code Online (Sandbox Code Playgroud)

c# linq parallel-processing asp.net-mvc entity-framework

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

make:并行运行多个任务并等待完成

我的makefile中的一个目标是一个非常耗时且耗时的任务.但我可以分开工作负载并多次并行运行任务,以加快整个过程.

我的问题是make不等待所有进程完成.

考虑这个简单的脚本,名为myTask.sh:

#!/bin/bash

echo "Sleeping $1 seconds"
sleep $1
echo "$1 are over!"
Run Code Online (Sandbox Code Playgroud)

现在,让我们从bash脚本中调用它,并wait用来等待所有任务完成:

#!/bin/bash

echo "START"
./myTask.sh 5 &
./myTask.sh 15 &
./myTask.sh 10 &

wait  # Wait for all tasks to complete

echo "DONE"
Run Code Online (Sandbox Code Playgroud)

输出如预期:

START
Sleeping 15 seconds
Sleeping 5 seconds
Sleeping 10 seconds
5 are over!
10 are over!
15 are over!
DONE
Run Code Online (Sandbox Code Playgroud)

但是在尝试相同的时候Makefile:

test:
    echo "START"
    ./myTask.sh 5 &
    ./myTask.sh 15 &
    ./myTask.sh 10 &
    wait
    echo "DONE" …
Run Code Online (Sandbox Code Playgroud)

parallel-processing makefile

9
推荐指数
2
解决办法
6108
查看次数

为常规执行调整groovy CPS闭包

我们在一些工作中动态创建并行步骤.感谢这个线程,我找到了如何动态创建带有参数的地图,以便在并行步骤中使用.

但是现在我想重用用于创建这些并行步骤的代码部分.为此,我觉得我需要为闭合咖喱做准备.

然而,currying似乎无法正常工作.在闭包内引用循环变量(valueCopy)做了正确的事情(如这里所提到的)但是currying并没有达到我的预期.

我做错了什么,这是不是(还)支持,是否有任何解决方法?这可能是Jenkins管道中的一个错误吗?

希望任何人都知道为什么这不起作用和/或如何让它工作.

Jenkins:LTS(2.32.1)及最新的插件更新截至2017/01/19.

解:

升级到Pipeline后:Groovy插件版本2.40 eveything正在按预期工作.

管道脚本执行:

def echoSome(val) {
    echo val
}

def buildClosures() {
    def someList = ["1", "2", "3"]
    def closures = [:]
    for (value in someList) {
        final valueCopy = value

        closures[value] = {val ->
                echo valueCopy.toString()
                echo val.toString()
            }.curry(value)
    }
    closures
}

parallel buildClosures()
Run Code Online (Sandbox Code Playgroud)

输出:

[Pipeline] parallel
[Pipeline] [1] { (Branch: 1)
[Pipeline] [2] { (Branch: 2)
[Pipeline] [3] { (Branch: 3)
[Pipeline] [1] echo
[1] 1
[Pipeline] …
Run Code Online (Sandbox Code Playgroud)

parallel-processing closures currying jenkins jenkins-pipeline

9
推荐指数
2
解决办法
1369
查看次数

正则表达式替换需要花费数百万个文档的时间,如何使其更快?

我有这样的文件:

documents = [
    "I work on c programing.",
    "I work on c coding.",
]
Run Code Online (Sandbox Code Playgroud)

我有同义词文件,如:

synonyms = {
    "c programing": "c programing",
    "c coding": "c programing"
}
Run Code Online (Sandbox Code Playgroud)

我想替换我编写此代码的所有同义词:

# added code to pre-compile all regex to save compilation time. credits alec_djinn

compiled_dict = {}
for value in synonyms:
    compiled_dict[value] = re.compile(r'\b' + re.escape(value) + r'\b')

for doc in documents:
    document = doc
    for value in compiled_dict:
        lowercase = compiled_dict[value]
        document = lowercase.sub(synonyms[value], document)
    print(document)
Run Code Online (Sandbox Code Playgroud)

输出:

I work on c …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing cpython word2vec

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

现代处理器上的并行内存访问

我有一个最近的12核Intel CPU(Haswell架构),它有4个内存通道.机器可以并行执行多少次DRAM内存访问?

例如,如果我有一个使用12个线程的程序,这些线程位于紧密循环中,从一个范围太大而无法容纳缓存的随机存储器地址读取单个字节.我希望所有12个线程将花费几乎所有时间等待内存提取.

线程是否必须轮流使用DRAM总线?

注意:假设我使用的是1 GB的VM页面大小,因此没有TLB缓存未命中.

memory parallel-processing x86 multicore bus

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