CRNS: Computing with the Residue Number System Framework



The CRNS framework consists of a comprehensive set of tools ranging from a programming language and respective compiler to backends targeting parallel computation platforms such as GPUs and reconfigurable hardware supporting applications based on Modular Arithmetic. The aim of CRNS is to automate the design for this class of applications, exploiting the increasing parallelism available in nowadays computing devices. The parallelism is obtained by employing optimized routines based on the Residue Number System in the resulting implementations. Given an input algorithm described with an high-level language, any designer can obtain in a few seconds a fully functional parallel implementation for the CRNS supported devices.



Current release:

The binaries of CRNS are currently available for evaluation. Binaries for 32-bit and 64-bit versions of Microsoft Windows are available to download:

We expect to deploy binaries also for Unix based systems soon. The package also contains a sample program specified for the CRNS and does not need any special installation procedure: just unpack and run!

How to get started:

A tutorial about the CRNS, its properties, and how it can be used is available in pdf format here. Just follow the tutorial and have fun!


IBM Research  IST link  INESC-ID link  Sips link