CPLEX goes mainstream
JeanFrancoisPuget 2700028FGP Comments (2) Visits (12206)
As part of our goal of making optimization pervasive, we announced IBM CPLEX® Optimizer for z/OS® on April 10, 2012. In case you wonder what it means, z/OS is the operating system for IBM mainframes.
Are we porting on z/OS just because we have to cover one of the main hardware offering from IBM?
The answer is no as we shall see. There are several good reasons why someone may want to develop and deploy an optimization application with IBM CPLEX for z/OS.
Granted, mainframes aren't the platform of choice so far for running optimization applications. During ILOG days we did have a port of CPLEX for MVS (the ancestor of z/OS). It was sold to those customers relying heavily on IBM mainframes. But I must admit that prior to joining IBM I never thought of mainframes as a good platform for cpu intensive software like CPLEX. To me, mainframes seemed to be optimized for other kind of applications. For instance they were great (and still are great) for highly secure transactional applications such as CICS or IMS that are at the core of our banking system.
Things have changed with the latest generation of IBM mainframe (System z) shipped in 2010. System z has decent CPUs in term of raw speed. These are in the same ballpark as recent Intel and Power cores when running CPLEX. It means that optimization applications can be developed and deployed on all major hardware platforms. It also means that customers relying primarily on mainframes can now benefit from the power of optimization applications. As our marketing team coined it, CPLEX® Optimizer for z/OS® enables mathematical optimization in a mainframe environment for operations research practitioners and lines of business in:
This offering provides greater end-to-end performance, reliability, simplified architecture, and maintenance requirements as opposed to applications deployed in a distributed environment.
Technically, what is it we have announced? We announced the planned availability for z/OS of all CPLEX algorithms, and all CPLEX C and C++ API. Details are given in the announcement letter.
CPLEX applications developed in C and C++ can be recompiled and run on z/OS. We are for instance working with a customer where development is done on a Windows machine, then the code is recompiled and run on z/OS. Portability is such that the code does not need to be modified, it only needs to be recompiled with the appropriate compile and link options. One can also develop directly on System z, see for instance this post.
Portability of the code comes in part from the use of Unix System Services (USS). When using USS you can use tools like a shell or Perl when building your application, you can use posix threads, and the list goes on. Moreover, USS is tightly integrated with z/OS, which means that what you've built using USS can then be accessed and used from within "traditional" z/OS tools like TSO and JCL..
Using USS, and especially posix threads, we were able to compile CPLEX code with very little modifications compared to what is used on Linux and Unix ports. The fact that the code is similar has many advantages, behavior on various machines is similar, and the high quality of CPLEX code is kept (very little room for bugs).
Next step is to try it!