gpt4 book ai didi

c++ - Halide 多 GPU 支持

转载 作者:行者123 更新时间:2023-11-28 04:34:42 25 4
gpt4 key购买 nike

我在 Halide::Generator 中有一个多级管道,计划在 GPU 上运行。在我的电脑上,我有两个支持 CUDA 的 GPU,我想知道是否可以并行运行这个生成器的两个实例(每个 GPU 一个),并将两个输出缓冲区返回给主机以进行进一步处理.

如果这是可以实现的,您能否告诉我它是如何完成的,以及该解决方案是否可以扩展到具有任意数量 GPU 的计算机?

一如既往的感谢。

===更新===

正如@Zalman 所建议的,我一直在尝试覆盖 halide_cuda_acquire/release_context 函数并使用 void* user_context 指针来选择适当的上下文。为了帮助我,我基于 test/generator/acquire_release_aottest.cpp 脚本。虽然我找到了a bug in the script and fixed it ,我不知道如何有效地使用 user_context

我所做的就是创建几个与我拥有的几个设备相关的 cuda_ctx,并在 halide_cuda_acquire_context 中选择一个 cuda_ctx 函数,它设置我的生成器将在其上运行的指定 GPU。

所以我的问题归结为应该如何/在哪里设置 user_context 指针?

最佳答案

可能最好的方法是定义您自己的 halide_cuda_acquire_contexthalide_cuda_release_context 版本,它们使用 user_context 参数来确定哪个要使用的 CU 上下文。这样一来,人们就可以在希望给定内核运行的任何 GPU 上创建上下文,然后传入指向该上下文的 user_context。

如果由于内核未在第二个上下文中编译而尝试在多个上下文中运行相同的内核,这可能会遇到问题。我想我已经解决了这个问题,但如果没有,我会的。

关于c++ - Halide 多 GPU 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51810425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com