【问题标题】:Multi-Threading or GPU calculations多线程或 GPU 计算
【发布时间】:2023-03-12 21:13:01
【问题描述】:

我目前正在尝试创建一个用 C# XNA 编写的比特币矿工。

https://github.com/Generalkidd/XNAMiner

现在的问题是,Miner 的实际数字运算似乎占用了过多的 CPU 时间,因此,程序的 UI 在启动时几乎冻结,尽管我相信计算仍在后台进行尽管窗口被冻结且无响应。我尝试实现 Aphid 的 ParallelTask​​s 库并将一些 for 循环迁移到不同的线程中。我不完全理解这些并行 for 循环是如何工作的,因此我创建的版本没有正确迭代,但是,程序确实加快了很多。还剩下几个 for 循环和一堆 foreach 循环。

优化代码最简单、最有效的方法是什么?我应该尝试将每个循环移动到自己的线程中吗?或者尝试将整个方法移动到它们自己的线程中?或者是否可以使用 GPU 进行这些计算(考虑到 CPU 挖掘的状态,这种方式最终会更好)。

【问题讨论】:

  • 为什么选择 XNA?只是为了让你可以使用gpu?是的,您需要在不同于 GUI 的线程上进行计算。从那里您可以为您的子计算创建更多子线程。
  • 我选择在 XNA 中编写这个是因为它扩展了人们可以用于比特币挖掘的平台数量(例如 Xbox 360 和 Windows Phone)。但是,我不知道如何正确地将所有计算移动到不同的线程,因为它似乎无法将值返回到主线程。我是多线程编程的新手。
  • 看看backgroundworker。而且您不想在 Xbox 或手机上运行这些类型的计算。他们没有马力。
  • 如果您打算创建一个严肃的比特币矿工,请重新考虑使用 XNA。手机和 Xbox 不适合此类活动。
  • 谢谢,我正在试用 backgroundworker。为了首先适应我的代码,我必须稍微调整一下结构。我知道 Xbox 360 和 Windows Phone 与 PC 相比并不是特别强大,但是,它仍然拥有大量的计算能力,所以我想我会利用它。每一点计算能力都会加起来。

标签: c# multithreading xna gpgpu bitcoin


【解决方案1】:

我希望您这样做是为了教育,因为自 2011 年以来 CPU/GPU 挖矿已经过时。即使有免费电力,您也几乎无法进行硬件投资。 ASIC 现在是挖矿的新事物。

Different GPU/CPU hash rates

Mining Calculator

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多