Tag: 并行处理

Parallel.ForEach()与foreach(IEnumerable <T> .AsParallel())

呃,我试图find使用reflection器BCL这两个方法,但无法find它们。 这两个片段有什么区别? A: IEnumerable<string> items = … Parallel.ForEach(items, item => { … }); B: IEnumerable<string> items = … foreach (var item in items.AsParallel()) { … } 使用另一个有不同的后果吗? (假设我在两个例子的括号内都是线程安全的。)

多核编程在Haskell中的地位如何?

多核编程在Haskell中的地位如何? 现在有哪些项目,工具和库可用? 有什么经验报告?

在Parallel.ForEach中是否有等价的“继续”?

我正在将一些代码移植到Parallel.ForEach并在continue执行代码时遇到错误。 有什么等价的我可以用在一个Parallel.ForEachfunction相当于continue在foreach循环? Parallel.ForEach(items, parallelOptions, item => { if (!isTrue) continue; });

并行sortingalgorithm

我正在寻找一个在C#中的并行(multithreading)sortingalgorithm的简单实现,它可以在List<T>或Arrays上运行,并可能使用并行扩展,但这部分并不是必须的。 编辑:弗兰克克鲁格提供了一个很好的答案,但是我希望将该示例转换为一个不使用LINQ。 另请注意, Parallel.Do()似乎已被Parallel.Invoke()取代。 谢谢。

部分和任务openmp之间的区别

OpenMP之间有什么区别: #pragma omp parallel sections { #pragma omp section { fct1(); } #pragma omp section { fct2(); } } 和: #pragma omp parallel { #pragma omp single { #pragma omp task fct1(); #pragma omp task fct2(); } } 我不确定第二个代码是否正确

在Python中的并行处理

什么是一个简单的代码,并行处理在Python 2.7中? 我在网上find的所有例子都是错综复杂的,包括不必要的代码。 我将如何做一个简单的蛮力整数因子程序,我可以在每个核心(4)因子1整数? 我真正的程序可能只需要2个核心,并且需要共享信息。 我知道parallel-python和其他库存在,但我想保持使用的库的数量最less,因此我想使用thread和/或多multiprocessing库,因为他们来与python

为什么我应该更喜欢单个“等待Task.WhenAll”多个等待?

如果我不关心任务完成的顺序,只需要它们全部完成,我还应该使用await Task.WhenAll而不是多个await ? 例如DoWord2是DoWord2的首选方法(为什么?): using System; using System.Threading.Tasks; namespace ConsoleApp { class Program { static async Task<string> DoTaskAsync(string name, int timeout) { var start = DateTime.Now; Console.WriteLine("Enter {0}, {1}", name, timeout); await Task.Delay(timeout); Console.WriteLine("Exit {0}, {1}", name, (DateTime.Now – start).TotalMilliseconds); return name; } static async Task DoWork1() { var t1 = DoTaskAsync("t1.1", 3000); var t2 […]

并行化后,pandasgroupby

我已经使用了rosetta.parallel.pandas_easy并行化后应用,例如: from rosetta.parallel.pandas_easy import groupby_to_series_to_frame df = pd.DataFrame({'a': [6, 2, 2], 'b': [4, 5, 6]},index= ['g1', 'g1', 'g2']) groupby_to_series_to_frame(df, np.mean, n_jobs=8, use_apply=True, by=df.index) 然而,有没有人想出了如何并行化返回数据框的函数呢? 正如预期的那样,此代码不能正常工作。 def tmpFunc(df): df['c'] = df.a + df.b return df df.groupby(df.index).apply(tmpFunc) groupby_to_series_to_frame(df, tmpFunc, n_jobs=1, use_apply=True, by=df.index)

新的C#5.0“asynchronous”和“等待”关键字使用多个核心吗?

添加到C#5.0语言中的两个新关键字是asynchronous和等待的 ,这两个关键字可以asynchronous运行C#方法,而不会阻塞调用线程。 我的问题是,这些方法是否真的利用了多个内核并行运行,或者async方法在调用者的同一个线程核心中运行?

在程序上使用openMP后性能没有提高,可以优化顺序运行

我尽可能地优化了顺序运行的function。 当我使用openMP时,我看不到性能上的好处。 我在1核心机器和8核心机器上试过我的程序,性能是一样的。 随着年份设置为20,我有 1个核心:1秒 8核心:1秒 随着年份设置为25我有 1核心:40秒 8核心:40秒 1核心机器:我的笔记本电脑的英特尔酷睿2双核1.8 GHz,Ubuntu的Linux 8核心机器:3.25 GHz,Ubuntu的Linux 我的程序列举了二叉树的所有可能path,并在每个path上做了一些工作。 所以我的循环大小呈指数增长,我预计openMP线程的占用空间为零。 在我的循环中,我只做了一个variables的减less。 其他所有variables都是只读的。 我只使用我写的函数,而且我认为它们是线程安全的。 我也在我的程序上运行Valgrind cachegrind。 我不完全理解输出,但似乎没有caching缺失或错误的共享。 我编译 gcc -O3 -g3 -Wall -c -fmessage-length=0 -lm -fopenmp -ffast-math 我的完整程序如下。 对不起,张贴了很多代码。 我不熟悉openMP和C,在不失去主要任务的情况下,我不能恢复我的代码。 当我使用openMP时,如何提高性能? 他们是一些编译器标志或C技巧,将使程序运行速度更快? test.c的 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <omp.h> #include "test.h" int main(){ printf("starting\n"); int year=20; int tradingdate0=1; globalinit(year,tradingdate0); […]