Remote Solving with Xpress Insight Compute Interface
The Xpress Optimizer libraries can be configured to outsource optimization computation to a remote Insight server that supports the Compute Interface. Software applications which depend on the Optimizer libraries for optimization computation therefore inherit the ability to transparently send jobs to Insight. This includes the Xpress applications (Optimizer Console, Mosel, Workbench).
When a solve is started, the Optimizer library directs any operations that can be solved remotely to the remote server. Some features such as callbacks, multi-start, and the solution enumerator have restrictions applied which are documented here.
To integrate Xpress with an Insight Compute Server you must provide some configuration. Please see Chapter 3 of the Xpress Insight Compute Interface guide here: (https://www.fico.com/fico-xpress-optimization/docs/latest/insight5/compute/)
The single solve operations XPRSlpoptimize, XPRSmipoptimize, XSLPnlpoptimize, XSLPminim, XSLPmaxim, XPRSiis are supported. Calls to XPRSrepairinfeas and XPRStune which generate multiple problem solves are also supported and each solve will be outsourced to the remote Insight server. The number of parallel solves in the tuner is driven by the TUNERTHREADS control.
The Xpress Insight server and the local client application must be using the same major version of Xpress. Remote solves by Insight are supported by Xpress v8.10 and higher. Note: If you get a solve path difference, update the version of Xpress to match the version on the server with that on the client machine and check hardware controls, in particular threading controls.
Compute solves do not support the continuation of solves once they are interrupted, nor the multistart nonlinear algorithm.
A remote solve can be terminated by calling XPRSinterrupt. When called from the supported callbacks - with the exception of the message callback - this will stop the optimizer the same way as for a local solve. Otherwise, calling XPRSinterrupt outside of the supported callbacks will terminate the solve at the earliest opportunity, and no results will be generated.
The remote solve is resilient to a temporary loss of connection between client and server. Xpress will try to reconnect for a period of time and a message will appear in the run log if this is successful, or the solve will terminate with an error if it is not. If the connection between client and server is established when the connection between server and the executing worker is lost then the solve will be restarted to maintain determinism, and a computerestart callback will be fired to notify the calling application. Any work done by the disconnected remote worker, including any integer solution callbacks already fired, will be repeated.
Support for the following features are disabled when solving remotely and calling the related API methods will cause a runtime error:
- multiple solution pools,
- solution enumeration,
- callbacks not listed as supported above.
Authentication
Please refer to the Insight Compute Interface guide Chapter 2 and 3 for details of connecting Xpress to a remote Insight server. (https://www.fico.com/fico-xpress-optimization/docs/latest/insight5/compute/)
Callbacks
Callbacks are supported. When submitting a job to a remote machine, these callbacks are restricted to the message, barlog, globallog, lplog and cutlog, gapnotify, and intsol callbacks. Attempting to set any other callbacks will cause a runtime error. Controls can be changed in the usual way in all the supported callbacks with the exception of the message callback. Note: when solving remotely, the value of control XSLP_AUTOSAVE is always ignored.
Within the supported callbacks, calls can be made to functions that retrieve attributes and setting control values. Within the intsol callback, calls to XPRSgetmipsol and XPRSgetmipsolvalue are permitted. Calling any other API function will cause a runtime error, including any XSLP and BCL API calls. Note: While calling XPRSgetlpsol is also permitted in the intsol callback, it will return the same solution as XPRSgetmipsol, both being the solution associated to the intsol callback. This is different to non–remote solves where getmipsol would return the overall best solution instead. It is therefore safe to keep using getlpsol in applications utilizing compute solves.
Any job that features callbacks which return hardware related attributes will use values from the remote server. For example, XPRS_CORESDETECTED will reflect the hardware on which the problem is being solved, not the hardware of the local client.
Licensing
When an Xpress application or an application embedding the Optimizer library is started with remote solving configured, the local license check is omitted and no local license is required to execute the application.
When a solve is started, the Optimizer instance will direct any operations that can be solved remotely to the remote server. This will also be the case if additional Optimizer instances are initiated as separate threads of the same process.
Advanced Configuration
There are some advanced settings that can be set using the Remote Solving Configuration file; this is described in section The Remote Solving Configuration file.
© 2001-2020 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.