In this project, called Peticodiac4J, we use many-core devices (such as GPUs) to accelerate the primitive operations of the general simplex procedure. The host program runs on the Java-CPU side, and the device kernels are implemented in either OpenCL or CUDA.
The primitive operations of the general simplex procedure include:
-
checkBounds: finds "broken" variables by checking for bounds violations of the basic variables
-
findSuitable: finds a suitable non-basic variable whose assignment may be tweaked in order to correct the violation
-
pivot: swaps the basic (broken) and non-basic (suitable) variables, updates the tableau, and updates the assignment of the broken variable
-
updateAssignment: computes the new assignment of all the basic variables
This project is a current work-in-progress. In the near future, additional information will be provided for building and using the application, as well as providing benchmarks and links to other useful resources.