1. Tim Creech
  2. scaf


Tim Creech <tcreech@umd.edu>, or <tim.creech@nasa.gov>


Repository contains only bare autotools inputs. Run the following to generate standard configure/Makefile stuff:

autoreconf --install

NOTE: This implementation of scaf requires zeromq and PAPI. PAPI is generally
the largest barrier when porting to a new system. Be sure to specify the
locations of PAPI and zeromq with CPPFLAGS and LDFLAGS to configure.

Then run this to build a source tarball to distribute:
make dist

Of course, you can also do the standard ./configure && make install.

- x86_64 on Linux, including 2x Opteron 6212s (16 threads), 2x Nahalem Xeons (8 threads), Xeon Phi 5110P*, and SGI UV 2000 (512-1024 cores)
- TileGx on Linux (36 cores)
- Sparc T2 on Solaris 10 and 11 (64 threads)*


Patch GCC sources (patch is for 4.4, seems to work fine on at least 4.6 too). libgomp in GCC 4.9 has been significantly reworked, and the patch may require some massaging to get it to apply. An untested patch for 4.9.2 is included in ./patches .

Rebuild with configure and 'make all-target-libgomp'.
I haven't figured this out 100% yet, but you might have to grok the Make output and manually rerun the linker to get a libgomp.so which depends on your libscaf.so, which should in turn depend on libzmq.so. If it turns out these layers of dependences aren't supported then I'll have to figure something else out. (Like linking in libscaf and libzmq statically into libgomp?)


In 2015, the SCAF codebase was cleaned up to make it more tolerable for public consumption. (The simplifications shrank the codebase by about 30%.) This included the following changes:
- removed SunOS support, due to lack of PAPI SunOS support
- removed support for KNC/Xeon Phi and ICC OpenMP runtime
- removed support for ZeroMQ 2.x and older

If anyone would like to see any of these features reintroduced, they should probably be rewritten more properly. However, feel free to contact the author or roll back in version control to see how they were originally implemented.