首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Halide多GPU支持

Halide多GPU支持
EN

Stack Overflow用户
提问于 2018-08-12 23:51:58
回答 1查看 396关注 0票数 0

我在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指针?

EN

回答 1

Stack Overflow用户

发布于 2018-08-14 05:45:51

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51810425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档