标签: parallel-processing

并行运行可指定数量的命令 - 对比xargs -P,GNU parallel和"moreutils"parallel

我试图在bash脚本中在26台服务器上运行多个mongodump.

我可以运行3个命令

mongodump -h staging .... & mongodump -h production .... & mongodump -h web ... &

同时,当一个人完成时,我想开始另一个mongodump.

我无法同时运行所有26个mongodumps命令,服务器将在CPU上运行.最多3个mongodumps同时.

parallel-processing bash xargs gnu-parallel

4
推荐指数
2
解决办法
651
查看次数

R与H2O并行处理

我正在设置一段代码来并行处理我的数据中N组的一些计算foreach.

我有一个涉及调用的计算h2o.gbm.

在我目前的顺序设置中,我使用了大约70%的RAM.

如何在并行代码中正确设置h2o.init()?我担心使用多个内核时可能会耗尽内存.

我的Windows 10机器有12个内核和128GB内存.

这个伪代码会有用吗?

library(foreach)
library(doParallel)

#setup parallel backend to use 12 processors
cl<-makeCluster(12)
registerDoParallel(cl)

#loop
df4 <-foreach(i = as.numeric(seq(1,999)), .combine=rbind) %dopar% {
  df4 <- data.frame()
  #bunch of computations
  h2o.init(nthreads=1, max_mem_size="10G")
  gbm <- h2o.gbm(train_some_model)
  df4 <- data.frame(someoutput)
   }

fwrite(df4, append=TRUE)

stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)

memory parallel-processing foreach r h2o

4
推荐指数
1
解决办法
2804
查看次数

java 8并行流需要更多时间

我正在尝试了解java 8并行流.我写了下面的代码,首先使用Executor,然后使用并行流.看起来平行流需要两倍(10秒)的时间与Executor接近(5秒).在我看来,并行流也应该表现出类似的性能.任何想法为什么并行流需要两倍的时间?我的电脑有8个核心.

/**
 * 
 */
package com.shashank.java8.parallel_stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
 * @author pooja
 *
 */
public class Sample {

    public static int processUrl(String url) {

        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("Running Thread " + Thread.currentThread());
        return url.length();
    }

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        usingExecutor();
        usingParallelStream(); …
Run Code Online (Sandbox Code Playgroud)

java parallel-processing concurrency java-8

4
推荐指数
1
解决办法
670
查看次数

R:makeCluster(多核)中的错误:无法打开连接

我有以下问题.

为什么在标准节点上提交作业(最大核56)时一切运行正常,但是当我向big_memory节点(最大核128)提交相同的作业/代码时,我收到错误?

- R中的并行化代码:

no_cores < - detectCores() - 1

cl < - makeCluster(no_cores,outfile = paste0('./ info_parallel.log'))

- 错误......

socketConnection出错(master,port = port,blocking = TRUE,open ="a + b",:

无法打开连接

调用:... doTryCatch - > recvData - > makeSOCKmaster - > socketConnection

另外:警告信息:

在socketConnection中(master,port = port,blocking = TRUE,open ="a + b",:

localhost:11232无法打开

执行停止

反序列化错误(节点$ con):从连接读取错误

调用:... doTryCatch - > recvData - > recvData.SOCKnode - > unserialize

执行停止

反序列化错误(节点$ con):从连接读取错误

调用:... doTryCatch - > recvData - > recvData.SOCKnode - > unserialize

执行停止


正如我所说,R代码在标准节点上运行良好,所以我认为它是large_memory节点的问题.那可能是什么?

谢谢,

parallel-processing r cluster-computing

4
推荐指数
1
解决办法
1088
查看次数

在单核系统上拥有多个线程仍然可以提高性能吗?

我刚刚学习了Java中并行处理的基础知识.我读到了这个问题:单个CPU上有多个线程和性能,并且想知道在单核系统上多线程可能比单线程更快的原因还有其他原因.我在考虑每个线程如何拥有它自己使用的内存.想象一下,在Java中,FXML是主线程的一部分.这可能会增加主线程内存的大小,反过来这可能会减慢线程,因为它必须在交换上加载更多的值,或者更糟糕的是,必须对内存进行更多调用(我认为当前线程的值被复制到缓存中).

总结一下,由于内存分离,可以在单核系统上创建多个线程吗?

java parallel-processing performance single-threaded

4
推荐指数
1
解决办法
1879
查看次数

并发文件系统扫描

我想获取目录中文件的文件信息(文件名和大小,以字节为单位).但是有很多子目录(~1000)和文件(~40 000).

实际上我的解决方案是使用filepath.Walk()来获取每个文件的文件信息.但这很长.

func visit(path string, f os.FileInfo, err error) error {
    if f.Mode().IsRegular() {
        fmt.Printf("Visited: %s File name: %s Size: %d bytes\n", path, f.Name(), f.Size())
    }
    return nil
}
func main() {
    flag.Parse()
    root := "C:/Users/HERNOUX-06523/go/src/boilerpipe" //flag.Arg(0)
    filepath.Walk(root, visit)
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用filepath.Walk()进行并行/并发处理?

filesystems parallel-processing concurrency file-io go

4
推荐指数
1
解决办法
1022
查看次数

简单的numpy.apply_along_axis()并行化?

如何将函数对NumPy数组的元素的应用numpy.apply_along_axis()并行化,以利用多核?在通常情况下,要应用的函数的所有调用都是独立的,这似乎是很自然的事情。

在我的特定情况下,如果此事宜,应用的轴线是轴0: np.apply_along_axis(func, axis=0, arr=param_grid)np是NumPy的)。

我快速浏览了Numba,但似乎无法通过如下循环获得这种并行化:

@numba.jit(parallel=True)
result = np.empty(shape=params.shape[1:])
for index in np.ndindex(*result.shape)):  # All the indices of params[0,...]
    result[index] = func(params[(slice(None),) + index])  # Applying func along axis 0
Run Code Online (Sandbox Code Playgroud)

NumPy中显然还有一个编译选项可通过OpenMP进行并行化,但似乎无法通过MacPorts进行访问。

还可以考虑将数组切成几块并使用线程(以避免复制数据),然后在每块上并行应用函数。这比我要查找的要复杂(如果全局解释器锁释放不充分,则可能不起作用)。

能够以简单的方式使用多个内核来完成简单的可并行化的任务,例如将函数应用于数组的所有元素(这实际上是这里所需要的,函数func()只需一个一维数组),这非常好。参数)。

python arrays parallel-processing performance numpy

4
推荐指数
1
解决办法
2038
查看次数

Spring批处理 - 并行运行多个作业

我是Spring批次的新手,无法弄清楚如何做到这一点..

基本上我有一个spring文件轮询器,每隔N分钟运行一次,在某个目录中查找带有某个名字的文件(例如:A.txt&B.txt).在任何时候,此目录中可能有最多2个文件(A和B).通过Spring Batch Job,这两个文件将被处理并持久保存到2个不同的DB表中.

这些文件有些类似,因此使用相同的处理器/写入器.

现在我设置的方式,每个轮询周期1文件被选中并且作业运行.

假设目录中有2个文件(A.txt和B.txt),有没有办法创建2个作业,以便两个作业可以并行运行?

parallel-processing spring spring-integration spring-batch

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

在bash中并行化循环

我的bash脚本中有以下代码段

#!/bin/bash
    for ((i=100; i>=70; i--))
      do
        convert test.png -quality "$i" -sampling-factor 1x1 test_libjpeg_q"$i".jpg
      done
Run Code Online (Sandbox Code Playgroud)

如何使用所有cpu内核并行执行for循环.我已经看到gnu parallel被使用但是在这里我需要输出文件名在特定的命名方案中,如上所示

parallel-processing bash gnu-parallel

4
推荐指数
1
解决办法
240
查看次数

parTraversable没有产生任何火花

当我运行此程序时-s:

module Main where

import Control.Parallel.Strategies

main :: IO ()
main = do let xs = take 1000 $ product . take 1000 . repeat <$> [1..]
              x  = product (xs `using` parList rseq)
          putStrLn (show x)
Run Code Online (Sandbox Code Playgroud)

火花创建:

SPARKS:1000(993转换,0溢出,0哑,6 GC,1失败)

如果我换parListparTraversable

x  = product (xs `using` parTraversable rseq)
Run Code Online (Sandbox Code Playgroud)

没有产生火花:

SPARKS:0(0转换,0溢出,0哑,0 GC'd,0失败)

如果我rseq改为rdeepseq:

main = do let xs = (take 1000 $ product . take 1000 . repeat <$> [1..]) :: [Integer] …
Run Code Online (Sandbox Code Playgroud)

parallel-processing haskell

4
推荐指数
1
解决办法
78
查看次数