标签: parallel-processing

如何在Matlab中利用并行处理

我正在研究基于时间序列的计算.每次迭代计算都是独立的.有人可以在Matlab中使用并行处理分享一些提示/在线引子吗?如何在实际代码中指定?

parallel-processing matlab

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

推荐用于C#4.0的多线程/并行计算书籍

我想开始阅读C#/ .Net 4.0中的多线程和并行计算.

我理解多线程的基础知识,所以我正在寻找的东西不仅仅是基础知识.我也在寻找与.Net 4.0中的变化最新的东西.

你能推荐一本书吗?

非常感谢.

.net c# parallel-processing multithreading

9
推荐指数
2
解决办法
3423
查看次数

同时执行多个shell脚本

我想做以下事情:

  • 同时执行多个shell脚本(此处为2个脚本).

  • 等到两个脚本完成

  • 转储每个脚本的返回值

但是,main.sh不能按预期工作.


main.sh

#!/bin/bash

ret1=`./a.sh` &
ret2=`./b.sh`

if [ "${ret1}"="" -a "${ret2}"="" ]; then
   sleep 1
else
   echo ${ret1},${ret2}
end
Run Code Online (Sandbox Code Playgroud)

#!/bin/bash
sleep 10
echo 1
Run Code Online (Sandbox Code Playgroud)

b.sh

#!/bin/bash
sleep 5
echo 2
Run Code Online (Sandbox Code Playgroud)

parallel-processing bash shell

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

如何使用F#编程FPGA

我通常使用F#编写数值算法.F#中的函数编程构造有助于以非常自然的方式表达算法.我经常最终得到一个简洁易懂的实现,并且如果有并行机会可能能够快速并行化.

我想知道有一种方法可以将F#程序编译成FPGA.通过这种方式,我仍然可以使用F#来避免FPGA编程中的样板代码,并在FPGA中使用高性能计算.这可能吗?如果是的话,你能为我提供一些提示吗?

parallel-processing f# fpga

9
推荐指数
1
解决办法
1049
查看次数

Mathematica中的异步评估

有时当我在Mathematica中编写实验代码时,我很担心是否应该对它进行评估,因为它可能最终导致我的系统陷入困境.

作为一个人为的例子,如果您尝试在64位计算机上运行以下代码片段,它很可能会导致系统在耗尽所有内存后完全停止.

junk = Table[{x, x}, {10^9}]; (* nom nom nom memory. Please don't run this. *)
Run Code Online (Sandbox Code Playgroud)

当然,你可以抛出MemoryConstrained它并希望最好,但有时你不希望它阻止任何进一步的输入.为此,我认为实现中间立场的最佳方式是在单独的内核中执行评估.

这很容易做到:

ClearAll[GetAvailableKernel];
GetAvailableKernel[] := Block[{i, kernels},
  kernels = Kernels[];
  If[Length@kernels !=  0,
   For[i = 1, i <= Length@kernels, i++,
    If[kernels[[i, 1, 2]] > 0, Return@kernels[[i]]]
    ]
   ];
  LaunchKernels[1]]

ClearAll[SafeEvaluate];
SetAttributes[SafeEvaluate, HoldFirst];
Options[SafeEvaluate] = {"EvaluationKernel" -> Null, 
   "ConstrainMemory" -> True, "MaxMemory" -> 2 1024^3};

SafeEvaluate[expr_, OptionsPattern[]] := Block[{evalkernel, result},
  If[OptionValue["EvaluationKernel"] != Null,
   evalkernel = OptionValue["EvaluationKernel"],
   evalkernel = GetAvailableKernel[]
   ];

  result  = …
Run Code Online (Sandbox Code Playgroud)

parallel-processing asynchronous wolfram-mathematica

9
推荐指数
1
解决办法
868
查看次数

Haskell中的并行图形处理

图形是那些"令人尴尬的并行"问题之一.Haskell应该真的非常适合并行处理.所以我的问题是:

  1. 在渲染问题上抛出尽可能多的CPU内核的最佳方法是什么?

  2. 是否有可能让GPU完成任务?

通过"渲染问题",我指的是诸如以下问题:

  • 每个像素的颜色都是其坐标的纯函数.

  • 我们从现有的"输入"图像开始,并且每个"输出"像素的颜色是相应输入像素的纯函数,或者可能是这种像素的小邻域.


关于#1:这看起来很简单,但事实并非如此.有几种可能的数据结构选择来存储计算出的像素(这会影响您如何访问它,以及您可以轻松地将结果转储到磁盘或屏幕上).有多种方法可以在多个核上执行.等等.

在我看来,Data Parallel Haskell将是这类事物的理想选择.但是,上次我检查时,DPH还没有工作.就是这样.即使假设它确实有效,你可能会创建一个并行数组来保存像素,然后你必须复制像素以在屏幕上显示它们或将它们写入磁盘.

我会尝试引发每一个像素,但这可能太精细了.我可以将像素作为列表并使用其中一个并行列表策略.或者我可以使它成为一个(未装箱?)不可变数组并编写一些手动代码来启动火花.或者我可以使用显式线程和可变数组.或者我可以拥有一堆工作线程,它们通过通道将像素值传输到主线程,将结果放到正确的位置.要么...

总之,这里有很多可能性,我不确定哪个是最好的.


关于#2:显然,这类问题是GPU首先存在的全部原因.显然,GPU非常适合攻击这些类型的问题.我的问题是"从哈斯克尔那里做这件事难吗?"

parallel-processing graphics haskell

9
推荐指数
2
解决办法
2300
查看次数

如何编程对数?

他们是刚刚使用蛮力方法想出来的还是有算法呢?

algorithm math parallel-processing logarithm cpu-speed

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

使用C++,libpng和OpenMP并行化PNG文件创建

我目前正在尝试在C++中实现基于libpng的PNG编码器,该编码器使用OpenMP来加速压缩过程.该工具已经能够从各种图像格式生成PNG文件.我将完整的源代码上传到pastebin.com,以便您可以看到我到目前为止所做的工作:http://pastebin.com/8wiFzcgV

到现在为止还挺好!现在,我的问题是找到一种方法如何并行化包含压缩图像数据的IDAT块的生成.通常,libpng函数png_write_row在for循环中调用,其中包含指向结构的指针,该结构包含有关PNG文件的所有信息以及包含单个图像行的像素数据的行指针.

(Pastebin文件中的第114-117行)

//Loop through image
for (i = 0, rp = info_ptr->row_pointers; i < png_ptr->height; i++, rp++) {
    png_write_row(png_ptr, *rp);
}
Run Code Online (Sandbox Code Playgroud)

然后,Libpng压缩一行接一行,并用压缩数据填充内部缓冲区.一旦缓冲区已满,压缩数据就会在IDAT块中刷新到映像文件.

我的方法是将图像分成多个部分,让一个线程压缩第1行到第10行,另一个线程压缩11到20,依此类推.但是由于libpng正在使用内部缓冲区,它并不像我想象的那么容易:)我不得不让libpng将压缩数据写入每个线程的单独缓冲区.之后我需要一种方法以正确的顺序连接缓冲区,这样我就可以将它们一起写入输出图像文件.

那么,是否有人知道我如何使用OpenMP和一些调整到libpng?非常感谢你!

c++ parallel-processing png openmp libpng

9
推荐指数
2
解决办法
3314
查看次数

MPI从文本文件中读取

嗨,大家好我正在学习用MPI编程,我遇到了这个问题.假设我有一个包含100,000行/行的.txt文件,如何将它们分块以便由4个处理器处理?即我想让处理器0负责0-25000行的处理,处理器1处理25001-50000等处理.我做了一些搜索,确实遇到了MPI_File_seek,但我不确定它是否可以在.txt上运行并且之后支持fscanf.

io parallel-processing mpi

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

Gnu Parallel:嵌套并行

是否可以在脚本的多次运行中调用gnu parallel,而这些脚本又由gnu parallel生成?

我有一个运行100次连续迭代的python脚本,并且在每次迭代中的某个地方,并行计算4个值(使用gnu parallel).现在我想同时使用gnu parallel生成多个这样的脚本.这可能吗?gnu parallel会不会好好利用可用内核?

例如,如果在内部循环中,4个值中有2个已完成且2个正在运行,那么在计算所有4个值之前,单个脚本无法继续下一次迭代.这两个免费核心是否会用于自动计算不同脚本运行的结果?如何指定可用的核心总数?在内部呼叫并行或外部呼叫?

这个问题表明可以将调用嵌套到并行中,但是当我从脚本内部调用嵌套并行时,我不确定这是否会发生变化.

PS:Thrashing不是一个问题,我可以使用大型集群中的大量核心.

PS2:gnu-parallel是一款非常棒的工具......谢谢!:)

parallel-processing gnu-parallel

9
推荐指数
1
解决办法
1538
查看次数