为什么必须同时使用编译器标志和运行时标志才能在 Haskell 中获得多核支持?

2024-03-19

Haskell wiki 显示您需要同时设置编译标志和运行时标志才能获得多核支持。为什么使用该库不足以在编译时获得正确的行为?为什么运行时可执行文件无法检测到它是使用 -threaded 编译的并使用系统上的所有内核,除非另有指定?我认为默认打开这些会更好。然后可能会有关闭或修改这些功能的标志。

http://www.haskell.org/haskellwiki/GHC/Concurrency#Multicore_GHC http://www.haskell.org/haskellwiki/GHC/Concurrency#Multicore_GHC says:

  • 使用 -threaded 开关编译您的程序。
  • Run the program with +RTS -N2 to use 2 threads, for example. You should use a -N value equal to the number of CPU cores on your machine (not including Hyper-threading cores).


    必须在编译时和运行时再次设置标志似乎有点麻烦。这些标志是为 GHC 添加并发性所做努力的残余吗?


  • 当您开发程序时,额外的+RTS ...应该不是什么大问题(尽管我承认当我第一次拿起 Haskell 时这让我感到很奇怪)。对于最终(已交付)的二进制文件,您可以将其与静态 RTS 选项链接(GHC手册 http://haskell.org/ghc/docs/6.12.2/html/users_guide/runtime-control.html#rts-hooks)通过提供包含以下内容的 C 文件char *ghc_rts_opts = "-N";.

    编辑:更新 GHC 7.x 的这个问题,现在有一种在编译时指定 RTS 选项的方法:

    ghc -threaded -rtsopts -with-rtsopts=-N
    

    1) 使用线程运行时系统 2) 启用 RTS 选项 3) 设置 RTS 选项以使用与可用内核一样多的线程(使用-Nx where x是手动控制操作系统线程数的数字)。

    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

    为什么必须同时使用编译器标志和运行时标志才能在 Haskell 中获得多核支持? 的相关文章

    • 没有公平性的DelayQueue有问题吗?

      在 Java 7 中 DelayQueue 的实现使用没有公平策略的 ReentrantLock 从长远来看 这是一个问题吗 线程会因此而饿死吗 Thanks 如果您考虑ScheduledThreadPoolExecutor 或任何其他生产
    • 为什么 Parsec 的 sepBy 停止并且不解析所有元素?

      我正在尝试解析一些逗号分隔的字符串 该字符串可能包含也可能不包含具有图像尺寸的字符串 例如 hello world 300x300 good bye world 我写了下面的小程序 import Text Parsec import qua
    • 在 Haskell 中计算移动平均线

      我正在学习 Haskell 所以我尝试实现移动平均函数 这是我的代码 mAverage Int gt Int gt Float mAverage x a fromIntegral k fromIntegral x k lt rawAvera
    • MSBuild 未使用所有核心进行构建

      我有一个使用 Visual Studios 2008 配置的项目 当我打开 IDE 并点击构建时 系统上的所有核心都用于构建该项目 但是 当我尝试从命令行构建时 仅使用 1 个核心 这是我正在运行的命令 C Windows Microsof
    • 如何在RcppParallel中调用用户定义的函数?

      受到文章的启发http gallery rcpp org articles parallel distance matrix http gallery rcpp org articles parallel distance matrix 我
    • 在 Haskell 中增长数组

      我想在 Haskell 中实现以下 命令式 算法 给定一个序列对 e0 s0 e1 s1 e2 s2 en sn 其中 e 和 s 部分不一定是自然数不同的是 在每个时间步都会随机选择该序列的一个元素 例如 ei si 并根据 ei si
    • 在运行的 Swing 应用程序中替换 AWT EventQueue 的安全方法

      我维护的 Swing 应用程序中的各种零星问题似乎是由它使用自己的自定义版本替换默认 AWT 事件队列的方式引起的Toolkit getDefaultToolkit getSystemEventQueue push new AEventQu
    • 搜索重写规则

      有什么办法可以浏览或搜索重写规则吗 当我使用像这样的标志时 ddump rule firings or ddump rule rewrites我只是得到了触发的规则的名称以及它引起的重写 但没有得到实际的规则本身 理想情况下 我想通过 GH
    • 插入并发问题-多线程环境

      我有一个问题 即使用完全相同的参数在完全相同的时间调用相同的存储过程 存储过程的目的是获取记录 如果存在 或创建并获取记录 如果不存在 问题是两个线程都在检查记录是否存在并报告错误 然后都插入新记录 在数据库中创建重复记录 我尝试将操作保留
    • mclapply 调用应该嵌套吗?

      正在筑巢parallel mclapply是个好主意吗 require parallel ans lt mclapply 1 3 function x mclapply 1 3 function y y x unlist ans Outpu
    • Haskell,堆栈:找到可执行文件

      我正在寻找类似的东西 stack whereis hasktags where whereis行为或多或少类似于 UNIXwhereis命令 hasktags是这样运行的 stack exec hasktags stack exec whe
    • “Eta减少”并不总是在Haskell中举行?

      我发现我可以说 LANGUAGE RankNTypes f1 forall b b gt b gt forall c c gt c f1 f id f HLint 告诉我我可以在这里做 Eta 减少 但是 f2 forall b b gt
    • 我怎么知道我的所有 goroutine 确实正在使用 golang 的同步包等待一个条件

      我有一个应用程序 我正在创建多个 goroutine 来同时执行某个任务 所有工作协程都会等待条件 事件发生 一旦事件被触发 它们就会开始执行 创建完所有goroutines后 主线程在发送广播信号之前应该知道所有goroutines确实处
    • Guzzle 中的“并发”到底是什么?

      我没有找到太多关于concurrency选项中Pool 如果这是可以在服务器上打开的 TCP 套接字数量 那么问题是 我可以使用多少并发来更快地处理请求 我有这个使用的例子Pool I am using Laravel this is ba
    • 单线程程序中可以有竞争条件吗?

      您可以在here https en wikipedia org wiki Race condition Software关于什么是竞争条件的一个很好的解释 我最近看到很多人对竞争条件和线程做出了令人困惑的陈述 我了解到竞争条件只能发生在线程
    • 使用 FoldLine 解析多个块

      对于这个简化的问题 我试图解析一个如下所示的输入 foo bar baz quux woo hoo xyzzy glulx into foo bar baz quux woo hoo xyzzy glulx 我尝试过的代码如下 import
    • Haskell 中的中缀运算符优先级

      对于以下 Haskell 表达式 返回 a gt gt f 应该读作 返回a gt gt f or 返回 a gt gt f 这里的相关规则是什么 规则始终是函数应用程序的优先级高于任何运算符 因此 return a gt gt f 被解析
    • 如何在 Haskell 中漂亮地打印表格?

      我想在 Haskell 中漂亮地打印一个类似表格的数据结构 列列表 例如 Table StrCol strings a bc c IntCol ints 1 30 2 DblCol doubles 2 0 4 5 3 2 应该渲染类似 st
    • 简单 Haskell Monad - 随机数

      我正在尝试扩展代码这个帖子 https stackoverflow com questions 3944170 haskell and state 接受的答案 允许我能够基于以种子作为参数的函数 randomGen 调用 randomGen
    • QuickCheck是否可以生成任意函数

      我试图为身份编写一个 QuickCheck 测试 f y f y 我最初的计划是编写一个返回函数和整数的任意生成器 具有签名Gen Int gt Int Int 并在prop DollerDoesNothing使用 不使用测试该功能应用程序

    随机推荐

    • 如何在 SQL Server 中循环语句

      我是 SQL Server 新手 我正在尝试执行以下操作 示例代码 SELECT ITEM ID FROM TABLE NAME 1 WHERE ITEM STATUS ACTIVE SET ITEM PRICE SELECT PRICE
    • 选择框被另一个选择框的选项禁用或启用

      我尝试在两个选择框之间创建关系 连接
    • MYSQL:类似方法,相似单词 - 但不显示搜索到的单词

      实际上我使用这种方法来显示搜索请求的相似单词 query SELECT FROM searches WHERE Query LIKE search ORDER BY Query 如果有人搜索 nelly 它会在数据库中查找类似的单词 耐莉
    • as.POSIXct 拒绝 +1300 时区

      我在用着as POSIXct用时区解析时间 如下所示 as POSIXct 2009 01 05 14 19 1200 format Y m d H M z 但是 如果字符串包含时区信息 1300 函数返回NA gt as POSIXct
    • SQLGrammarException:ORA-00904(“无效标识符”)

      我收到 Oracle 错误 org hibernate exception SQLGrammarException当我对使用 JPA 和 Spring 的 Java 类运行 JUnit 测试时 ORA 00904 ALIAS COLUMN
    • Wix 自定义对话框

      目前 我们的安装向导使用的是 Wix 经典主题 现在 我们计划改进安装程序的外观和感觉 1 我如何将自定义对话框经典主题更改为其他主题 2 在安装我们的设置时 我们计划显示一些图像 例如幻灯片放映 是否可以像 Wix 中那样显示图像 我是否
    • 镜像两个可写 SVN 存储库之间的子文件夹

      我正在尝试处理涉及我公司的 SVN 服务器的情况 我们将所有重要代码保存在锁定服务器中 我们将其称为 开发 服务器 有些文件需要由公司网络外部的用户编辑 因此我们有另一个 SVN 服务器 全局 服务器 它可以在防火墙外部访问 并且包含那些包
    • Opencv 静态构建,jpeg,png,tiff 不是静态链接?

      我将 opencv 233 构建为静态库 但是当我在应用程序中使用它时 在调用 cv imwrite 时会出现链接错误 tiff png jasp 库未链接 这是我应该在我的应用程序中链接这些我自己的意图还是我错误地构建了它 我希望第 3
    • C# 泛型:“X where T: X”泛型类型约束有什么意义?

      读一本书 NHibernate 3 初学者指南 https www packtpub com application development nhibernate 3 beginners guide我发现了一个令我好奇的片段 实践时刻 创建
    • 使用 Qt,工作线程创建新的 GUI 元素

      我将保持代码简单 以便你们可以看到我正在尝试做什么 我知道所有锁定问题等 我试图弄清楚信号和插槽如何与线程一起使用 在main cpp中 int main int argc char argv QApplication app argc a
    • 欧拉计划 #13 理解 (Python)

      问题13 http projecteuler net problem 13 http projecteuler net problem 13 计算出以下一百个 50 位数字之和的前十位数字 那么 问题的总和是 5000 位 答案是结果的前
    • Hibernate:@SecondaryTable 不起作用

      I know SecondaryTable这些问题已经发布了很多次 所以 如果有相同的问题 我还没有找到 请给我链接或建议 我的数据库中有两个表 firstTable and secondTable 两个 POJO Hibernate 类
    • 选择物化多选中的所有选项

      Bootstrap 多重选择有选择全部的选项 例如这里 https stackoverflow com questions 26525739 boostrap multiselect select all checked by defaul
    • 如何在 C 中连接两个字符串宏?

      我正在尝试为我的程序实现 VERSION 宏 该宏将在某些情况下进行更改 宏 VERSION 通过 Makefile 定义 git 信息放在那里 并且是一个字符串 现在我有一组 define d 开关 我希望 VERSION 能够反映其中哪
    • 如何在 Ruby 中创建简单的数组?

      在 Ruby 中创建这个数组的最短方法是什么 10 20 30 40 50 60 70 80 90 100 谢谢你的帮助 关于什么Range step http www ruby doc org core 2 0 Range html me
    • 在.Net 下为低完整性进程添加写访问权限

      我正在创建一个用于文件创建的 FileSecurity 该文件对于低完整性进程也应该具有写入访问权限 FileSecurity fileAcl new FileSecurity add everyone IdentityReference
    • 在 Symfony2 中配置 Assetic 的输出目录

      我想全局配置 assetic 转储 JS 文件的输出目录 目前 他们总是去web js 我想将其更改为web js compiled 可以在每个文件级别指定它 http symfony com doc 2 0 cookbook asseti
    • [:space:] 和 [:blank:] 有什么区别?

      来自正则表达式简介 http tldp org LDP abs html x17046 html blank 匹配空格或制表符 space 匹配空白字符 空格和水平制表符 对我来说 这两个定义是相同的 我想知道它们是否真的重复 如果不同 有
    • 嵌套文档上的 Azure DocumentDB ARRAY_CONTAINS

      似乎是ARRAY CONTAINS嵌套文档上的函数永远不会匹配任何文档 例如 尝试使用 Azure DocumentDB 进行以下简单查询查询游乐场 https www documentdb com sql demo Sandbox SEL
    • 为什么必须同时使用编译器标志和运行时标志才能在 Haskell 中获得多核支持?

      Haskell wiki 显示您需要同时设置编译标志和运行时标志才能获得多核支持 为什么使用该库不足以在编译时获得正确的行为 为什么运行时可执行文件无法检测到它是使用 threaded 编译的并使用系统上的所有内核 除非另有指定 我认为默认