如何在 Mac 上使用 c++17 并行标准库算法?
How do you use c++17 parallel standard library algorithms on mac?
我想在我的cmake项目中使用c++17标准库中的并行排序(它是跨平台的,在Linux和MSYS2上运行良好(,但Apple Clang的libc++还没有实现它,而gnu的libstdc++已经实现了。如何在 Mac 上的 cmake 项目中使用 gnu 对 c++17 库的实现?
我找到的解决方案是从源代码构建 gcc 并使用该编译器和它附带的库。它还需要与-static-libgcc -static-libstdc++
静态链接。切换到 gnu 标准库后,我在使用 fmt 库时也遇到了问题,但通过使用仅标头版本的 fmt 解决了这个问题。
这是包含完整详细信息的 CMakeLists.txt 文件。
在Mac上并行化的最佳方法可能是遵循Apple给出的建议 - 使用调度呼叫。
我在 C++11 应用程序上发布了一个示例,该应用程序使用在 Mac OS Sierra 下不起作用dispatch_apply
这使用dispatch_apply - 几乎是for-to循环的插入。
相关文章:
- 使用CMake检测支持的C++标准
- 如何理解C++标准N3337中的expr.const.cast子句8
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 编译标准库类型
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- C++17中的并行执行策略
- 并行用于C++17中数组索引范围内的循环
- 如何在Elixir中调用递归函数并行
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- OpenMP:并行更新数组总是需要减少数组吗
- 铸造标准::有没有回到原来的类型
- 如何使用OpenMP并行这两个循环
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- 如何使用OpenMP并行化此矩阵时间矢量运算
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 如何在 Mac 上使用 c++17 并行标准库算法?
- 并行标准::复制复杂性
- OpenAcc标准中内核和并行指令之间的差异
- 控制与标准::异步的并行度
- 标准上的 OMP 和并行操作::set<...>::迭代器