ICSI Speech FAQ:
6.6 Tell me about the SPERT boards.

Answer by: dpwe - 2000-08-08

Training the acoustic model is usually the slowest and most computationally intensive part of building a speech recognizer. At ICSI, the acoustic model is ususally a neural network, and so net training (via back propagation) is our bottleneck. Our neural nets consist of a very large number of elements in a regular arrangement, making operations on them amenable to vectorization (single instruction, multiple data).

To the rescue comes the SPERT board, a card that plugs into the once-standard S-BUS of Sun SPARCstations, providing a custom 8-way vector microprocessor (the Torrent T0) along wiht 8 MB of very fast RAM. Both the T0 and the SPERT board were designed at ICSI.

There are something like 34 working SPERT boards in existence, 20 of them at ICSI and the others spread around the world at our collaborators in Sheffield, Cambridge, Switzerland etc. The processor is in fact general purpose, but they are almost exclusively used for neural net calculations, via the QuickNet software.

QuickNet (including qnstrn and qnsfwd) is a package for training and running neural nets that runs on a variety of Unix platforms. However, it has also been extended with a set of fixed-point implementations that are able to make use of the special high-performance matrix libraries developed for the SPERT card. qnsfwd and qnstrn will attempt to run on a SPERT board if they are run with the cpu=spert option; be sure to specify mlp3_fx=true in order to use the optimized fixed-point routines.

When they first came into use in 1995, the SPERT boards were perhaps 2 orders of magnitude faster than other methods for training networks. A single SPERT board still trains something like 2-4x the speed of a 440 MHz UltraSPARC; perhaps the biggest advantage is the 8 MB of fast RAM, compared to the 512k-2MB L2 cache found on conventional processors. We have also assembeled a few MultiSPERTS, with 2-4 SPERT boards computing in parallel, with near linear speed-ups.

Installing and testing a SPERT board

The SPERT card simply plugs into the SBUS connectors on SPARCstations such as the SPARC-5, SPARC-10 and SPARC-20. The last Sun workstation to support SBUS was the Ultra-1 (later machines use the PCI bus).

When a board is first plugged into a machine, or after a fresh OS install, the machine must be brought up with "boot -r" to rebuild the device tree. "prtconf" should then list an "ICSI,spert" device or something like that.

The kernel driver needs to be installed. This is done by running the script /usr/local/spert/sun4-sunos5/drv/spertX-install.sh (or spert-install.sh for the 300-series SPERT cards with the PROM version "32r1"). After installing the driver (as root), you usually need to "chmod a+rw" (again as root ) the file in the /devices tree that is pointed to by /dev/spertctl0.

Basic functionality is confirmed by running:

/u/dpwe/sun4-sunos5/bin/t0devspert_temp -t -dev /dev/spertctl0

which returns the temperature (in degrees C) of the SPERT. This should be around 40; if it gets close to 60, you need to improve the ventilation - the driver shuts down the processing at 59.

A full test of the board functionality is performed by:

/u/dpwe/share/bin/t0spertcheck [-new] -dev /dev/spertctl0

(where -new is for the spert-install.sh driver). This runs a series of tests to verify each part of the processor and board. It takes about 10 minutes to run.

Previous: 6.5 How do I apply a previously-trained neural net to some data? - Next: 6.7 Tell me about the MultiSPERT systems.
Back to ICSI Speech FAQ index

Generated by build-faq-index on Tue Mar 24 16:18:16 PDT 2009