标签: parallel-processing

Java中的并行性

是否有像Java中的Intel TBB这样的库支持Parallelism.

java parallel-processing concurrency java.util.concurrent

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

并行ForEach随着时间的推移耗尽极少的处理能力

我运行了以下代码,随着时间的推移(一两个小时),我注意到迭代项目需要更长时间.我正在做的事情导致这种情况发生吗?如果是这样我该怎么办呢?

        int totalProcessed = 0;
        int totalRecords = MyList.Count();

        Parallel.ForEach(Partitioner.Create(0, totalRecords), (range, loopState) =>
        {
            for (int index = range.Item1; index < range.Item2; index++)
            {
                DoStuff(MyList.ElementAt(index));
                Interlocked.Increment(ref totalImported);
                if (totalImported % 1000 == 0)
                    Log(String.Format("Processed {0} of {1} records",totalProcessed, totalRecords));
            }
        });

         public void DoStuff(IEntity entity)
         {
              foreach (var client in Clients)
              {
                  // Add entity to a db using EF
                  client.Add(entity);
              }
          }
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

.net c# parallel-processing .net-4.0

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

在编写openCL代码时,它如何在没有GPU的单核机器上执行?

嘿所有,我目前正在将FORTRAN 77的光线跟踪器移植到C进行研究项目.

移植完要素后,问题是我们如何进行并行化.
在实验室中,我可以访问几个不同的Opteron机器,有2到8个内核,但没有GPU(目前).我们正在运行64b gentoo.

GPGPU版本(非常)是可取的,但项目中只有一个程序员,维护单独的非GPU和GPU版本不是一种选择.
此外,代码将是GPL,并且我们希望看到它被其他可能具有完全不同硬件的人使用.

因此,整个程序必须易于编译/运行,而无需GPU或甚至多核系统.
OpenCl似乎是一个不错的选择,因为它可以在没有GPU的机器上运行,但是这个代码将如何在单核或32b系统上运行?
是否有可能以这样的方式编写代码,以便在没有openCL的情况下轻松编译代码?

c parallel-processing raytracing opencl

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

将并行Python代码移动到云端

听说科学计算项目(恰好是这里描述的随机纤维束成像方法)我目前正在为一名研究人员运行,我们的50个节点集群需要4个月,研究人员要求我检查其他选项.该项目目前正在使用并行python将4d数组的块分配到不同的集群节点,并将处理后的块重新组合在一起.

我目前正在处理的工作可能过于粗糙,(5秒到10分钟,我不得不在并行python中增加超时默认值)并且我估计通过重写它可以将进程加速2-4倍为了更好地利用资源(将数据拆分和重新组合在一起花费的时间太长,也应该并行化).大部分工作都是由numpy数组完成的.

我们假设2-4次是不够的,我决定从我们的本地硬件中获取代码.对于像这样的高吞吐量计算,我的商业选择是什么以及如何修改代码?

python parallel-processing mapreduce amazon-ec2 parallel-python

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

并行扩展

我有一个具有大量IO操作的应用程序,例如文件复制,压缩和移动文件系统周围的文件,复制到备份服务器.

我将此程序构建为单线程.它运行2分钟.

我使用Parallel扩展并使用Task构建了该程序的另一个版本,它几乎在2分钟内运行.

换句话说,由于IO很大,我没有看到使用Parallels带来的性能提升.

如果我将应用程序部署到刀片服务器,我会得到相同的结果吗?

刀片服务器是否比我的工作站更快/更多地处理IO?

将Parallels与IO绑定应用程序一起使用没有任何好处吗?

.net c# io parallel-processing parallel-extensions

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

尝试在MATLAB中使用parfor(并行for循环)时出错

我正在处理一个非常庞大的矩阵,因此希望在MATLAB中使用并行计算来运行集群.在这里,我使用以下方法创建了一个稀疏矩阵

Ad = sparse(length(con)*length(uni_core), length(con)*length(uni_core));
Run Code Online (Sandbox Code Playgroud)

我有一个书面函数,adj使用它我可以填充矩阵Ad.的循环运行时,都会从功能adj我得到的方形对称矩阵将被分配给Ad3682*(i-1)+13682 *(i-1)+3682在第一索引并且类似地在第二索引.这显示在这里:

parfor i = 1:length(con)
  Ad((3682*(i-1))+1:((3682*(i-1))+3682), ...
     (3682*(i-1))+1:((3682*(i-1))+3682)) = adj(a, b, uni_core);
end
Run Code Online (Sandbox Code Playgroud)

在正常的for循环中,它运行没有任何问题.但在parfor并行计算中,我收到的错误是使用切片数组时出现问题parfor.

parallel-processing matlab loops

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

Parallel.ForEach中的WebClient.DownloadFile()

这段代码工作正常:

Parallel.ForEach(photos, item =>
            {
                WebClient webClient = new WebClient();
                webClient.DownloadFile(item.src_big, "C:\\pic" + item.ID + ".jpg");
            });
Run Code Online (Sandbox Code Playgroud)

虽然此代码抛出"WebClient请求期间发生异常".:

foreach (Photo p in photos)
        {
            Task.Factory.StartNew(() =>
                {
                    WebClient webClient = new WebClient();
                    webClient.DownloadFile(p.src_big, "C:\\pic" + p.ID + ".jpg");
                });
        }
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

1)在第一个代码中,我使用多个WebClient对象进行下载.第二个代码也是如此,为什么我会得到异常呢?

2)我正在尝试这两个版本来确定什么是下载照片的最快方式,在我的情况下从Facebook.我想知道是否有另一种方法更快,也许WebRequest.Create()?

c# parallel-processing webclient

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

并行运行100个线程,如果之前的某些线程已完成,则运行缺少的线程

例如,我需要始终运行100个线程来执行某些操作.我有一个类调用ThreadsWorker,它会查找线程计数并运行缺少的线程,如果前面的一些完成.所以,这是描述情况的表:

1 second: 100 threads
2 second: 92 threads (ThreadsWorker generates new 8 threads)
3 second: 100 theads
4 second: 72 threads (ThreadsWorker generates 28 threads)
Run Code Online (Sandbox Code Playgroud)

等等.我的线程是匿名调用(只是new Thread(new Runnable(...)).start())因为我不知道如何正确地将它们保存到Threads[]数组中,因为虽然ThreadsWorker会保存threads[i] = new Threads(),但某些线程可能会完成,然后会与数组索引发生冲突.

由于匿名调用,我threadsCount现在使用变量并在线程体中开始递增它,并在线程体端减少(使用synchronized).好的,它工作正常,我的唯一方法是使用while()循环来检查threadsCount == 0进度是否完成.

我认为这是C风格但不是Java风格:)所以,你能帮我用Java方式做吗?

java parallel-processing multithreading

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

超标量和VLIW

我想问一些与ILP有关的问题.

  • 超标量处理器是标量和矢量处理器的混合体.那么我可以说矢量处理器的架构遵循超标量吗?

  • 同时处理多个指令并不能使架构超标量化,因为流水线,多处理器或多核架构也实现了这一点.这意味着什么?

  • 我读过'超标量CPU架构在单个处理器中实现了一种称为指令级并行的并行形式',超标量不能使用多个处理器?任何人都可以提供我使用超标量的例子吗?

  • VLIW,我已经完成了本文第9页的图4.它显示了一个通用的VLIW实现,没有复杂的重排序缓冲区和解码和调度逻辑.没有解码的术语令我感到困惑.

此致,anas anjaria

parallel-processing cross-platform cpu-architecture vliw

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

垂直和水平并行

最近在并行域工作我知道有两个术语"垂直并行"和"水平并行".有些人认为openmp(共享内存并行性)是垂直的,而mpi(分布式内存并行性)则是水平并行性.为什么这些术语被称为?我没理由.这样称呼它们只是术语吗?

parallel-processing mpi openmp

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