libflame is a dense linear algebra library designed and implemented at The University of Texas at Austin.
libflame has a shared-memory parallel runtime system called SuperMatrix embedded within it. SuperMatrix maps a majority of the dense linear algebra operations within libflame to a directed acyclic graph (DAG) and schedules the tasks within the DAG in parallel on multiple threads.
We have ported this runtime system to SCC using RCCE.
All matrix data is allocated using RCCE_shmalloc with uncachable hijacked shared memory on SCC. The DAG is generated, and tasks are scheduled to the different cores using the SuperMatrix scheduling algorithms. Mutual exclusion is obtained using RCCE_acquire_lock and RCCE_release_lock.
libflame is available for download at: http://z.cs.utexas.edu/wiki/flame.wiki/libflame/
Use the nightly snapshots to get the latest version of the software for which the SCC port will be available as of the morning of April 15, 2011.
To build libflame, use the configuration:
./configure --enable-scc --enable-supermatrix --disable-autodetect-f77-ldflags --disable-autodetect-f77-name-mangling --enable-external-lapack-for-subproblems --enable-external-lapack-interfaces --with-cc=icc --with-ar=ar --with-ranlib=ranlib
Then just compile with the command:
A test driver for SCC is included within the library at: src/base/flamec/supermatrix/test/chol/scc/
Make sure to download and link to the latest version of RCCE to run the test driver.