我有一个很大的计算工作要实现,它基本上对大约500 000个系列应用逻辑回归。 由于工作繁重,我将工作分为4个125000系列。
我有一个带有超线程的双核处理器,结果非常快。
但我对此有疑问。块的数量是否应与核心数(或超线程情况下的线程数)相同?我不确定pmap是如何工作的,我读了incanter conf并且仍然不确定因为这个人有2个内核并将工作分成4个线程。
无论如何这是一项相当繁重的工作(使用pmap超过5个小时,没有它的情况会多得多),所以欢迎任何重大优化。
由于
答案 0 :(得分:2)
在构建自己的clojure.core.reducers
之前查看<div class="uib-datepicker" ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">
<uib-daypicker ng-switch-when="day" tabindex="0"></uib-daypicker>
<uib-monthpicker ng-switch-when="month" tabindex="0"></uib-monthpicker>
<uib-yearpicker ng-switch-when="year" tabindex="0"></uib-yearpicker>
</div>
。
通过对个人发展的思考是一个重要的项目,因为它建立了对这个问题真正有多难的理解和欣赏。好的解决方案包括像&#34;工作窃取&#34;例如,空闲处理器可以从繁忙的处理器中获取工作。
在现实生活中,最好直接进入内置reducers 的clojure。如果您使用不可变向量作为输入,它们会使这看起来很容易,并且它将自动管理Java的fork/join框架以处理批量大小和工作分配。 This blog post也提供了很多背景知识。
然后,您可能希望使用transducers来减少生成的中间数据结构的数量。
答案 1 :(得分:0)
查看c.c.reducers
的提示是一个很好的提示。如果您的工作结果无法按顺序退回,您可能还需要查看Topshelf GitHub repo,这将为您提供一个具有很大灵活性和强大功能的简洁API,并愉快地完成您的工作线程或Hadoop集群,具体取决于您的需求。