orin 的unified memory啥情况下要attach global和host吗

  • 1 replies
  • 1667 views
*

sisiy

  • *****
  • 246
    • 查看个人资料
orin 的unified memory啥情况下要attach global和host吗
« 于: 十二月 03, 2022, 09:14:28 am »
问题:有了解orin 的unified memory啥情况下要attach global和host吗。发现和trt放一个线程后就需要做这个,否则不需要
« 最后编辑时间: 十二月 03, 2022, 09:21:28 am 作者 sisiy »

*

sisiy

  • *****
  • 246
    • 查看个人资料
Re: orin 的unified memory啥情况下要attach global和host吗
« 回复 #1 于: 十二月 03, 2022, 09:16:49 am »
答:任何Unified Memory V1.0的平台都需要的。主要包括Jetson系列,和Windows上。Linux上,Pascal+的卡不需要(V2.0平台)。Attach Host/Global/Stream的目的是明确一段Unified Memory的归属(CPU,GPU,或者GPU的部分流),因为在这些平台上,CPU和GPU,不能同时访问Unified Memory,必须手工指定一段时间的归属,然后对应的设备才能访问。否则会直接挂掉,而V2.0的平台可以直接访问,不需要attach过来,attach过去的过程。不过所有的Jetson平台,哪怕是计算能力6.0以后的,也依然属于1.0平台(实现的问题)。在他们上用Unified Memory,必须attach,或者等GPU/CPU的一者完全停下来以后(例如在某处设备同步后,CPU访问)另外一者才能访问,并不是因为有TRT的存在才需要。

嗯嗯。2.0的平台还有很多其他方面,不仅仅是同时访问不需要手工设定的问题,例如可以超量分配等等,方便了很多很多。Jetson用户如果想省事,就直接等GPU完全停下再CPU上即可。例如不要在多个线程中使用多流,或者哪怕使用了,全部流同步后再用。这样不需要attach反复折腾(但是可能运行效率稍微低点)。而Jetson平台上的最佳方案可能则是attach stream + 多流, 这种有最佳效率,但是要付出多谢几次attach调用的过程,各有利弊吧。