【问题标题】:Rewrite binary executable to use GPU/be multithreaded?重写二进制可执行文件以使用 GPU/多线程?
【发布时间】:2013-11-14 04:50:51
【问题描述】:

是否有任何工具可以为我重写二进制文件以使用 GPU、SSE 指令或多线程?我有一个单线程程序,有很多空闲周期,但我没有源代码。

【问题讨论】:

    标签: multithreading optimization compiler-construction gpu


    【解决方案1】:

    此任务没有通用工具,因为并行化代码需要理解它,除了循环等琐碎的情况。

    有些工具可以在源代码级别进行操作,以实现或多或少的微不足道的并行化,但是一旦编译代码,您就会丢失很多语义信息。

    您可以尝试通过生成多个进程在更高级别上并行化它。

    例如如果此二进制文件采用参数 n 并且其执行时间与 n 成线性关系,那么生成 p 进程最多可以将您的运行时间除以p.

    当然,你应该确保这个程序不会做与并行化不兼容的事情,因为你可能真的把事情搞砸了:想象这个程序使用一个文件来存储临时数据,运行两个实例可能会损坏文件。

    因此,在尝试运行并行实例之前,请谨慎确定二进制文件的范围:文件、数据库、系统资源(互斥体、信号量...)。 如果它使用位于同一文件夹中的文件,那么您也必须在 p 文件夹中复制二进制文件。

    【讨论】:

    • 感谢 pragma -- 我猜代码中有循环并且它们大部分时间都在消耗,希望有人写了一些东西来重构这些。
    • @OneSolitaryNoob:我不会指望它。 :) 即使你找到一些承诺这一点的工具也要非常小心,因为摆弄二进制文件是非常大胆的。
    • 我看了蛮多的,有个领域叫“二元优化”,不过最近好像没啥大动向。
    猜你喜欢
    • 2020-10-06
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2013-12-02
    • 2023-04-07
    • 1970-01-01
    • 2019-11-09
    • 2020-01-21
    相关资源
    最近更新 更多