Open source

  • DeSR – G. Attardi
    DeSR is a Dependency Shift Reduce parser for multiple languages. It generates dependency parse trees for natural language sentences.  The parser has been trained on all the 18 languages of the CoNLL-X Shared task and CoNLL Shared task 2007. Dependency structures are built scanning the input from left to right and deciding at each step whether to perform a shift or to create a dependency between two adjacent tokens. The parser algorithm is deterministic and highly efficient while still achieving state of the art accuracy. More details and the software for download are available at the DeSR Parser Home.
  • FastFlow – M. Torquati
    FastFlow is a C++ parallel programming framework advocating high-level, pattern-based parallel programming. It chiefly supports streaming and data parallelism, targeting heterogenous platforms composed of clusters of shared-memory platforms, possibly equipped with computing accelerators such as GPGPUs, Xeon Phi, Tilera TILE64.The main design philosophy of FastFlow is to provide application designers with key features for parallel programming (e.g. time-to-market, efficiency, functional and performance portability) via suitable parallel programming abstractions and a carefully designed run-time support. FastFlow is currently being used in two distinct FP7 STREP projects (ParaPhrase and Repara) as well as in a number of software projects in different domains (numerical computation, image processing, financial applications).FastFlow has been designed and is currently maintained by researchers at the Dept. of Computer Science of the University of Pisa and Torino.
  • Optimization Tools – A. Frangioni
    This is a (somewhat heterogeneous) collection of C++ codes for solving various kinds of optimization problems. These are typically polynomial-time problems, often with some graph structure and/or at the interface between continuous and combinatorial optimization, that need to be solved very many times within approaches for much more complex (NP-hard) ones. As such it is relevant that they be solved efficiently, but comparatively little regard has been paid to the implementation of solution methods for these “easy” problems, leading to the risk of re-inventing the wheel many times over. By releasing reasonable, portable implementations of efficient solvers for these problems under a clean interface we can spare other researchers and practitioners of implementation efforts that can therefore be more productively employed. Whenever possible the solvers adopt an abstract interface approach, where a pure virtual base C++ class is defined to set up the interface, and then multiple different implementations are provided as derived classes. Also, collections of relevant instances sets for these (and others) optimization problems, tools for reading them, and various testing and debugging tools are often included in the distributions to help perspective users to optimally exploit them and/or develop their own versions.