std::accumulate我认为C++ 标准中没有并行版本是令人困惑的。在我看来,并行实现它是微不足道的,例如基于 OpenMP 或 SIMD 指令。std::reduce有人对为什么标准委员会选择引入but not的并行版本有一个很好的解释吗std::accumulate?是因为迭代器类型不同吗?
我必须在集群中实现MPI系统.如果这里的任何人有MPI(MPICH/OpenMPI)的任何经验,我想知道哪个更好,以及如何在x86_64盒的集群上提升性能.
我正在寻找C#中的并行化(多线程)排序算法的简单实现,它可以在List<T>Arrays上运行,也可能使用Parallel Extensions,但这部分并不是绝对必要的.
编辑:Frank Krueger提供了一个很好的答案,但我希望将该示例转换为不使用LINQ的示例.还要注意,Parallel.Do()似乎已被取代了Parallel.Invoke().
谢谢.
我有兴趣优化一些大文件的散列(优化挂钟时间).I/O已经进行了足够的优化,I/O设备(本地SSD)仅以大约25%的容量进行分流,而其中一个CPU内核完全超出.
我有更多核心可用,将来可能会有更多核心.到目前为止,如果我碰巧需要同一个文件的多个哈希值,我只能使用更多内核,同时说MD5和SHA256.我可以使用相同的I/O流来提供两个或更多哈希算法,并且我可以免费获得更快的算法(就挂钟时间而言).据我了解大多数哈希算法,每个新位都会改变整个结果,而且并行地具有挑战性/不可能性.
是否有任何主流哈希算法可并行化?
是否存在可并行化的非主流哈希(并且至少具有可用的示例实现)?
由于未来的CPU将趋向于更多核心并且时钟速度趋于平稳,有没有办法提高文件散列的性能?(除了液氮冷却超频?)或者它本身是不可并行化的?
你如何为并行编程编写伪代码?特别是,您如何区分本地和共享变量?您如何表示分散,收集,减少,广播和点对点通信等操作?那有什么标准吗?
我是python面向对象的新手,我将现有的应用程序重写为面向对象的版本,因为现在开发人员正在增加,我的代码变得无法维护.
通常我使用多处理队列,但我从这个例子http://www.doughellmann.com/PyMOTW/multiprocessing/basics.html发现我可以继承,multiprocessing.Process所以我认为这是一个好主意,我写了一个类来测试这样:
码:
from multiprocessing import Process
class Processor(Process):
def return_name(self):
return "Process %s" % self.name
def run(self):
return self.return_name()
processes = []
if __name__ == "__main__":
for i in range(0,5):
p=Processor()
processes.append(p)
p.start()
for p in processes:
p.join()
Run Code Online (Sandbox Code Playgroud)
但是我无法取回值,我怎样才能以这种方式使用队列?
编辑:我想获得返回值并思考放在哪里Queues().
我想在Common Lisp中并行实现我的粒子滤波算法.粒子过滤和采样可以并行化,我想为我的4核机器做这个.我的问题是并行编程是否在CL中是可行的,如果可行,是否有任何良好的读数,关于在CL中开始并行计算的教程.
那里的任何人都可以帮助我理解线性化是什么吗?我需要一个简单易懂的解释.我正在阅读Maruice Herilihy和Nir Shavit 的"多处理器编程艺术",并试图理解第3章"并发对象".
我知道一个方法是可线性化的,如果它有一个点,它似乎从其他线程的角度瞬间"生效".这是有道理的,但也有人说,线性化实际上是执行历史的一个属性.执行历史是可线性化的,为什么我关心它,以及它与可线性化的方法或对象有什么关系?
谢谢!
parallel-processing concurrency multithreading thread-safety
我试图在几个核心上运行代码(我尝试了两个snow和parallel包).我有
cl <- makeCluster(2)
y <- 1:10
sapply(1:5, function(x) x + y) # Works
parSapply(cl, 1:5, function(x) x + y)
Run Code Online (Sandbox Code Playgroud)
最后一行返回错误:
Error in checkForRemoteErrors(val) :
2 nodes produced errors; first error: object 'y' not found
Run Code Online (Sandbox Code Playgroud)
显然parSapply没有y在全球环境中找到.有办法解决这个问题吗?谢谢.
我们的Django项目变得越来越大.我们有数百个应用程序,并使用大量的第三方python包,其中许多需要C编译.当我们需要为主要版本创建新的虚拟环境时,我们的部署需要很长时间.话虽如此,我希望从Pip开始加快速度.有没有人知道将会并行安装软件包的Pip的分支?
到目前为止我采取的步骤:
我找了一个项目,但这个项目没那么成功.我确实找到了这个Github Gist:https://gist.github.com/1971720但结果几乎与我们的单线程朋友完全相同.
然后我在Github上找到了Pip项目并开始查看分支网络,看看我是否能找到任何提及我正在尝试做的提交.那里很乱.如果必须的话,我会把它分叉并尝试自己并行化,我只是想避免花时间做这件事.
我在ep.io上看到了DjangoCon 2011上的一个演讲,解释了他们的部署内容,他们提到并行化pip,运送.so文件而不是编译C和镜像Pypi,但他们没有涉及他们是如何做到的或者他们使用的是什么.
concurrency ×3
python ×2
.net ×1
accumulate ×1
c# ×1
c++ ×1
c++17 ×1
checksum ×1
common-lisp ×1
hash ×1
lisp ×1
md5 ×1
mpi ×1
oop ×1
pip ×1
pseudocode ×1
r ×1
sha1 ×1
sorting ×1
std ×1