Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Rapid Optimization Library (ROL)

Rapid Optimization Library

ROL (as in rock and roll) is a high-performance C++ library for numerical optimization. ROL brings an extensive collection of state-of-the-art optimization algorithms to virtually any application. Its programming interface supports any computational hardware, including heterogeneous many-core systems with digital and analog accelerators. ROL has been used with great success for optimal control, optimal design, inverse problems, image processing and mesh optimization, in application areas including geophysics, structural dynamics, fluid dynamics, electromagnetics, quantum computing, hypersonics and geospatial imaging.

For additional details, see https://rol.sandia.gov.

Feature highlights:

  1. Vector abstractions and matrix-free interface for universal applicability
  2. Modern algorithms for unconstrained and constrained optimization
  3. Easy-to-use methods for stochastic and risk-aware optimization
  4. Fast and robust algorithms for nonsmooth optimization
  5. Trust-region methods for inexact and adaptive computations
  6. PDE-OPT application development kit for PDE-constrained optimization
  7. Interfaces and algorithms for optimal experimental design

Getting Started

ROL is a C++ library with a cmake build system. There are minimal third-party library requirements consisting of BLAS and LAPACK which also require a suitable Fortran compiler on the system. On Linux-based systems with an apt package manager, the dependencies may be installed with

apt install cmake gfortran libopenblas-dev liblapack3

Some typical configure scripts may be found in the .github/workflows/ directory. An in-source release build including ROL's examples and tests may be configured from within the source directory with

cmake -D CMAKE_BUILD_TYPE:STRING=RELEASE \
      -D ENABLE_EXAMPLES:BOOL=ON \
      -D ENABLE_TESTS:BOOL=ON \
      -B build \
      -D CMAKE_INSTALL_PREFIX=build/install \
      .

After a successful configure, ROL is built by then changing to the build directory and running make

cd build
make

One can then install it

make install

Building against ROL

Assuming we have a directory called 'roltest' which contains files we would like to run using ROL. In /dir/to/roltest, create a CMakeLists.txt with the following:

cmake_minimum_required(VERSION 3.10)  
project(test)
set(CMAKE_CXX_STANDARD 17) 

enable_language(C)
enable_language(CXX)

message(STATUS "ROL directory is: ${ROL_DIR}/include")
include_directories("${ROL_DIR}/include") #one down for all files
find_library(ROL_LIB NAMES rol librol PATHS ${ROL_DIR}/lib NO_DEFAULT_PATH)
if(ROL_LIB)
  message(STATUS "We found ROL!")
else()
  message(FATAL_ERROR "ROL library not found!")
endif()

add_library(rol::rol UNKNOWN IMPORTED)
set_target_properties(rol::rol PROPERTIES IMPORTED_LOCATION "${ROL_LIB}")
add_executable(ROLtest mytest.cpp)
target_link_libraries(ROLtest PRIVATE rol::rol) 

add_executable(ROLtest mytest.cpp)

The file in mytest then simply tests that it can find a basic ROL type:

#include "ROL_StdVector.hpp"
typedef double RealT;

int main() {
  int dim = 100; 

  ROL::StdVector<RealT> x(dim);
  x.randomize(-1.0, 1.0);
  std::cout << "What's the norm of x? " << x.norm() << std::endl;
}

Compiling and executing should then be a matter of:

$ cmake . -DROL_DIR=/Users/../path/to/rol/build/install
$ make
$ ./ROLtest
What's the norm of x? "some random number"

Python Interface

The python pip package rol-python is the official python interface to ROL. It is available at https://pypi.org/project/rol-python/ and can be installed via

pip install rol-python

Copyright and License

See COPYRIGHT and LICENSE.

Questions?

Contact team or developers:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rol_python-2026.8.28.dev1935.tar.gz (3.9 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rol_python-2026.8.28.dev1935-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (29.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

rol_python-2026.8.28.dev1935-cp314-cp314-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rol_python-2026.8.28.dev1935-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (29.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

rol_python-2026.8.28.dev1935-cp313-cp313-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rol_python-2026.8.28.dev1935-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (29.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

rol_python-2026.8.28.dev1935-cp312-cp312-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rol_python-2026.8.28.dev1935-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (29.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

rol_python-2026.8.28.dev1935-cp311-cp311-macosx_11_0_arm64.whl (13.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rol_python-2026.8.28.dev1935-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (29.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

rol_python-2026.8.28.dev1935-cp310-cp310-macosx_11_0_arm64.whl (13.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rol_python-2026.8.28.dev1935-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (29.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

rol_python-2026.8.28.dev1935-cp39-cp39-macosx_11_0_arm64.whl (13.1 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rol_python-2026.8.28.dev1935-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (29.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

rol_python-2026.8.28.dev1935-cp38-cp38-macosx_11_0_arm64.whl (13.1 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file rol_python-2026.8.28.dev1935.tar.gz.

File metadata

  • Download URL: rol_python-2026.8.28.dev1935.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for rol_python-2026.8.28.dev1935.tar.gz
Algorithm Hash digest
SHA256 7e46dce40911dd14a6a642460b542541cc7e264013482dc12a22f54ec608b352
MD5 6d0ee75db9974bcbd852769bc6c7b991
BLAKE2b-256 9fb6cfb6c0c0c1f02e838cd7333868f37cef0dc9515a2907bd3d9c2c2a312e45

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935.tar.gz:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ef979c08a2d8709cdec821468aaeedf0117318857481dd0303341b1d8081b86b
MD5 cba205ca4bc7c9f1a57c5d5d1efffe5a
BLAKE2b-256 96377b0fe34e80bc7483f6092161b5ae0e9c4c6109b4a0dd7bd252c8bdd70b49

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c0ba2709792e8094fb7a14d9a10985c184223f0f52b026010d993cc3627c36b
MD5 129953f1bc63b8e3fafa7dc665763077
BLAKE2b-256 dc0e915f2676b486eb5025385361e599921692616bb9771a4264a2a797602373

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7c42890c56e72493917c0910a934ca4fbf7fb2bff7d2e42e068bc7d2cd43a0a
MD5 a3762da23d8e6bff795bce0ced8df783
BLAKE2b-256 364eeb45014c8cf8f3aa733b8778e970f94c7eb03b00fa9c484df537579f04ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c62de60eeb3482df26656f8fb7db24e2c3002021893d20e887ad26363f295c95
MD5 dc54652d35c844afc40c41f2b8734f68
BLAKE2b-256 d711bac124d049a478b8cd471c87a7d26a995b098014d93d1b19c1e5797c704c

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e001d9afd882993b6ed765fe55ee8cd443afacaaf6f6a6cafc4c2d675b2e76c3
MD5 6c1216f994291026e26c89734137f74b
BLAKE2b-256 4df4383ab88021ca066cf5c78b23f4d7fc37186969a7d0f2bdc89d479f6d40ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 18e206b37ad8ce26b6247fbd7da42c2787374cf804abe36b9fac8e976fc8c3a3
MD5 8b93a9cfc4362621b9b580cd55331465
BLAKE2b-256 2b811a15caae7d7b110e4706da553cd2f65fc4595c88826a5501cab9ba179a60

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8da7e660a297d930ae2b635ce0be399c88964394b149cfda2b24db3b5a410c9d
MD5 b79c9e91d6cce35acf0a4f932578a74b
BLAKE2b-256 027241458b7eb856dab9e8b0b33e0a3df4b807d4b3d0798364247dc5be6892a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7828815d89a1800ddf9cbb8af9534ca18b0624d9ff46f11167567d5d094d444d
MD5 659610af6183164d8d4be434db70e321
BLAKE2b-256 b0f2ff2a52ec462a8162864af90dca42f9a6f54f27defe66179470d8eb0fd108

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f094460fd6c0adfd1ca3a941fb2ece370a99fb36ef144916ebf63b0b605bccd9
MD5 d828388262c2f8bb4b97db4e34bbc9aa
BLAKE2b-256 31a80191fc9efa7b0470ee66a297ebc4ea5693f423d86f1424310f0480a86ebb

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3879e0f24d349288957198d0c12752835d3f1ef103cf9f61c0f4faee54a0ac76
MD5 b51f7b6557a393390189c2078342c385
BLAKE2b-256 531b91679919f93e1a879bab1b9cbc048f2101f1687721c1737571554a39ab7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ebf3fa613e0ef5aee44952030bfe6088ec0a8de8ad480924c2e10a5a97ee2589
MD5 02b2ba2b347cecb88231b8cfaa76946e
BLAKE2b-256 c9f184f0e7006ca0baf5da5ee46dd3ef9678ca1d7255f4b228ab54c7bfc00a65

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 903473e48485c16eb4016328d55291f8d474dda341337d54cc41e7f52b1b3b03
MD5 daab2cd8cd71cb81605ec44e760dde74
BLAKE2b-256 3aa5d9db92811d0d43a92706bf647344333779b904254893eb1b4d3f2a8b3011

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 02325bbdde0049a9e93f859d66967584da6f8f116f3a923c40f04f8dd2a120c8
MD5 deb6e9f29a637effdae924e5fd0464cb
BLAKE2b-256 96edea810d3668412271f608e18db28d45c1c9a40a3e64a0649dc329c9f0dac0

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rol_python-2026.8.28.dev1935-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rol_python-2026.8.28.dev1935-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6fee504fa81a4deefbd11e2a60d0ad2bbda5da68daa5f8cd3a38282510c03d5f
MD5 b5597f6306e0bf184e37cf3f0b783da0
BLAKE2b-256 49ce082ef384701219130fdc139b0903d0e146f9eb9e6829362829f34d47fd2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for rol_python-2026.8.28.dev1935-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: python.yml on sandialabs/rol

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2026.8.28.dev1935 This release

15 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page