numpy Pyomo通过NVIDIA Cuda解决了

w1jd8yoj  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(72)

我想知道是否有一种方法可以使用NVIDIA Cuda在GPU上解决Pyomo混凝土模型。
我看了https://developer.nvidia.com/how-to-cuda-python,看了一段视频。如果你的输入参数可以被numpy识别,比如; np.float32,np.float64,etc.可以在GPU上编译/求解,
我们使用一个函数来创建所有模型并使用以下方法求解:

optim = SolverFactory('glpk')
optim = setup_solver(optim, logfile=log_filename)
result = optim.solve(prob, tee=True)

在这种情况下,我们求解函数的输入将是prob(一个pyomo具体模型)。有没有一种方法可以通过GPU而不是CPU来解决这个问题?
感谢您!

hof1towb

hof1towb1#

你不能

公平地说,人们可以写一本书来说明这种想法是多么的误导,但是让我们把它变得简单,只是指出一些基本的东西(忽略很多其他细节):

  • GPU的工作方式与CPU不同,使用其他指令
  • GPU将需要一些驱动程序/编译器来使一些代码可运行
  • 虽然可能会有一些简化的高级语言来使用通用代码生成GPU兼容的代码,但这是高度实验性的,有限的,当然:比手动调优的代码更糟糕
    *GPU并非在所有情况下都更快(更严格:他们只是在某些事情上更快,这很难实现)
  • 你还需要为延迟和数据拷贝付费
  • GPU通常也具有较少的RAM
  • 线性规划和整数规划是用高度复杂的算法来解决的
  • 理论上说:单纯形算法(GLPK使用的)很难并行化(哎哟;对GPU不好)
  • 理论上说:IPM方法(也可以解决LP)易于并行化
    *没有已知的竞争基于GPU的Simplex求解器!(我实际上不知道GPU的任何Simplex实现,可以想到很多原因)
  • 有一些专门的基于IPM的GPU方法,不与pyomo接口;也没有基于GPU的商业求解器
  • IPM对整数编程非常不利
  • GLPK,你的求解器,除了被python调用之外,与python没有任何关系(所以整个python-cuda链接我们都没用)
xn1cxnb4

xn1cxnb42#

它不是pyomo,但它是一个解决方案,可以利用CUDA,看看NVIDIA的cuopt。这是一个相对较新的场景,但今年一直在打破纪录
https://github.com/NVIDIA/cuOpt-Resources
https://blogs.nvidia.com/blog/2023/03/21/cuopt-world-record-route/

相关问题