Tools

Below are recommended tools for various purposes. The recommender's name is in parens. It should go without saying that you should not recommend anything you yourself haven't used a lot :)

BLAS

  • The default version that ships with Ubuntu is super-slow. On my 6-core desktop (12 hyperthreaded cores), I got a 20-30x speedup by switching to openblas, the modern version of GotoBLAS.
  • For Ubuntu 14.04, this works:
sudo apt-get install libopenblas-base
sudo update-alternatives --config libblas.so.3  # optional. Do this to check that you're now using openblas and not libblas.

Python

  • Profiling: cPython to gather profile data, RunSnakeRun to visualize. (Matt)
    • cPython is part of python. RunSnakeRun is available in the Ubuntu repositories.
    • Plotting: matplotlib (Matt)
    • Numerics: numpy (Matt). Default implementation on Ubuntu is slow; see "BLAS" section above for quick fix.

C++

    • The ex-Googler's toolbox:
      • Command-line flags made simple: google-gflags (Matt)
      • Eloquent asserts: google-glog (Matt)
    • IDEs/editors:
      • QtCreator (Ankur)
    • CUDA (Ankur)
    • 3D visualization: Paraview+VTK (Ankur)