标签: parallel-processing

如何限制Scala中未处理的期货数量?

如果有办法限制Scala中未处理的期货数量,我无法资助.例如,在以下代码中:

import ExecutionContext.Implicits.global    
for (i <- 1 to N) {
  val f = Future {
    //Some Work with bunch of object creation
  }
}
Run Code Online (Sandbox Code Playgroud)

如果N太大,它最终会抛出OOM.有没有办法限制未处理的Futures ether的数量与队列般的等待或异常?

parallel-processing scala

5
推荐指数
1
解决办法
1009
查看次数

如何使用简化并行化这个for循环?

我试图通过使用Openmp使这个for循环并行化,我认识到在这个循环中减少了所以我添加了"#pragma omp parallel for reduction(+,ftab)",但它没有用,它给了我这个错误:错误:找不到'ftab'的用户定义缩减.

   #pragma omp parallel for reduction(+:ftab)
    for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];
Run Code Online (Sandbox Code Playgroud)

c arrays parallel-processing openmp reduction

5
推荐指数
1
解决办法
370
查看次数

R中的分层聚类并行处理

是否有直接的方法在HPC集群中利用R中的并行处理来使我的计算更快地进行分层聚类算法?因为现在,处理器的平均利用率只有1,但我可以请求和使用更多.谢谢.

parallel-processing hpc r hierarchical-clustering

5
推荐指数
0
解决办法
605
查看次数

Julia,多次运行函数,将结果保存在数组中

我正在朱莉娅建立一个微观模拟模型.我已经建立了我的功能结构,它适用于1"人".我想编写脚本来通过模型运行100000多人,并将结果保存在一个位置.

最终我想并行执行此操作.

下面我已经包含了一个带有虚拟概率的简单工作版代码.

using Distributions

# Microsim function
function  MicroSim(start_age, stages)
  stage = 0
  age = start_age

  # Set all trackers to 0
  Death_tracker = 0
  Disease_tracker = 0

  # While loop
  while stage <= stages
    age = age

    ###########################################################
    # Probability of Death
    pD = 0.02

    if age == 100
      pD = 1.0
    else
      pD = pD
    end

    # Coin flip
    dist_pD = Bernoulli(pD)
    Died = rand(dist_pD, 1)

    if Died == [1]
      Death_tracker = 1
      # death tracker loop …
Run Code Online (Sandbox Code Playgroud)

parallel-processing function pmap julia map-function

5
推荐指数
1
解决办法
895
查看次数

并行集合中scala折叠的行为

让我们多次运行以下代码行:

Set(1,2,3,4,5,6,7).par.fold(0)(_ - _)
Run Code Online (Sandbox Code Playgroud)

结果非常有趣:

scala> Set(1,2,3,4,5,6,7).par.fold(0)(_ - _)
res10: Int = 8
scala> Set(1,2,3,4,5,6,7).par.fold(0)(_ - _)
res11: Int = 20
Run Code Online (Sandbox Code Playgroud)

但显然它应该像顺序版本一样:

scala> Set(1,2,3,4,5,6,7).fold(0)(_ - _)
res15: Int = -28
Run Code Online (Sandbox Code Playgroud)

我理解操作-对整数是非关联的,这就是这种行为背后的原因,但我的问题很简单:它不是意味着fold不应该在.par集合的实现中并行化吗?

parallel-processing scala

5
推荐指数
1
解决办法
1131
查看次数

防止在Julia并行化中覆盖模块

我写了一个带有各种函数的Julia模块,我打电话来分析数据.其中一些函数依赖于包,它们包含在文件"NeuroTools.jl"的开头.

module NeuroTools

using MAT, PyPlot, PyCall;

function getHists(channels::Array{Int8,2}...
Run Code Online (Sandbox Code Playgroud)

我拥有的许多函数对于并行运行很有用,所以我编写了一个驱动程序脚本,使用remotecall/fetch将函数映射到不同的线程.要在每个线程上加载函数,我使用-L选项启动Julia以在每个worker上加载我的模块.

julia -p 16 -L NeuroTools.jl parallelize.jl
Run Code Online (Sandbox Code Playgroud)

要将加载的函数放入范围,"parallelize.jl"脚本具有该行

@everywhere using NeuroTools
Run Code Online (Sandbox Code Playgroud)

我的并行函数正常工作并执行,但每个工作线程都会从被覆盖的模块中发出一堆警告.

WARNING: replacing module MAT
WARNING: Method definition read(Union{HDF5.HDF5Dataset, HDF5.HDF5Datatype, HDF5.HDF5Group}, Type{Bool}) in module MAT_HDF5...
(contniues for many lines)
Run Code Online (Sandbox Code Playgroud)

有没有办法以不同的方式加载模块或更改范围以防止所有这些警告?在这个问题上,文档似乎并不完全清楚.

parallel-processing julia

5
推荐指数
1
解决办法
114
查看次数

Spring Data Query Execution Optimization:在JpaRepository中并行执行Hibernate @Query方法

我有一个仪表板视图,它需要来自整个数据库的表的小数据集.我优化了数据库查询(例如删除了子查询).现在有大约20个查询一个接一个地执行,它们从数据库中获取不同的数据集.大多数HQL查询都包含GROUP BYJOIN子句.使用Spring REST接口,结果将返回到前端.

如何优化自定义查询的执行?我最初的想法是并行运行数据库查询.但是我该如何实现呢?在做了一些研究之后,我找到了注释@Async,它可以并行运行方法.但这是否适用于Hibernate方法?是否总是为@QueryJpaRepository中注释的每个方法创建一个新的数据库会话?运行数据库查询是否会对总体执行时间产生影响?

另一种并行运行数据库调用的方法是将Dashboard调用拆分为几个单独的Ajax调用(每个关注点都有自己的Ajax调用).我不想这样做,因为每次打开仪表板(或者例如更改日期范围)时,都会进行另外20次Ajax调用以获取新数据.同样的问题仍然存在:并行运行SQL查询是否会影响数据库的执行时间?

我目前还没有向数据库添加其他索引.这将是下一件事,我肯定会这样做.但是,我对并行运行查询的性能影响以及如何使用Spring以编程方式实现此问题感兴趣.

我的项目最初是由jHipster(Spring Boot,MariaDB,AngularJS等)生成的.

parallel-processing spring hibernate hql spring-data

5
推荐指数
1
解决办法
4005
查看次数

节点异步并行瀑布内部

我正在Nodejs中构建一个服务器来从某个数据库中检索数据.我已经使用异步库一段时间了,并想出了一些事情,比如将瀑布放入并行函数中.

我偶然发现了一个问题,我首先需要执行一个查询,然后在其他可以同时执行的查询中使用该查询的结果.代码看起来像这样:

async.waterfall([
    function(callback) {
        connection.query(   query,
                            function(err, rows, fields) {
                                if (!err) {
                                    callback(null,rows);
                                } else {
                                    callback(null,"SORRY");
                                }
                            }
        );
    },
    async.parallel([
        function(resultFromWaterfall,callback) {
            connection.query(query,
                            function(err, rows, fields) {
                                if (!err) {
                                    callback(null,rows);
                                } else {
                                    callback(null,"SORRY");
                                }
                            }
           );
        },
        function(resultFromWaterfall,callback) {
            connection.query(query,
                            function(err, rows, fields) {
                                if (!err) {
                                    callback(null,rows);
                                } else {
                                    callback(null,"SORRY");
                                }
                            }
           );
        }
    ])
], finalCallback
);
Run Code Online (Sandbox Code Playgroud)

现在我的问题是从瀑布函数访问结果并在并行函数中使用它.

parallel-processing asynchronous waterfall node.js

5
推荐指数
1
解决办法
2918
查看次数

平行大熊猫适用

熊猫的新手,我已经想要并行执行逐行应用操作。到目前为止,我发现Parallelize在pandas groupby之后适用。但是,这似乎仅适用于分组的数据帧。

我的用例是不同的:我有一个假期列表,并且对于我当前的行/日期,想要找到从这一天之前到第二天到下一个假期的无休日。

这是我通过apply调用的函数:

def get_nearest_holiday(x, pivot):
    nearestHoliday = min(x, key=lambda x: abs(x- pivot))
    difference = abs(nearesHoliday - pivot)
    return difference / np.timedelta64(1, 'D')
Run Code Online (Sandbox Code Playgroud)

我如何加快速度?

编辑

我对pythons池做了一些实验-但这既不是很好的代码,也没有得到我的计算结果。

python parallel-processing apply embarrassingly-parallel pandas

5
推荐指数
3
解决办法
4153
查看次数

Python:模拟的调用计数无法通过多处理并行执行

我正在尝试测试一个简单的模块进行并行化。这个模块提供了一个简单的功能run_tasks(tasks, use_multiprocessing)。我的简单测试包括使用MagicMock类生成任务列表,调用run_tasks并测试是否所有模拟都只被调用了一次。

在指定串行运行的情况下,所有模拟都被调用一次。但是,在并行运行的情况下,模拟的呼叫计数为零。我认为这是模拟模块的问题,因为如果任务包含打印语句,则将在串行和并行运行中执行该语句。

这是测试代码(注意:test_run_tasks_in_parallel失败,但test_run_tasks_serially为绿色):

from unittest import TestCase
from mock import mock

from src.stochastic_simulation.util.embarrassing_parallelization import run_tasks
from src.stochastic_simulation.simulation.task import Task


class TestRunTasks(TestCase):
    def setUp(self):
        self.functions_to_run = [mock.MagicMock() for i in range(0, 9)]
        self.test_tasks = [Task(function, None) for function in self.functions_to_run]

    def test_run_tasks_in_parallel(self):
        run_tasks(self.test_tasks, use_multiprocessing=True)
        for function in self.functions_to_run:
            function.assert_called_once()

    def test_run_tasks_serially(self):
        run_tasks(self.test_tasks)
        for function in self.functions_to_run:
            function.assert_called_once()
Run Code Online (Sandbox Code Playgroud)

这是模块

import multiprocessing as mp


def run_task(task):
    task.run()


def run_tasks(tasks, use_multiprocessing=False):
    if use_multiprocessing:
        available_processors = mp.cpu_count() - …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing unit-testing mocking

5
推荐指数
1
解决办法
400
查看次数