我正在从模板克隆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)
题
我有一个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) 我正在使用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) 如果,当我遍历RDD时,我需要通过调用外部(阻塞)服务来计算数据集中的值?您认为如何实现这一目标?
val值: Future[RDD[Double]] = Future sequence tasks
我试图创建一个Futures列表,但由于RDD id不是Traversable,Future.sequence不适合.
我只是想知道,如果有人有这样的问题,你是如何解决的?我试图做到的,是得到一个工作节点上的并行性,所以我可以调用外部服务3000每次第二.
可能还有另一种解决方案,更适合火花,就像在单个主机上有多个工作节点一样.
有趣的是,你如何应对这样的挑战?谢谢.
我想总体上说明我们当前的谈话.我正在耕种工作,想知道目前的进展情况.因此,如果我将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) 这种方法 - 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) 我的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) 我们在一些工作中动态创建并行步骤.感谢这个线程,我找到了如何动态创建带有参数的地图,以便在并行步骤中使用.
但是现在我想重用用于创建这些并行步骤的代码部分.为此,我觉得我需要为闭合咖喱做准备.
然而,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
我有这样的文件:
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) 我有一个最近的12核Intel CPU(Haswell架构),它有4个内存通道.机器可以并行执行多少次DRAM内存访问?
例如,如果我有一个使用12个线程的程序,这些线程位于紧密循环中,从一个范围太大而无法容纳缓存的随机存储器地址读取单个字节.我希望所有12个线程将花费几乎所有时间等待内存提取.
线程是否必须轮流使用DRAM总线?
注意:假设我使用的是1 GB的VM页面大小,因此没有TLB缓存未命中.