manbet体育手机客户端


计算服务器

如前所述,Gurobi Compute Server是一个可选组件Gurobi远程服务它允许您选择一个或多个服务器来运行Gurobi计算。然后,你可以将与解决优化问题相关的工作从尽可能多的客户端机器上卸载到这些服务器上:

图像compute_server

在考虑使用Gurobi Compute Server的程序时,可以将优化考虑为两个部分:客户端和计算服务器。客户端程序使用任何标准Gurobi接口(C, c++, Java, . net, Python, MATLAB, R)构建优化模型。如下图所示:

图像csapi

我们所有的API都在C API之上。C API负责构建内部模型数据结构、调用Gurobi算法、检索解决方案信息等。当在一台机器上运行Gurobi时,C API将在内存中构建必要的数据结构。Gurobi算法将存储在这些数据结构中的数据作为输入,并生成解决方案数据作为输出。

当使用Compute Server时,C API将模型数据传递给服务器,并将其存储在服务器中。当调用Gurobi算法时,C API只是向服务器传递一条消息,指示应该对存储的模型数据执行优化。解决方案数据计算并存储在服务器上。当客户端程序稍后查询解决方案信息时,客户端向服务器发送一条消息以获得所请求的数据。客户端和服务器之间的所有通信都是在幕后进行的,

换句话说,整个过程可以分为三个阶段:

图像cs_steps

当然,以更复杂的方式使用Gurobi API的程序将会有额外的步骤。

Gurobi计算服务器支持排队和负载平衡。您可以设置每个Compute Server将运行的同时作业数量的限制。当达到这个限制时,后续的作业将进入队列。如果集群中配置了多个Compute Server节点,当前的作业负载将在可用的服务器之间自动均衡。

图像cs_queue

默认情况下,以先进先出(FIFO)方式为Gurobi作业队列提供服务。但是,作业可以被赋予不同的优先级(通过客户端许可文件或API调用)。然后,优先级较高的作业在优先级较低的作业之前从队列中选择。

虽然Gurobi Compute Server对开发人员和用户都是透明的,但是对于Compute Server的使用,您确实需要注意一些方面。其中包括性能考虑、用于配置客户端程序的api,以及Compute Server应用程序不支持的一些特性。我们将讨论这些话题在本文档的后面部分