Software

Overview

The SLAAC approach to scalability for Adaptive Computing Systems (ACS) leverages modern cluster-computing techniques.  The cluster computing community uses workstations and COTS high-speed network "back-plane" to build high-performance parallel systems. Therefore, a logical way to build scalable parallel ACS systems is to cluster ACS-accelerated workstations. The SLAAC team is currently developing a scalable API and runtime software to support application control of these network-distributed multiple-host multiple-board ACS systems.

gothere.gif (982 bytes) More information on the SLAAC ACS API, including the latest draft of the specification can be found on the Virginia Tech Tower of Power home page. 

jump_arrow.gif (856 bytes)

Programming Model

The programming model defined by the SLAAC ACS API defines a distributed system of hosts, nodes, and channels.

  • Hosts are user applicaton-level processes on the network responsible for controlling the nodes using the ACS API.  At least one host process is required to control a system.
  • Nodes are hardware resources (typically FPGA accelerator boards) that are allocated and controlled by hosts.  Depending upon the implementation, a node may have an associated run-time control process responsible for the management of the device.
  • Channels are logical connections between the hosts and nodes across the network fabric that permit data to stream through the distributed system.  The endpoints of channels are logical or physical FIFOs. 

wpe14.jpg (27080 bytes)


jump_arrow.gif (856 bytes)

System Creation Functions

  • ACS_Initialize
    • Parses command line.
    • Initializes globals.
  • ACS_System_Create
    • Allocates nodes.
    • Sets up channels.
    • Creates an opaque system object in host .

wpe1C.jpg (10699 bytes)


jump_arrow.gif (856 bytes)

Convenience Functions

Convenience functions provide generic interfaces for operations that are common to most ACS compute devices. Device-specific implementations of these convenience functions are supplied in device libraries. A convenience function uses the system and node arguments to identify the correct device-specific routine to call.

 


jump_arrow.gif (856 bytes)

Streaming Data Functions

In addition to the explicit data transfer operations such as ACS_Write and ACS_Read, this API supports implicit data transfer operations using persistent channels. ACS_Enqueue and ACS_Dequeue provide a mechanism for the host application to insert streaming data into and receive streaming data from the system.

  • ACS_Enqueue()
    • put user data into FIFO
  • ACS_Dequeue()
    • get user data from FIFO

 

wpe1D.jpg (19124 bytes)


jump_arrow.gif (856 bytes)

Memory Access Functions

  • ACS_Read()
    • Reads block of memory from node's memory address space into user buffer. 
  • ACS_Write()
    • Writes block of memory from user buffer into node's memory address space.
  • ACS_Copy()
    • Copies memory from (node1, address1) to (node2, address2) directly.
  • ACS_Interrupt()
    • Generates an interrupt signal at node.

     


jump_arrow.gif (856 bytes)

Implementationswpe1A.jpg (11692 bytes)

Virginia Tech has implemented V1.0 of ACS runtime control library. Implemented in C++ (callable from C). Software: NT + MPI. Hardware: WildForce. Ports to Linux and VxWorks planned. Support for SLAAC1 and SLAAC2 boards planned. Tower of Power: 16-node cluster of PCs with WildForce boards on a Myrinet network at VT.

gothere.gif (982 bytes) More information on the SLAAC ACS API, including the latest draft of the specification can be found on the Virginia Tech Tower of Power home page. 

jump_arrow.gif (856 bytes)