标签: parallel-processing

从Haskell生成矢量代码?

是否有可能让GHC为各代SSE代码生成SIMD代码?

例如.得到了这样的程序

import Data.Array.Vector
main = print . sumU $ (enumFromToFracU 1 10000000 :: UArr Double)
Run Code Online (Sandbox Code Playgroud)

我可以看到生成的代码(为64位x86编译)在标量模式下使用SSE指令(C和asm后端).所以加上而不是addpd.对于我工作的程序类型,使用向量指令对性能很重要.是否有一种简单的方法让像我这样的新手让GHC使用SSE SIMDize代码?

parallel-processing haskell loops vector simd

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

Perl如何在并行处理中共享全局变量?

  use Parallel::ForkManager;
  use LWP::Simple;
  my $pm=new Parallel::ForkManager(10);
  our $a =0;
 @LINK=( 10,203, 20, 20 ,20 ,10 ,101 ,01 ,10 ) ;
  for my $link (@LINK) {
    $pm->start and next;
    my $lo = ($link * 120.22 )*12121.2121212121212121*( 12121212.1212121+ $link);
    $a = $a+ $lo ;   
    print $a."\n" ; 
    $pm->finish;
  };

  print $a ; 
Run Code Online (Sandbox Code Playgroud)

我试图使用并行fork Manager模块访问并行进程上的全局变量.程序结束时全局变量仍然保持不变..如何实现这一目标?是否有可能?

parallel-processing perl fork

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

如何使用System.Threading.Parallel(.Net 4.0)增加并发并行任务

我正在尝试新的System.Threading.Parallel方法,如parallel for和foreach.

它们似乎工作得很好,但我需要一种方法来增加执行的并发线程数,这些线程是8(我有一个四核).

我知道有一种方法我可以找到你隐藏该死的财产的地方.

吉拉德.

c# parallel-processing multithreading .net-4.0

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

MPI缓冲发送/接收订单

我正在使用MPI(与fortran但问题是MPI标准比任何给定语言更具体),并且特别使用缓冲的发送/接收函数isend和irecv.现在,如果我们想象以下场景:

流程0:

isend(stuff1, ...)
isend(stuff2, ...)
Run Code Online (Sandbox Code Playgroud)

过程1:

wait 10 seconds
irecv(in1, ...)
irecv(in2, ...)
Run Code Online (Sandbox Code Playgroud)

消息是按照发送顺序传递给进程1的,即如果使用的标记在所有情况下都相同,我可以确定in1 == stuff1和in2 == stuff2 吗?

parallel-processing mpi

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

使用openmp进行并行冒泡排序

我写了一个用于冒泡排序算法的c ++代码,我不知道如何使用openmp使其并行,所以请帮助我.....这是代码:

#include "stdafx.h"    
#include <iostream>
#include <time.h>
#include <omp.h>
using namespace std;

int a[40001];
void sortArray(int [], int);
int q=0;

int _tmain(int argc, _TCHAR* argv[])
{   
int x=40000;
int values[40000];
for (int i=0;i<x;i++)
{
    values[i]=rand();
}
cout << "Sorting Array .......\n";
clock_t start = clock();
sortArray(values, x);
 cout << "The Array Now Sorted\n";
printf("Elapsed Time : %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);
cout << "\n";
}
 void sortArray(int array[], int size)  
{
  bool swap;
   int temp;
  do
  {
   swap …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing bubble-sort

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

运行我的流程的核心是什么?

我目前正在进行并行编程课程,我们的第一个编程练习是创建四个线程,显示"hello world"类型的消息.我想知道运行线程的核心是什么.我尝试在Unix上使用TOP命令来显示所有进程,我确实看到了5个不同的线程,但不知道如何查看运行每个线程的内核.

linux parallel-processing

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

使用openmp并行for_each

为什么这个代码在与std :: sort()完全正常工作时不会并行化std :: for_each()?

我如何解决它?

g++ -fopenmp -D_GLIBCXX_PARALLEL=1 -o p p.cc && time ./p  sort
Run Code Online (Sandbox Code Playgroud)

Linux上的GCC 4.3.

#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>

void delay()
{
        for(int c = 0; c < 1000000; c++) {
    }
}

int lt(int a, int b)
{
        delay();
        return a < b;
}

void noop(int a)
{
    delay();
}

int main(int argc, char **argv)
{
        if (argc < 2) {
                printf("%s  <sort | for_each>\n", argv[0]);
                return 1;
    }

        std::vector<int> foo(10000);

        if …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing openmp

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

F#:告诉我使用Async.Parallel时我缺少什么

好的,所以我正在做ProjectEuler问题#14,我正在摆弄优化以便感受f#out.

在以下代码中:

let evenrule n = n / 2L
let oddrule n = 3L * n + 1L

let applyRule n =
    if n % 2L = 0L then evenrule n
    else oddrule n

let runRules n =
    let rec loop a final =
        if a = 1L then final
        else loop (applyRule a) (final + 1L)
    n, loop (int64 n) 1L


let testlist = seq {for i in 3 .. 2 .. 1000000 do yield i } 

let getAns …
Run Code Online (Sandbox Code Playgroud)

parallel-processing f#

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

简单的C++容器类,对于写入是线程安全的

我正在使用C++中的OpenMP编写一个多线程程序.有一次,我的程序分成许多线程,每个线程都需要将"作业"添加到某个容器中,以跟踪所有添加的作业.每个作业都可以是指向某个对象的指针.

基本上,我只需要同时从几个线程添加指向某个容器的指针.

有一个表现良好的简单解决方案吗?经过一些谷歌搜索,我发现STL容器不是线程安全的.一些stackoverflow线程解决了这个问题,但没有一个在简单的解决方案上形成共识.

c++ parallel-processing thread-safety data-structures

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

没有使用OpenMP的无用printf加速

我刚刚编写了第一个OpenMP程序,它并行化了一个简单的for循环.我在双核机器上运行代码,从1个线程到2个线程时看到了一些加速.但是,我在学校的Linux服务器上运行相同的代码,并没有看到加速.在尝试了不同的事情后,我终于意识到删除一些无用的printf语句会导致代码显着加速.下面是我并行化的代码的主要部分:

#pragma omp parallel for private(i)
for(i = 2; i <= n; i++)
{
  printf("useless statement");
  prime[i-2] = is_prime(i);
}
Run Code Online (Sandbox Code Playgroud)

我想printf的实现有很大的开销,OpenMP必须与每个线程重复.是什么导致了这种开销,为什么OpenMP无法克服它?

parallel-processing performance printf multithreading openmp

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