在 Linux 中自动使用多线程
Automatic use of multi-threading in Linux
我有以下问题:
我在强大的英特尔 CPU(8 核)上工作。对于这个目标,我使用 gcc 从源代码编译了一个旧的内部 C 应用程序。它是单线程应用程序,因此创建的二进制文件不会利用多核 cpu 和单核以接近 100% 的负载运行的优势。有没有办法在不更改源代码的情况下利用其他内核?
如何在没有显式多线程编程的情况下提示gcc自动并行化程序?程序中可以给编译器什么提示?
您可以尝试使用 gcc 标志来自动并行化使用 pthread 的循环 (-floop-parallelize-all -ftree-parallelize-loops=8)。当然,您必须小心编写代码,编译器必须知道循环的每次迭代之间没有依赖性才能并行化它。
但老实说,你不会免费得到任何东西,除非你的代码是为多处理器设计的,否则你永远不会有太多收获。
我有以下问题: 我在强大的英特尔 CPU(8 核)上工作。对于这个目标,我使用 gcc 从源代码编译了一个旧的内部 C 应用程序。它是单线程应用程序,因此创建的二进制文件不会利用多核 cpu 和单核以接近 100% 的负载运行的优势。有没有办法在不更改源代码的情况下利用其他内核?
如何在没有显式多线程编程的情况下提示gcc自动并行化程序?程序中可以给编译器什么提示?
您可以尝试使用 gcc 标志来自动并行化使用 pthread 的循环 (-floop-parallelize-all -ftree-parallelize-loops=8)。当然,您必须小心编写代码,编译器必须知道循环的每次迭代之间没有依赖性才能并行化它。
但老实说,你不会免费得到任何东西,除非你的代码是为多处理器设计的,否则你永远不会有太多收获。