标签: parallel-processing

更改Ant <exec>任务的输出中的[exec]标签

我正在使用Ant的<parallel>任务来执行多个使用<exec>任务的同时目标,但由于它是交错的,所以很难读取输出.有没有办法更改[exec]每行输出之前出现的标签以使用命令或目标名称?

例如,在运行pdependphpcpd我想改变[exec],以[pdepend][phpcpd]:

pdepend:
    [exec] PHP_Depend 0.10.5 by Manuel Pichler
    [exec] 

phpcpd:
    [exec] Parsing source files:
    [exec] phpcpd 1.3.2 by Sebastian Bergmann.
    [exec] 
    [exec] ............................................................    60
    [exec] Found 26 exact clones with 640 duplicated lines in 28 files:
    [exec] 
    [exec]   - application/modules/controllers/IndexController.php:16-31
    [exec] ............................................................   120
    [exec]     application/modules/controllers/ErrorController.php:15-30
    [exec] 
    [exec]   - application/modules/controllers/PhotosController.php:24-33
    [exec] ............................................................   180
    [exec] ............................................................   240
Run Code Online (Sandbox Code Playgroud)

pdepend:
 [pdepend] PHP_Depend 0.10.5 by Manuel Pichler …
Run Code Online (Sandbox Code Playgroud)

ant parallel-processing exec echo

10
推荐指数
1
解决办法
1364
查看次数

用于集群环境的伪随机数发生器

如何在集群上生成独立的伪随机数,例如蒙特卡罗模拟?我可以有很多计算节点(例如100),我需要在每个节点上生成数百万个数字.我需要保证一个节点上的PRN序列不会与另一个节点上的PRN序列重叠.

  • 我可以在根节点上生成所有PRN,然后将它们发送到其他节点.但这太慢了.
  • 我可以在每个节点上跳到序列中的已知距离.但对于Mersenne-Twister或任何其他优秀的PRNG,是否有这样的算法,可以在合理的时间和内存下完成?
  • 我可以在每个节点上使用不同的生成器.但是有没有像Mersenne-Twister这样的优秀发电机?怎么可能呢?
  • 还有其他吗?

random parallel-processing prng mersenne-twister

10
推荐指数
1
解决办法
3479
查看次数

HPC中的UPC - 经验和建议

我目前正在探索统一并行C的某些方面,作为HPC中标准并行化方法的替代方法(如MPI,OpenMP或氢化方法).

我的问题是:有没有人在大规模应用程序(〜> 10.000核心)上有UPC性能经验?我主要对共享内存的访问速度感兴趣.显然这取决于底层硬件,网络连接,操作系统,编译器等.但我通常对使用UPC解决任何类型的"真实世界"问题感兴趣.

此外,您对UPC的总体印象是什么?你认为它有可能比现在更广泛地使用未来吗?是否值得转用它?

欢迎任何评论!

非常感谢,马克

c parallel-processing hpc upc

10
推荐指数
2
解决办法
446
查看次数

Scala中的策略

有没有相当于Haskell Control.Parallel.Strategies或实现相同的方法?

这允许以不同的方式评估现有代码.通过将算法与策略和算法从评估中分离出来.

parallel-processing haskell scala

10
推荐指数
1
解决办法
299
查看次数

c ++:OpenMP和非随机访问STL容器 - 一种可能的解决方法

因此,在SO和整个互联网上,如何使OpenMP易于使用的#pragma指令与C++同样易于使用的STL容器配合使用,会有很多困惑和沮丧.

每个人都有关变通的STL会谈vector,但对于非随机接入/双向容器,如map,list,set,等?

我遇到了这个问题并设计了一个非常简单明了的解决方法.我在这里介绍STL map,但它显然是可推广的.

串口版:

for (std::map<A,B>::iterator it = my_map.begin();
        it != my_map.end();
        ++it)       
    { /* do work with  it   */  }
Run Code Online (Sandbox Code Playgroud)

我提出的将OpenMP与STL一起使用的解决方案map:

    //make an array of iterators.
    int loop_length = my_map.size();
    std::map<A,B>::iterator loop_array[ loop_length ];

    std::map<A,B>::iterator allocate_it = my_map.begin();
    for (int j=0; j<loop_length; ++j)
        loop_array[j] = allocate_it++;

    // now you can use OpenMP as usual:
    #pragma omp parallel for
    for (uint j=0; j<loop_length; ++j) 
       { /* …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing multithreading stl openmp

10
推荐指数
1
解决办法
3131
查看次数

Python名称空间与ipython并行问题

我开始尝试使用IPython并行工具并遇到问题.我启动我的python引擎:

ipcluster start -n 3
Run Code Online (Sandbox Code Playgroud)

然后以下代码运行正常:

from IPython.parallel import Client

def dop(x):
    rc = Client()
    dview = rc[:]
    dview.block=True
    dview.execute('a = 5')
    dview['b'] = 10
    ack = dview.apply(lambda x: a+b+x, x)
    return ack

ack = dop(27)
print ack
Run Code Online (Sandbox Code Playgroud)

按原样返回[42,42,42].但如果我将代码分成不同的文件:dop.py:

from IPython.parallel import Client

def dop(x):
    rc = Client()
    dview = rc[:]
    dview.block=True
    dview.execute('a = 5')
    dview['b'] = 10
    print dview['a']
    ack = dview.apply(lambda x: a+b+x, x)
    return ack
Run Code Online (Sandbox Code Playgroud)

并尝试以下方法:

from dop import dop
ack = dop(27)
print ack
Run Code Online (Sandbox Code Playgroud)

我从每个引擎得到错误:

[0:apply]: …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing ipython python-2.7

10
推荐指数
1
解决办法
4083
查看次数

在c ++中复制和操作大型,密集的2D数组的最快方法是什么

我正在尝试优化我的代码,利用多核处理器来复制任何操作大型密集阵列.

对于复制:我有一个大密集阵列(大约6000x100000),我需要从中拉出15x100000子阵列,在管道上进行多次计算.该管道由许多线性代数函数组成,这些函数由blas处理,这是多核的.与线性代数相比,提取数据的时间是否真的重要是一个悬而未决的问题,但我要谨慎一点,并确保数据复制得到优化.

对于操作:我有许多不同的函数,通过元素或行来操作数组.如果每个都做多核,那将是最好的.

我的问题是:最好是使用正确的框架(OpenML,OpenCL)并让编译器发生所有的魔术,还是有更好的功能/库可以更快地完成这项工作?

c++ arrays parallel-processing performance opencl

10
推荐指数
1
解决办法
926
查看次数

我可以报告openmp任务的进度吗?

想象一下经典的OMP任务:

  • 在[0.0,1.0)范围内对一个大的双精度矢量求和

Live On Coliru

using namespace std;

int main() {
    vector<double> v;

    // generate some data
    generate_n(back_inserter(v), 1ul << 18, 
       bind(uniform_real_distribution<double>(0,1.0), default_random_engine { random_device {}() }));

    long double sum = 0;

    {
#pragma omp parallel for reduction(+:sum)
        for(size_t i = 0; i < v.size(); i++)
        {
            sum += v[i];
        }
    }
    std::cout << "Done: sum = " << sum << "\n";
}
Run Code Online (Sandbox Code Playgroud)

我无法想出如何报告进度.毕竟,OMP正在为我处理团队线程之间的所有协调,而我没有一个全局状态.

我可能会使用常规std::thread并从那里观察一些共享变量,但是没有更多的"omp-ish"方法来实现这一目标吗?

c++ parallel-processing multithreading progress openmp

10
推荐指数
2
解决办法
2560
查看次数

无法获得matlabpool启动

我大约一年半以来一直在运行MATLAB.而且我一直在努力让matlabpool准备好在将近三个月内完成一次.在我完全放弃之前,我决定寻求帮助.:)

我的问题始于matlabpool命令.每当我输入matlabpool命令时,我都会得到:

One or more output arguments not assigned during call to "system_dependent".

Error in matlabpool>iIsOnClient (line 73)
onclient = ~system_dependent('isdmlworker');

Error in matlabpool>iVerifyJava (line 64)
if iIsOnClient()

Error in matlabpool (line 10)
iVerifyJava();
Run Code Online (Sandbox Code Playgroud)

经过一些研究和不眠之夜,我发现必须使用"Cluster Profile Manager"解决问题.但我从来没有机会看到它的运作.以下是从Parallel面板中单击Cluster Profile Manager后得到的内容:

com.mathworks.jmi.MatlabException: Feature isdmlworker not found
    at com.mathworks.jmi.NativeMatlab.SendMatlabMessage(Native Method)
    at com.mathworks.jmi.NativeMatlab.sendMatlabMessage(NativeMatlab.java:266)
    at com.mathworks.jmi.MatlabLooper.sendMatlabMessage(MatlabLooper.java:120)
    at com.mathworks.jmi.Matlab.mtFeval(Matlab.java:1710)
    at com.mathworks.jmi.MatlabWorker.feval(MatlabWorker.java:197)
    at com.mathworks.toolbox.distcomp.ui.profile.model.MatlabProfileManager$1.runOnMatlabThread(MatlabProfileManager.java:80)
    at com.mathworks.jmi.MatlabWorker$2.run(MatlabWorker.java:79)
    at com.mathworks.jmi.NativeMatlab.dispatchMTRequests(NativeMatlab.java:475)
Attempt to reference field of non-structure array. …
Run Code Online (Sandbox Code Playgroud)

parallel-processing matlab distributed-computing matlabpool

10
推荐指数
1
解决办法
475
查看次数

在处理Java 8流管道时,对顺序()和并行()的调用顺序是否重要?

调用sequential()parallel()更改Java 8流管道的执行方式是否放置?

例如,假设我有这样的代码:

new ArrayList().stream().parallel().filter(...).count();
Run Code Online (Sandbox Code Playgroud)

在这个例子中,很明显filter()将并行运行.但是,如果我有这个代码怎么办:

new ArrayList().stream().filter(...).parallel().count();
Run Code Online (Sandbox Code Playgroud)

是否filter()在并行运行仍然还是它按顺序运行?之所以不清楚是因为中间操作filter()是懒惰的,即它们不会在调用终端操作之前运行count().因此,在count()调用时,我们有一个并行流管道但是filter()顺序执行,因为它调用之前到来了parallel()

java parallel-processing java-stream

10
推荐指数
1
解决办法
457
查看次数