标签: parallel-processing

在并行Java流中处理随机数

我想从0到50范围内生成5个不同的随机数,然后并行执行一些操作.当我写这个程序时,程序永远不会结束:

new Random().ints(0, 50)
            .distinct()
            .limit(5)
            .parallel()
            .forEach(d -> System.out.println("s: " + d));
Run Code Online (Sandbox Code Playgroud)

我试图使用peek调试它.我有无限的c:行数,50 d:行,但零l:s:行:

new Random().ints(0, 50)
            .peek(d -> System.out.println("c: " + d))
            .distinct()
            .peek(d -> System.out.println("d: " + d))
            .limit(5)
            .peek(d -> System.out.println("l: " + d))
            .parallel()
            .forEach(d -> System.out.println("s: " + d));
Run Code Online (Sandbox Code Playgroud)

我的实施有什么问题?

java parallel-processing java-stream

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

pthreads - 如何并行化作业

我需要并行化一个简单的密码破解程序,以便在n处理器系统上使用它.我的想法是创建n个线程,并在完成后为它们提供越来越多的工作.

了解线程何时完成的最佳方法是什么?互斥?在其他线程运行时不断检查这个互斥锁是不是很昂贵?

parallel-processing multithreading pthreads

3
推荐指数
1
解决办法
1503
查看次数

如何在ruby中下载快速的网页?并行下载?

我需要刮掉(使用scrAPI)400多个网页ruby,我的实际代码是非常顺序的:

data = urls.map {|url| scraper.scrape url }
Run Code Online (Sandbox Code Playgroud)

实际上代码有点不同(异常处理和东西).

我怎样才能让它更快?如何并行化下载?

ruby parallel-processing wget download

3
推荐指数
1
解决办法
1173
查看次数

用于C++的独立于平台的并发编程库

我熟悉Java中的并发编程,它提供了很多工具.但是,C++并发编程并不是那么容易开始使用.

在C++上同时开始编程的最佳方法是什么?是否有任何好的库包装并发编程基元并为您提供更多高级构造?

我尝试了QtConcurrent,它为你提供了很好的MapReduce功能,但它严重偏向于使用Qt的并发计算,所以如果你不想使用Qt,它不是一个好的选择.

还有其他类似的图书馆吗?人们在这里使用什么?

谢谢你的帮助提前,谢谢

c++ parallel-processing cross-platform

3
推荐指数
1
解决办法
3666
查看次数

使用更多线程时,什么可以使程序运行得更慢?

这个问题与我之前询问的程序有关.回顾一下,我有一个循环结构的程序,如下所示:

for (int i1 = 0; i1 < N; i1++)
  for (int i2 = 0; i2 < N; i2++)
    for (int i3 = 0; i3 < N; i3++)
      for (int i4 = 0; i4 < N; i4++)
        histogram[bin_index(i1, i2, i3, i4)] += 1;
Run Code Online (Sandbox Code Playgroud)

bin_index 对于这个问题而言,它是一个完全确定性的函数,它不会使用或改变任何共享状态 - 换句话说,它显然是可重入的.

我首先编写了这个程序来使用单个线程.然后我将它转换为使用多个线程,这样线程就n可以运行外部循环的所有迭代i1 % nthreads == n.所以在每个线程中运行的函数看起来像

for (int i1 = n; i1 < N; i1 += nthreads)
  for (int i2 = 0; i2 < N; i2++) …
Run Code Online (Sandbox Code Playgroud)

parallel-processing multithreading pthreads

3
推荐指数
2
解决办法
4547
查看次数

并行应用程序的Mutable与Immutable

在我写的应用程序中,我需要编写许多基类型,这很可能是不可变的.但我想知道可变类型在并行应用程序中如何与不可变类型进行比较.

你可以使用带有可变对象的锁,对吧?它与并行应用程序中不可变类型使用的其他技术相比如何?

你至少不使用具有不可变类型的锁,对吧?

.net c# parallel-processing mutable immutability

3
推荐指数
1
解决办法
2423
查看次数

并行算法和数据结构

我对算法感兴趣(见这里),我想知道是否存在(与我之前的问题相反),并行编程主流的算法和数据结构.关于主流并行算法和ds的问题可能还为时过早,但这里的一些大师可能对其中一些人有过良好的经历/糟糕的经历.

编辑:我对algos和ds的成功实际应用比对学术论文更感兴趣.

谢谢

algorithm parallel-processing data-structures

3
推荐指数
2
解决办法
1890
查看次数

将MPI支持添加到C++程序

我有一个用C++实现的程序,我现在想要添加MPI支持.有一个用于C++的MPI绑定,带有命名空间MPI和所有东西.

在我的例子中,我有一个特定的对象,适合作为集群的并行化进程.

我的问题是:

  • 以前有人做过这样的事吗?我可以就如何最好地实现这一点获得一些建议吗?
  • 如何在构造函数中初始化MPI?在Class的构造函数中初始化MPI之后,所有的中间调用都会被并行化吗?

例如:

MyClass obj;

x = x; //this will be parallelized ?
onj.calc();

y = x++; //this will be parallelized ?

z = obj.result();
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing mpi openmpi

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

关闭OpenMP

在我的C++程序中,我想有时使用OpenMP运行其可执行文件,有时不使用OpenMP(即多线程或单线程).我正在考虑以下两种情况中我的代码如何使用OpenMP:

(1)假设我的代码只有#include <omp.h>和OpenMP指令.

(2)与(1)相同,我的代码进一步调用OpenMP函数omp_get_thread_num().

为了不为不同的运行提供不同的代码,是否使用一些自定义的预编译变量来保护OpenMP出现在我的代码中的唯一方法是什么?

感谢致敬!

c++ parallel-processing openmp

3
推荐指数
2
解决办法
4524
查看次数

是否有可用于Java的HashMap的并行处理实现?它甚至可能吗?

正在寻找神奇的ParallelHashMap类

更简洁一点,您可以使用多个线程来加速HashMap查找吗?是否有任何实现已经执行此操作?

在我的项目中,我们需要在内存中维护一个大的对象映射.我们从不在创建地图后修改地图,因此地图严格是只读的.但是,此映射上的读取和查找性能对于应用程序的成功至关重要.安装应用程序的系统通常具有许多可用的硬件线程.然而,我们的查找仅使用单个线程从HashMap中检索值.使用多个线程(可能在池中)的分而治之的方法是否有助于提高查找速度?

我的大多数谷歌搜索都没有结果 - 返回了很多关于并发问题而不是解决方案的结果.任何建议都会受到赞赏,但如果您知道开箱即用的解决方案,那就太棒了.

另外值得注意的是,所有键和值都是不可变的.散列码值是预先计算的,并在实例化时存储在对象本身中.

至于实现的细节,Map中有大约35,000个项目.键和值都是对象.键是自定义查找键,值是字符串.目前,我们每秒可处理大约5,000次查找(这包括一些其他逻辑的开销,但主要的瓶颈是地图实现本身).但是,为了满足我们未来的性能需求,我希望每秒可以获得大约10,000次查找.按照大多数正常标准,我们目前的实施速度很快 - 只是我们需要它更快.

在我们35,000个值的Map中,我们平均有一个哈希码冲突,所以我猜测哈希码的分布相当合理.

java collections parallel-processing multithreading

3
推荐指数
1
解决办法
2504
查看次数