Questions & Answers
Why do I get warnings and/or errors in my ILOG CPLEX application when running Purify?
Purify doesn’t necessarily support the higher levels of compiler optimization CPLEX uses. For example, on the Solaris operating system, Purify officially supports code compiled with –xO2 or weaker levels of optimization; it makes an effort to support higher levels of optimization but there is no guarantee. The CPLEX production libraries are built using optimization level xO4. Since reducing the optimization level may degrade the performance of CPLEX, it is our policy not to provide a non-optimized version of the CPLEX libraries. Also, since changing the level of optimization can affect the path CPLEX takes to an optimal solution, a non-optimized version has limited value in the application testing process. Instead, we recommend that customers consider other memory debugging tools, such as Valgrind (www.valgrind.org), which is available only for Linux, or Insure (www.parasoft.com), which uses source files instead of object files.
Can I provide an initial solution for a linear program without providing a basis?
Yes, you can give CPLEX starting point information for a linear program when you are using the primal or dual simplex method. Use the following routines:
- Callable Library - CPXcopystart provides starting information for use in a subsequent call to a simplex optimization routine.
- Concert Technology - IloCplex::setVectors specifies a starting point for the subsequent invocation of IloCplex::solve.
CPLEX will construct a starting basis from these values. If you can also provide dual variables to these routines, CPLEX probably will be able to construct a better starting basis. Note that you need to set the CPLEX advanced start indicator (CPX_PARAM_ADVIND or IloCplex::AdvInd) to a nonzero value (1 or 2) to use these routines.
How does CPLEX performance on dual core machines compare to true dual processor machines?
A dual core processor is different from a dual processor system. A dual core processor is a CPU with two separate cores on the same die; a dual processor machine has two distinct processors. In a dual processor machine, each individual CPU has its own resources, whereas in a dual core machine, the cores share the resources. Indeed, dual core processors still have only a single bus for grabbing system memory.
There are two fundamental issues involving CPLEX and dual core machines:
- If you do multiple simultaneous CPLEX runs of a problem on a dual core machine, you will see worse results than if you run the problem on a single processor on that same machine. The final search times that CPLEX reports should increase in the case of multiple simultaneous runs because a dual core machine does not truly have completely separate processors. In the case of a true multiprocessor machine, CPLEX should report the same time, regardless of how many other processes are running on the system. With dual core machines, there will be a kind of degradation in performance, as the multiple runs still share resources.
- If you run parallel CPLEX on a single model on a dual core machine, you will not get as much of a speedup as you would on a true multiprocessor machine. But, it will still run significantly faster than a serial CPLEX run on one processor on the same machine.
What are the limitations on parameter settings using CPLEX in OPL?
You can use every setting available in the CPLEX library either directly from the Integrated Development Environment’s (IDE) menus or from an OPL model (script) code. For a particular setting please refer to the documentation.
How can I utilize my 64-bit machine to run OPL models?
At the moment (OPL5.5) you can’t run OPL models on 64-bit machines directly from the Integrated Development Environment (IDE). Launching models from the IDE will run in 32-bit mode even on a 64-bit machine. However, using the OPLRun option, which is launching models without the overhead of the IDE, will indeed utilize the 64-bit architecture. The OPLRun can be launched as a separate process either from the IDE or outside of the IDE (see the documentation for more details on OPLRun).
Don’t hesitate to send us your questions to get answers in The Right Hand Side next issue.