Tag: 并行处理

什么multithreading包Lua“只是工作”出货?

在Lua编码,我有一个三重嵌套的循环,经历了6000次迭代。 所有的6000次迭代都是独立的,并且可以很容易地被并行化。 哪些线程包Lua 编译出来,并获得体面的并行加速四个或更多的核心? 以下是我所知道的: luaproc来自核心Lua团队,但luaforge上的软件包已经陈旧了,邮件列表中有报告。 另外,对于我来说,如何使用标量消息传递模型最终将结果导入到父线程中并不明显。 Lua Lanes提出有趣的说法,但似乎是一个重量级的,复杂的解决scheme。 邮件列表上的许多消息报告让Lua Lanes构build或为其工作带来麻烦。 我自己也难以得到潜在的“Lua岩石”分配机制为我工作。 LuaThread需要显式locking,并要求线程之间的通信由受锁保护的全局variables调解。 我可以想象得更糟,但我会更高兴地抽象。 并发Lua提供了一个类似于Erlang的有吸引力的消息传递模型,但它表示进程不共享内存。 目前还不清楚spawn实际上是否适用于任何 Lua函数或是否有限制。 Russ Cox提出了一个偶尔的只适用于C线程的线程模型。 对我没有用处。 我将upvote所有报告的实际经验与这些或任何其他multithreading包,或任何答案,提供新的信息。 作为参考,这里是我想并行化的循环: for tid, tests in pairs(tests) do local results = { } matrix[tid] = results for i, test in pairs(tests) do if test.valid then results[i] = { } local results = results[i] for sid, […]

用于处理列表的C#asynchronous选项

我想更好地理解我在C#中使用的asynchronous和并行选项。 在下面的片段中,我列出了我遇到的最多的5种方法。 但是我不确定要select哪一个,或者更好,在select时要考虑什么标准: 方法1:任务 (请参阅http://msdn.microsoft.com/en-us/library/dd321439.aspx ) 调用StartNew在function上等价于使用其中一个构造函数创build一个Task,然后调用Start来计划执行。 但是,除非创build和调度必须分开,否则S​​tartNew是简单性和性能的推荐方法。 TaskFactory的StartNew方法应该是创build和调度计算任务的首选机制,但是对于必须将创build和调度分离的情况,可以使用构造函数,然后可以使用任务的Start方法将任务调度为稍后执行时间。 // using System.Threading.Tasks.Task.Factory void Do_1() { var _List = GetList(); _List.ForEach(i => Task.Factory.StartNew(_ => { DoSomething(i); })); } 方法2:QueueUserWorkItem (请参阅http://msdn.microsoft.com/en-us/library/system.threading.threadpool.getmaxthreads.aspx ) 您可以按照系统内存允许的方式排队多个线程池请求。 如果有比线程池线程更多的请求,则附加请求保持排队,直到线程池线程可用。 您可以将排队方法所需的数据放入定义方法的类的实例字段中,也可以使用接受包含必要数据的对象的QueueUserWorkItem(WaitCallback,Object)重载。 // using System.Threading.ThreadPool void Do_2() { var _List = GetList(); var _Action = new WaitCallback((o) => { DoSomething(o); }); _List.ForEach(x => ThreadPool.QueueUserWorkItem(_Action)); […]

OCaml的并行化能力是怎样的?

我对使用OCaml进行项目感兴趣,但我不确定它的并行化function在哪里。 OCaml中有消息传递的能力吗? OCaml能够有效使用多个CPU吗? 我读到的大部分内容都是在2002 – 2006年写的,而且我还没有看到更近的内容。 谢谢!

并行处理文件中的行(Scala)?

我知道斯卡拉平行集合。 他们很方便! 但是,我想遍历一个太大的文件的行并行内存。 例如,我可以创build线程并设置对扫描器的locking,但如果我可以运行如下代码将会很好: Source.fromFile(path).getLines.par foreach { line => 不幸的是, error: value par is not a member of Iterator[String] 在这里完成一些平行的最简单的方法是什么? 就目前而言,我会用一些线条来解读并行处理。

Parallel.For():更新循环外部的variables

我只是在寻找新的.NET 4.0function。 与此同时,我正在尝试使用Parallel.For和for(x;x;x)循环的正常计算。 但是,我在50%的时间里得到了不同的结果。 long sum = 0; Parallel.For(1, 10000, y => { sum += y; } ); Console.WriteLine(sum.ToString()); sum = 0; for (int y = 1; y < 10000; y++) { sum += y; } Console.WriteLine(sum.ToString()); 我的猜测是线程正试图同时更新“sum”。 有没有一个明显的方法呢?

pandas.apply并行化的状态()

在过去的几年中,有几篇文章涉及到pandas.apply()的parallelization ,或者是描述可以通过将数据结构化为数据pandas.apply()来解决的问题,以及如果实现了parallelization ,使用pandas.apply() 。 我向这里的专家们提出这个问题,这个能力的状态是什么, R已经有了这个能力。 目前没有干净的标准解决scheme。 重新编写整个函数和脚本来处理build议的解决方法是非常繁琐的。 Pythonpandas多处理应用 并行化后,pandasgroupby R中的并行和多核处理 Python多处理pool.map多个参数 在Python中的并行处理 通过multiprocessing.pool.map传递kwargs 传递参数和manager.dict在Python 2.7中的多处理 有没有一个简单的基于进程的python平行映射? pandas与rpy2和多处理 如何通过Sparkasynchronous地将函数应用于数据框的子集? 高效地将一个函数应用到分组的pandasDataFrame上 python dask DataFrame,支持(trivially parallelizable)row apply? Python多处理作业Celery任务,但AttributeError 在pandas python中并行化应用函数 在groupby上工作

Parallel.ForEach块吗?

.net函数Parallel.ForEach是否阻塞调用线程? 我对这种行为的猜测是其中之一: 是的,它阻塞,直到最慢的项目执行返回。 不,它不会立即阻止并返回控件。 要并行运行的项目是在后台线程上完成的。 或者也许别的事情正在发生,任何人都知道肯定? 在一个日志类中实现这个问题时出现了这个问题: public class MultipleLoggingService : LoggingServiceBase { private readonly List<LoggingServiceBase> loggingServices; public MultipleLoggingService(List<LoggingServiceBase> loggingServices) { this.loggingServices = loggingServices; LogLevelChanged += OnLogLevelChanged; } private void OnLogLevelChanged(object sender, LogLevelChangedArgs args) { loggingServices.ForEach(l => l.LogLevel = LogLevel); } public override LogMessageResponse LogMessage(LogMessageRequest request) { if (request.LogMessage) Parallel.ForEach(loggingServices, l => l.LogMessage(request)); return new […]

在x86中暂停指令

我正在尝试创build自旋锁的哑版。 浏览网页时,我遇到了x86中的汇编指令,这个指令用于向处理器提示当前在该CPU上正在运行旋转locking。 英特尔手册和其他可用信息状态 The processor uses this hint to avoid the memory order violation in most situations, which greatly improves processor performance. For this reason, it is recommended that a PAUSE instruction be placed in all spin-wait loops. The documentation also mentions that "wait(some delay)" is the pseudo implementation of the instruction. 上段的最后一行是直观的。 如果我没有成功抓住锁,我必须等待一段时间,然后再次抓住锁。 但是,在自旋锁的情况下,由于内存顺序违反,我们是什么意思? […]

自动为多核机器设置作业(-j)标志?

我在一个拥有大量内核的机器上有一个Makefile,但是编译我的项目时似乎总是忘记写-jX ,并且它比预期的要长。 有什么办法可以通过环境variables或其他持久化configuration文件来设置-j标志,这样make就可以在这台机器上自动执行多个作业?

使用xargs并行运行程序

我目前有当前的脚本。 #!/bin/bash # script.sh for i in {0..99}; do script-to-run.sh input/ output/ $i done 我希望使用xargs并行运行它。 我努力了 script.sh | xargs -P8 但是这样做只能在当时执行一次。 没有运气与-n8以及。 在循环的脚本中添加&要在脚本中执行的行将尝试一次运行脚本99次。 我该如何执行循环只有8时,总共达100。