Pyomo 通过 NVIDIA Cuda 解决
Pyomo solves over NVIDIA Cuda
我想知道是否有办法使用 NVIDIA Cuda 在 GPU 上求解 Pyomo 混凝土模型。
我查看了 https://developer.nvidia.com/how-to-cuda-python,并看到了有关它的视频。事实证明,您的输入参数是否可以被 numpy 识别,例如; np.float32、np.float64 等...可以 compile/solve 通过 GPU,
我们正在使用一个函数来创建所有模型并用以下方法求解:
optim = SolverFactory('glpk')
optim = setup_solver(optim, logfile=log_filename)
result = optim.solve(prob, tee=True)
在这种情况下,我们求解函数的输入是概率(一个 pyomo 具体模型)。有没有办法通过 GPU 而不是 CPU 来解决它?
谢谢!
不可以。
公平地说,人们可以写一本书来说明这个想法是多么的误导,但让我们简单点,只指出一些基本的东西(并忽略很多其他细节):
- GPU 的工作方式不同,使用的指令不同于 cpus
- GPU 需要一些 driver/compiler 才能使某些代码可运行
- 虽然可能有一些简化的高级语言可以使用通用代码生成与 GPU 兼容的代码,但这是高度实验性的、有限的,当然:比手动调整的代码差得多
- GPU 并非对所有事情都更快(更严格:它们只是对某些事情更快,而且很难实现)
- 而且您还需要为延迟和数据复制付费
- GPU 的 RAM 通常也较少
- 线性规划和整数规划由高度复杂的算法求解
- 理论说:单纯形算法(GLPK 使用)很难并行化(哎哟;对 GPU 不利)
- 理论说:IPM 方法(也可以解决 LP)易于并行化
- 没有已知的竞争性基于 GPU 的单纯形求解器!(我实际上不知道任何 GPU 的单纯形实现并且可以想到很多原因)
- GPU 有一些专门的基于 IPM 的方法,不与 pyomo 接口;并且没有基于 GPU 的商业求解器
- IPM 对整数规划非常不利
- GLPK,你的求解器,与 python 无关,除了被 python 调用(所以整个 python-cuda link 我们没用)
我想知道是否有办法使用 NVIDIA Cuda 在 GPU 上求解 Pyomo 混凝土模型。
我查看了 https://developer.nvidia.com/how-to-cuda-python,并看到了有关它的视频。事实证明,您的输入参数是否可以被 numpy 识别,例如; np.float32、np.float64 等...可以 compile/solve 通过 GPU,
我们正在使用一个函数来创建所有模型并用以下方法求解:
optim = SolverFactory('glpk')
optim = setup_solver(optim, logfile=log_filename)
result = optim.solve(prob, tee=True)
在这种情况下,我们求解函数的输入是概率(一个 pyomo 具体模型)。有没有办法通过 GPU 而不是 CPU 来解决它?
谢谢!
不可以。
公平地说,人们可以写一本书来说明这个想法是多么的误导,但让我们简单点,只指出一些基本的东西(并忽略很多其他细节):
- GPU 的工作方式不同,使用的指令不同于 cpus
- GPU 需要一些 driver/compiler 才能使某些代码可运行
- 虽然可能有一些简化的高级语言可以使用通用代码生成与 GPU 兼容的代码,但这是高度实验性的、有限的,当然:比手动调整的代码差得多
- GPU 并非对所有事情都更快(更严格:它们只是对某些事情更快,而且很难实现)
- 而且您还需要为延迟和数据复制付费
- GPU 的 RAM 通常也较少
- 线性规划和整数规划由高度复杂的算法求解
- 理论说:单纯形算法(GLPK 使用)很难并行化(哎哟;对 GPU 不利)
- 理论说:IPM 方法(也可以解决 LP)易于并行化
- 没有已知的竞争性基于 GPU 的单纯形求解器!(我实际上不知道任何 GPU 的单纯形实现并且可以想到很多原因)
- GPU 有一些专门的基于 IPM 的方法,不与 pyomo 接口;并且没有基于 GPU 的商业求解器
- IPM 对整数规划非常不利
- GLPK,你的求解器,与 python 无关,除了被 python 调用(所以整个 python-cuda link 我们没用)