草庐IT

haskell-mpi

全部标签

c++ - 为什么多态性在haskell(GHC)中如此昂贵?

我问这个问题是引用this所以问题。DonStewart接受的答案:第一行说“您的代码是高度多态的,将所有浮点变量更改为Double..”,它提供了4倍的性能提升。我对在Haskell中进行矩阵计算很感兴趣,我应该养成编写高度单态代码的习惯吗?但是有些语言很好地利用了临时多态性来生成快速代码,为什么GHC不会或不能?(阅读C++或D)为什么我们不能为Haskell提供blitz++或eigen之类的东西?我不明白GHC中的类型类和(临时)多态性是如何工作的。 最佳答案 对于多态代码,通常需要在代码大小和代码速度之间进行权衡。要么为要

c++ - 共享内存、MPI 和排队系统

我的unix/windowsC++应用程序已经使用MPI进行了并行化:作业被拆分到N个cpus中,每个block并行执行,非常高效,非常好的速度扩展,作业做得很好。但有些数据在每个流程中重复出现,并且由于技术原因,这些数据不能轻易地通过MPI进行拆分(...)。例如:5Gb静态数据,为每个进程加载完全相同的数据可以在MPI中分布的4Gb数据,使用的CPU越多,每个CPU的RAM越小。在4CPU作业中,这意味着至少需要20Gb的RAM负载,大部分内存都“浪费”了,这太糟糕了。我正在考虑使用共享内存来减少整体负载,“静态”block每台计算机只会加载一次。所以,主要问题是:是否有任何标准的

c++ - 通过 MPI 发送和接收二维数组

我要解决的问题如下:我在大型二维矩阵中计算的C++串行代码。为了优化这个过程,我希望分割这个大的2D矩阵并使用MPI在4个节点(比如)上运行。节点之间发生的唯一通信是在每个时间步结束时共享边值。每个节点与其邻居共享边数组数据A[i][j]。基于对MPI的阅读,我有以下方案要实现。if(myrank==0){for(i=0tox)for(y=0toy){C++CODEIMPLEMENTATION....MPI_SEND(A[x][0],A[x][1],A[x][2],Destination=1.....)MPI_RECEIVE(B[0][0],B[0][1]......Sender=1.

c# - Haskell类型类和C++模板类

是否可以使用C++(或C#)模板模拟Haskell的类型类功能?这样做有意义吗?我试图用C++编写Functor类,但我做不到。我尝试过这样的事情:#includeusingnamespacestd;//AfunctionclasstomaketypesmorereadabletemplateclassFunction{private:output(*ptrfunc)(input);public:Function(output(*ptr)(input)){ptrfunc=ptr;}outputcall(inputx){return(*ptrfunc)(x);}outputoperato

multithreading - Haskell 对 Node.js 的响应是什么?

我相信Erlang社区并不羡慕Node.js,因为它本身就提供非阻塞I/O,并且可以轻松地将部署扩展到多个处理器(Node.js中甚至没有内置的东西)。更多详情请访问http://journal.dedasys.com/2010/04/29/erlang-vs-node-js和Node.jsorErlangHaskell呢?Haskell能否提供Node.js的一些好处,即无需求助于多线程编程即可避免阻塞I/O的干净解决方案?Node.js有很多吸引人的地方事件:无线程操作,程序员只提供回调(如在Snap框架中)回调保证在单线程中运行:不可能出现竞争条件。漂亮而简单的UNIX友好API

Python、Ruby、Haskell——它们提供真正的多线程吗?

我们计划用任何一种非常高级的编程语言编写一个高度并发的应用程序。1)Python、Ruby或Haskell是否支持真正的多线程?2)如果程序包含线程,虚拟机是否会自动将工作分配给多个内核(如果主板上有超过1个CPU,则分配给物理CPU)?真正的多线程=多个独立的执行线程利用多个内核提供的资源(不仅仅是一个内核)。假多线程=线程模拟多线程环境,不依赖任何native操作系统功能。 最佳答案 1)DoPython,Ruby,orHaskellsupporttruemultithreading?这与语言无关。这是硬件的问题(如果机器只有1

php - 如何在 Haskell 或 Python 中翻译这个数学公式? (已用 PHP 翻译)

我正在尝试将数学公式转换为PHP代码。您可以在此处查看已接受答案中的公式:ApplyingaMathFormulainamoreelegantway(maybearecursivecallwoulddothetrick).我不是专业的编码员,所以我正在尽力翻译它,但我的技能有限,并且遇到了一些问题。让我们开始吧。有一个包含玩家堆栈的向量:我认为二维数组应该在这里完成工作。我会添加一个key来识别每个玩家。$array=array(1=>2000,3=>5000...);现在他想创建一个值矩阵,我进行了研究,发现了一个名为Math_Matrix的PEAR包,安装了它,但我想知道如何创建这

python - Project Euler - 这个haskell代码怎么这么快?

我正在处理项目euler中的问题401,我在python中编写了我的解决方案,但它需要几天时间才能运行,显然我需要加快速度或使用不同的方法。我在Haskell中遇到了一个看起来与我的python解决方案几乎相同但几乎瞬间完成的解决方案。有人能解释一下它怎么这么快吗?(我不是在寻求帮助或解决问题401)divisorsn=filter(\x->n`mod`x==0)[1..(n`div`2)]++[n]sigma2n=sum$map(\x->x*x)(divisorsn)sigma2bign=sum$map(sigma2)[1..n]lets2b=sigma2big10^15putStr

python - 安装 mpi4py 时出错

我正在尝试使用pipinstallmpi4py安装mpi4py,但出现以下错误:error:Cannotfind'mpi.h'header.Checkyourconfiguration!!!在我之前的同一份错误报告中,clang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)问题可能是什么?谢谢! 最佳答案 正如错误所说,缺少库。我通过安装libopenmpi-dev包解决了它sudoapt-getinstalllibopenmpi-dev然后使用pip安装m

python - 是否有与 Haskell 'let' 等效的 Python

是否有与Haskell'let'表达式等效的Python表达式,可以让我编写如下内容:list2=[let(name,size)=lookup(productId)in(barcode(productId),metric(size))forproductIdinlist]如果不是,那么最易读的替代方案是什么?添加以澄清let语法:x=let(name,size)=lookup(productId)in(barcode(productId),metric(size))等价于(name,size)=lookup(productId)x=(barcode(productId),metric(