openEuler22.03上运行存量cuda算法碰到的问题

背景

我司原有的大量cuda算法都是基于cuda10.1,新增算法部分会基于cuda11.x。算法运行和算法训练都会有这种新老cuda库并存的场景。我这边了解到业界很多算法训练平台也有这样的场景。
现在我们在做OS和容器镜像切换,目标把OS/镜像都切换到openEuler22.03

问题

  1. cuda库和驱动的兼容性问题,openEuler22.03兼容的nvidia驱动比较新,容器中使用cuda10.1库这样的新驱动+老cuda库组合,是否可行,有没有官方的兼容性说明
  2. cuda10.1的gcc配套问题,cuda10.1使用gcc编译是要求gcc版本不能比8新,但openEuler22.03的配套gcc版本是10.3,这意味着在openEuler22.03容器中编译,运行cuda10.1的算法程序会存在问题,请欧拉社区给个推荐的使用方式:
  • 如果统一把gcc降级到8以下,则这样不是官方推荐的,也阻碍程序使用新版本gcc
  • 如果只把cuda10.1的欧拉镜像中gcc降级,其他保持10.3的gcc,则集群中容器的gcc版本不一致,在使用spark/flink跑任务的场景中,算法包会随意调度到不同的容器,往往这些算法包有一些动态库依赖,会出现部分容器运行失败的情况
  • 如果镜像中内置双gcc,一个gcc低版本用于编译运行cuda10.1的程序,一个gcc用于运行其他程序,这样是否可行,请欧拉帮忙评估下