FPGAs, hardware

  • Moore's law still applies for single-core FPGAs.
    • Millions of floating point operations per second (MFLOPS): 10 years ago 1, 5 years ago 5, 2 years ago 50, now 5000.
  • Don't consider wiring diagrams any more - FPGAs change so fast that tailoring a design to one particular FGPA is a waste of time.
  • Don't code in VHDL at all, even behavioural. Too low level.
  • Compilers are now capable of compiling C down to FPGAs, but used to make sub-optimal decisions.
    • FPGAs come with multiple floating point chips, multiple DSPs, and compiler not only needs to transform C but to schedule instructions on multiple chips, taking pipelines into account.
  • FPGAs just recently support 10 GbE.
  • Many tricks involved in making floating point operations faster
    • Align mantissa and exponents
    • Add small numbers first building up to large. Because adding large first means precision is impossible to maintain.

Latent Dirichlet Allocation (LDA)

  • Generative model of topics within a body of text.
  • Supervised.
  • Topics are random variables generating tokens.
  • Refer to NLP notes for refresher on generative models.

 Clustering

 Don't Use This Code

 IPython 2 Widgets

  • Incredible! Coming out April 2014.

General notes

  • Many are PhDs, many are hard core into e.g. MATLAB
  • Want to emphasise how awesome Python is.
  • Almost everyone prefers to use IPython Notebook, it's common knowledge.
    • For internal presentation, analyses, keeping notes and following presentations.
  • Cython has tremendous amount of mindshare, particular with NumPy. Almost standard.
  • Interesting that there are contrasting talks
    • "Databases for Scientists" and "Scaling SQL" both contrast to Hive and Pig, wrt MapReduce.
    • "Getting it out there" (JavaScript for webviz) contrasts with Bokeh (Python to auto-generate JavaScript) and IPython Notebook.

In [3]:
def f(x):
    return (x-1) ** 2

import scipy.optimize
scipy.optimize.minimize_scalar(f)


Out[3]:
  fun: 0.0
 nfev: 5
  nit: 4
    x: 1.0

In [3]:
from IPython.core.display import HTML
def css_styling():
    styles = open("styles/custom.css", "r").read()
    return HTML(styles)
css_styling()


Out[3]:

In [2]:
%autosave 10


Autosaving every 10 seconds