草庐IT

haskell-mpi

全部标签

c++ - 什么容器真正模仿了 Haskell 中的 std::vector?

问题我正在寻找一个容器,用于保存n-1问题的部分结果,以便计算第n个问题。这意味着容器的大小最终将始终为n.容器的每个元素i取决于至少2到4个先前的结果。容器必须提供:在开始或结束时插入恒定时间(两者之一,不一定同时)中间的恒定时间索引或者(给定一个O(n)初始化):恒定时间单个元素编辑中间的恒定时间索引什么是std::vector为什么它是相关的对于那些不懂C++的人来说,std::vector是一个动态大小的数组。它非常适合这个问题,因为它能够:在施工时预留空间在中间提供恒定时间索引在末尾提供恒定时间插入(保留空间)因此,这个问题在O(n)复杂度中是可以解决的,在C++中。为什么D

c++ - 什么容器真正模仿了 Haskell 中的 std::vector?

问题我正在寻找一个容器,用于保存n-1问题的部分结果,以便计算第n个问题。这意味着容器的大小最终将始终为n.容器的每个元素i取决于至少2到4个先前的结果。容器必须提供:在开始或结束时插入恒定时间(两者之一,不一定同时)中间的恒定时间索引或者(给定一个O(n)初始化):恒定时间单个元素编辑中间的恒定时间索引什么是std::vector为什么它是相关的对于那些不懂C++的人来说,std::vector是一个动态大小的数组。它非常适合这个问题,因为它能够:在施工时预留空间在中间提供恒定时间索引在末尾提供恒定时间插入(保留空间)因此,这个问题在O(n)复杂度中是可以解决的,在C++中。为什么D

c++ - 如何正确链接用 Haskell 编写的目标文件?

大致关注thistutorial,我设法让这个玩具项目工作。它从C++程序调用Haskell函数。Foo.hs{-#LANGUAGEForeignFunctionInterface#-}moduleFoowhereforeignexportccallfoo::Int->Int->IOIntfoo::Int->Int->IOIntfoonm=return.sum$fn++fmf::Int->[Int]f0=[]fn=n:f(n-1)bar.c++#include"HsFFI.h"#includeFOO//Haskellmodule(pathdefinedinbuildscript)#in

c++ - 如何正确链接用 Haskell 编写的目标文件?

大致关注thistutorial,我设法让这个玩具项目工作。它从C++程序调用Haskell函数。Foo.hs{-#LANGUAGEForeignFunctionInterface#-}moduleFoowhereforeignexportccallfoo::Int->Int->IOIntfoo::Int->Int->IOIntfoonm=return.sum$fn++fmf::Int->[Int]f0=[]fn=n:f(n-1)bar.c++#include"HsFFI.h"#includeFOO//Haskellmodule(pathdefinedinbuildscript)#in

c++ - Haskell 与 C++ 中的简单 π(x)

我正在学习Haskell。我的兴趣是将它用于个人计算机实验。现在,我正在尝试看看Haskell的速度有多快。许多人声称与C(++)相当,如果这是真的,我会非常高兴(我应该注意,无论它是否快速,我都会使用Haskell,但快速仍然是一件好事)。我的测试程序用一个非常简单的算法实现了π(x):素数将结果加1。素数在1和√x之间没有整数除数。这不是一场算法大战,这纯粹是为了编译器性能。Haskell在我的计算机上似乎慢了大约6倍,这很好(仍然比纯Python快100倍),但这可能只是因为我是Haskell新手。现在,我的问题是:如何在不改变算法的情况下优化Haskell实现?Haskell的

c++ - Haskell 与 C++ 中的简单 π(x)

我正在学习Haskell。我的兴趣是将它用于个人计算机实验。现在,我正在尝试看看Haskell的速度有多快。许多人声称与C(++)相当,如果这是真的,我会非常高兴(我应该注意,无论它是否快速,我都会使用Haskell,但快速仍然是一件好事)。我的测试程序用一个非常简单的算法实现了π(x):素数将结果加1。素数在1和√x之间没有整数除数。这不是一场算法大战,这纯粹是为了编译器性能。Haskell在我的计算机上似乎慢了大约6倍,这很好(仍然比纯Python快100倍),但这可能只是因为我是Haskell新手。现在,我的问题是:如何在不改变算法的情况下优化Haskell实现?Haskell的

c++ - 使用使用 std::async 创建的线程发送 MPI 的线程安全

根据thiswebsite,MPI::COMM_WORLD.Send(...)的用法是线程安全的。但是,在我的应用程序中,我经常(并非总是)遇到死锁或出现段错误。附上MPI::COMM_WORLD的每个电话带有mutex.lock()的方法和mutex.unlock()始终如一地消除死锁和段错误。这就是我创建线程的方式:constautocommunicator=std::make_shared();std::vector>handles;for(size_ti=0;iCommunicator是一个具有std::mutex的类成员并独占调用诸如MPI::COMM_WORLD.Send(

c++ - 使用使用 std::async 创建的线程发送 MPI 的线程安全

根据thiswebsite,MPI::COMM_WORLD.Send(...)的用法是线程安全的。但是,在我的应用程序中,我经常(并非总是)遇到死锁或出现段错误。附上MPI::COMM_WORLD的每个电话带有mutex.lock()的方法和mutex.unlock()始终如一地消除死锁和段错误。这就是我创建线程的方式:constautocommunicator=std::make_shared();std::vector>handles;for(size_ti=0;iCommunicator是一个具有std::mutex的类成员并独占调用诸如MPI::COMM_WORLD.Send(

c++ - 在 c++11 中实现 Haskell 的 Maybe Monad

我正在尝试使用C++11中的lambda函数和模板来实现来自Haskell的Maybemonad。这是我目前所拥有的#include#includeusingnamespacestd;templatestructMaybe{T1data;boolvalid;};templateMaybeoperator>>=(Maybet,std::function(T1)>&f){Maybereturn_value;if(t.valid==false){return_value.valid=false;returnreturn_value;}else{returnf(t.data);}}intmai

c++ - 在 c++11 中实现 Haskell 的 Maybe Monad

我正在尝试使用C++11中的lambda函数和模板来实现来自Haskell的Maybemonad。这是我目前所拥有的#include#includeusingnamespacestd;templatestructMaybe{T1data;boolvalid;};templateMaybeoperator>>=(Maybet,std::function(T1)>&f){Maybereturn_value;if(t.valid==false){return_value.valid=false;returnreturn_value;}else{returnf(t.data);}}intmai