While working for LLNL in Maya Gokhale's Storage Intensive Supercomputing (SISC) project, I helped evaluate several new technologies that vendors wanted LLNL to buy. I wrote this status report to provide more information about work we did with Fusion-io and XtremeData.
The Storage Intensive Supercomputing (SISC) project at Lawrence Livermore National Laboratory is an effort to improve the performance of data-driven applications through advances in system architectures. The Sandia contribution to this project during the summer of 2008 focused on the task of evaluating how data can be moved efficiently between disk and processing resources that are of interest in the SISC project. Specifically, we focused on a commercial flash-memory hard drive from Fusion-io and an FPGA accelerator from XtremeData.
Flash memory experiments were performed using Fusion-io's ioDrive. The ioDrive is a high-performance flash-memory device that is capable of delivering close to 700 MB/s of read performance and over 100K I/O operations per second (IOPS) to an end application. After observing that the ioDrive's performance improved when multiple I/O operations are issued at the same time, we developed a set of threaded data-analysis microbenchmarks to determine whether we could exploit this characteristic to improve application performance. In all four examples we found that flash memory boosted performance (2x-200x) and in general enabled applications to make better use of a multicore environment. We conducted additional data transfer experiments to gain a better understanding of the ioDrive's current capabilities as well as to estimate the complexity involved in utilizing different I/O techniques.
We then conducted data transfer experiments between different components of the XtremeData system. This system employs an XD1000 FPGA accelerator that plugs into an Opteron processor socket. We modified the hardware reference design for the XD1000 and built a small number of hardware configurations for measuring how fast data can be exchanged with the FPGA. After numerous attempts, we concluded that it was not possible to move data directly between the ioDrive and the XD1000 due to limitations of the FPGA's HyperTransport core and the Linux kernel's restrictions on direct data transfers. Instead, we focused on modifying the software for a previous n-gram text classification application to perform one-copy transfers between the ioDrive and the XD1000 in a threaded, double-buffered manner. Ultimately we were able to boost the overall processing rate