天道酬勤,学无止境

parallel-processing

Hadoop MapReduce 与 MPI(与 Spark、Mahout 与 Mesos)-何时使用一个?(Hadoop MapReduce vs MPI (vs Spark vs Mahout vs Mesos) - When to use one over the other?)

问题 我是并行计算的新手,刚刚开始在 Amazon AWS 上尝试 MPI 和 Hadoop+MapReduce。 但我对何时使用一种而不是另一种感到困惑。 例如,我看到的一个常见的经验法则建议可以概括为…… 大数据、非迭代、容错 => MapReduce 速度、小数据、迭代、非 Mapper-Reducer 类型 => MPI 但是,我也看到了 MPI (MR-MPI) 上 MapReduce 的实现,它不提供容错,但在某些基准测试上似乎比 Hadoop 上的 MapReduce 更有效,并且似乎使用核外内存处理大数据。 相反,在具有分布式文件系统 (HDFS) 的新一代 Hadoop Yarn 上也有 MPI 实现 (MPICH2-YARN)。 此外,MPI 中似乎有一些条款(Scatter-Gather、Checkpoint-Restart、ULFM 和其他容错)模仿了 MapReduce 范式的几个特性。 Mahout、Mesos 和 Spark 如何适应所有这些? 在决定(或组合)Hadoop MapReduce、MPI、Mesos、Spark 和 Mahout 时,可以使用哪些标准? 回答1 这个决定可能有很好的技术标准,但我没有看到任何关于它的发布。 似乎存在文化鸿沟,据了解 MapReduce 用于筛选企业环境中的数据,而科学工作负载使用 MPI。

2021-06-21 10:34:05    分类:技术分享    hadoop   parallel-processing   mapreduce   mpi

How to use experimental parallel STL in C++1z?

I want to try parallel STL of C++17. However, I can't find experimental/execution_policy in libc++. How can I try this? I'm trying http://en.cppreference.com/w/cpp/experimental/reduce, which says I should include these files, but I cannot find execution_policy. #include <experimental/execution_policy> After I install libc++ (I followed http://libcxx.llvm.org/docs/BuildingLibcxx.html), I tried the following commands, but in vain. $ clang++-3.5 -std=c++1z test.cpp -lc++experimental test.cpp:5:10: fatal error: 'experimental/execution_policy' file not found #include <experimental/execution_policy>

2021-06-21 10:33:23    分类:问答    c++   parallel-processing   stl   c++17   libc++

Execute “git submodule foreach” in parallel

Is there any way to execute a git submodule foreach command in parallel, similarly of how the --jobs 8 parameter works with git submodule update? For example, one of the projects we work on involves almost 200 sub-components (submodules) and we heavily use the foreach command to operate on them. I'd like to speed them up. PS: In the case the solution involves a script, I work on Windows and, most of the time, using git-bash.

2021-06-21 10:28:49    分类:问答    git   parallel-processing   git-submodules

Go(lang) 中的地址空间是什么?(What is the address space in Go(lang)?)

问题 我试图了解 Go 中并发编程的基础知识。 几乎所有文章都使用术语“地址空间” ,例如: “所有 goroutine 共享相同的地址空间” 。 这是什么意思? 我试图从 wiki 了解以下主题,但没有成功: http://en.wikipedia.org/wiki/Virtual_memory http://en.wikipedia.org/wiki/Memory_segmentation http://en.wikipedia.org/wiki/Page_(computer_memory) ... 但是目前对我来说很难理解,因为我在内存管理和并发编程等领域的知识真的很差。 有许多未知词,如段、页面、相对/绝对地址、VAS 等。 有人可以向我解释问题的基本原理吗? 可能有一些有用的文章,我找不到。 回答1 团体规格: “ go ”语句作为一个独立的并发控制线程或goroutine在同一地址空间内启动函数调用的执行。 有人可以向我解释问题的基本原理吗? “地址空间”是一个通用术语,可应用于多种情况: 地址空间是通过组合足够多的唯一标识限定符来创建的,以使地址明确(在特定地址空间内) Dave Cheney 的演讲“让 Go 变得更快的五件事”说明了在同一进程地址空间中使用 goroutine 解决的主要问题:堆栈管理。 Dave's 限定了“地址空间”,首先谈到线程:

2021-06-21 09:56:49    分类:技术分享    memory   memory-management   concurrency   go   parallel-processing

并行 For 循环 - 添加到列表时的问题(Parallel For Loop - Problems when adding to a List)

问题 我遇到了一些涉及 Parallel for 循环和添加到列表的问题。 问题是,相同的代码可能在不同的时间产生不同的输出。 我在下面设置了一些测试代码。 在此代码中,我创建了一个包含 10,000 个 int 值的列表。 1/10 的值是 0,1/10 的值是 1,一直到 1/10 的值是 9。 设置此列表后,我设置了一个遍历列表的 Parallel for 循环。 如果当前数字为 0,我将向新列表添加一个值。 Parallel for 循环完成后,我输出列表的大小。 大小应始终为 1,000。 大多数时候,给出了正确的答案。 但是,我看到了 3 种可能的错误结果: 列表大小小于 1,000 发生 IndexOutOfRangeException @ doubleList.Add(0.0); 发生 ArgumentException @ doubleList.Add(0.0); 给出的 ArgumentException 的消息是: Destination array was not long enough. Check destIndex and length, and the array's lower bounds. Destination array was not long enough. Check destIndex and length, and the

2021-06-21 09:15:08    分类:技术分享    list   .net-4.0   c#-4.0   parallel-processing

F#在科学计算中的表现(F# performance in scientific computing)

问题 我很好奇 F# 性能与 C++ 性能相比如何? 我问了一个关于 Java 的类似问题,我得到的印象是 Java 不适合繁重的数字运算。 我已经读到 F# 应该具有更高的可扩展性和更高的性能,但是与 C++ 相比,这种实际性能如何? 关于当前实施的具体问题是: 它的浮点运算性能如何? 是否允许向量指令它对优化编译器有多友好? 它有多大的内存足迹? 它是否允许对内存局部性进行细粒度控制? 它是否具有分布式内存处理器的容量,例如 Cray? 它有哪些功能可能对涉及大量数字处理的计算科学感兴趣? 是否有实际的科学计算实现使用它? 谢谢 回答1 F# 以 .NET CLR 允许的速度执行浮点计算。 与 C# 或其他 .NET 语言没有太大区别。 F# 本身不允许向量指令,但如果您的 CLR 有这些 API,F# 使用它应该不会有问题。 参见例如 Mono。 据我所知,目前只有一个 F# 编译器,所以也许问题应该是“F# 编译器在优化方面有多好?”。 答案在任何情况下都是“可能与 C# 编译器一样好,目前可能会差一点”。 请注意,F# 与例如 C# 的不同之处在于它支持在编译时内联,这可能允许更高效的代码依赖于泛型。 F# 程序的内存占用与其他 .NET 语言的类似。 您对分配和垃圾收集的控制量与其他 .NET 语言相同。 我不知道对分布式内存的支持。 F#

2021-06-21 09:14:33    分类:技术分享    c++   performance   f#   parallel-processing   scientific-computing

Obtaining exit status values from GNU parallel

The Perl wrapper below executes commands in parallel, saving STDOUT and STDERR to /tmp files: open(A,"|parallel"); for $i ("date", "ls", "pwd", "factor 17") { print A "$i 1> '/tmp/$i.out' 2> '/tmp/$i.err'\n"; } close(A); How do I obtain the exit status values from the individual commands?

2021-06-15 18:03:37    分类:问答    perl   parallel-processing   exit-code

R Parallel Processing with Xeon Phi, minimal code changes?

Looking at buying a couple Xeon Phi 5110P, but trying to estimate how much code I have to change or other software needed. Currently I make good use of R on a multi-core Windows machine (24 cores) by using the foreach package, passing it other packages forecast, glmnet, etc. to do my parallel processing. Having a Xeon Phi I understand I would want to compile R https://software.intel.com/en-us/articles/running-r-with-support-for-intel-xeon-phi-coprocessors And I understand this could be done with a trail version of Parallel Studio XE. Then do I then need to edit R's Makeconf file, adding the C

2021-06-15 17:36:43    分类:问答    r   foreach   parallel-processing   xeon-phi

How do I use fmt.Scanf in Go

I seem to be having a queer problem while getting user input within a for loop in go. Here is my code package main import "fmt" func main() { var num int for i := 0; i < 10; i++ { fmt.Printf("Debug: i : %d ", i) fmt.Scanf("%d", &num) fmt.Println(num) } } What happens when I run this code is this : Debug: i : 0 Enter next number 1 1 Debug: i : 1 Enter next number 1 Debug: i : 2 Enter next number 2 2 Debug: i : 3 Enter next number 2 Debug: i : 4 Enter next number 3 3 Debug: i : 5 Enter next number 3 Debug: i : 6 Enter next number 4 4 Debug: i : 7 Enter next number 4 Debug: i : 8 Enter next

2021-06-15 15:37:46    分类:问答    parallel-processing   go

Is it possible to do parallel reads on one h5py file using multiprocessing?

I am trying to speed up the process of reading chunks (load them into RAM memory) out of a h5py dataset file. Right now I try to do this via the multiprocessing library. pool = mp.Pool(NUM_PROCESSES) gen = pool.imap(loader, indices) Where the loader function is something like this: def loader(indices): with h5py.File("location", 'r') as dataset: x = dataset["name"][indices] This actually sometimes works (meaning that the expected loading time is divided by the number of processes and thus parallelized). However, most of the time it doesn't and the loading time just stays as high as it was when

2021-06-15 14:48:06    分类:问答    python   parallel-processing   h5py