我正在尝试加速 Xilinx u50 FPGA 上的 Ethash 算法。我的问题不是关于 FPGA,而是关于传递在 CPU 中生成的 DAG 文件并将其发送到 FPGA。
首先,我在测试中使用此代码。我做了一些更改以支持英特尔 OpenCL 驱动程序。现在,如果我只使用 CPU 来运行 Ethash(或者在这种情况下为 xleth)程序,所有过程都已完成。但在我的情况下,我首先在 CPU 中生成 DAG 文件,并使用 4 核生成 0 纪元需要 30 秒。之后我想将 DAG 文件(在显示为 m_dag 的代码中)传递到一个新的缓冲区,看起来像 g_dag 发送它在 u50 HBM 中。
我不能在这个程序中只使用一个上下文,因为我使用了 2 个单独的内核文件(.cl 用于 CPU,.xclbin 用于 FPGA),当我尝试制作程序和内核时,它向我发送错误 33(CL_INVALID_DEVICE)。所以我制作了单独的上下文(名称为 g_context)。
现在我想知道如何将数据从 m_contex 发送到 g_context?它还可以并优化性能吗?(如果有,请给我发送另一个解决方案。)
我在这个链接中发送我的代码,如果可以的话,请给我发送代码解决方案。