Pete Wyckoff


A catalog of research results. Click here.


Some projects have their own web pages with perhaps other publications too.


Interface for parallel program launch from a PBS job, with support for jobs using MPICH/GM, MPICH/P4, LAM, EMP, and (none) parallel message passing libraries. More details.

PBS patches

Gigantic set of patches applied at OSC to give a working PBS, based on the last usable release, OpenPBS-2.3.12. Suggest you look at newer Torque distributions instead of this old stuff. But here are some details for the curious.

Ethernet message passing (EMP)

Host-offload OS-bypass MPI message passing for Alteon Tigon2 gigabit ethernet NICs. Details.
Generic tools helpful in writing firmware for Alteon Tigon2 NICs. Details.

Audio forwarder

Enables the use of a soundcard on a remote machine by forwarding local system calls over the network. More details.


Bobnet is a (legacy) low-latency message-passing protocol for ethernet designed for use as the high performance networking software in cluster computing. More details.

GM static mapping

How to make GM do static mapping of a Myrinet network. Good for scalability. Ancient details.

Linux patches

Tags generation

For sufficiently modern versions of Exuberant ctags, you can generate a quite useful tags file for the Linux kernel source. First, use an "ignore" list otherwise you get a couple hundred tags for __init, and none for ace_init, e.g. My current version is here, and I keep it in /usr/src/kernels.

Next, the wonderful editor Vim doesn't read my mind quite well enough. When I want to see the tag for "page", for example, I really want to look at the definition of the struct in include/linux/mm.h, not at any of the 16 other places which declare a variable struct page *page;. So I run the tags file through a perl script which percolates those interesting items to the top when there are multiple entries for the same identifier. It lives somewhere in my path.

Finally, I modify the Makefile to generate tags with these modifications, putting compatibility for non-exuberant ctags in the oldtags target. Here's a
patch against linux version 2.6.29-rc1 and a bunch of older ones:

patch against linux version 2.6.28 and patch against linux version 2.6.26 and patch against linux version 2.6.22 and patch against linux version 2.6.19 and patch against linux version 2.6.18 and a patch against linux version 2.6.16 and a patch against linux version 2.6.15 and a patch against linux version 2.6.14 and a patch against linux version 2.6.9.

Starting with 2.6.18, I dropped the bit that cleaves out other architectures and the nommu files. It's probably better to see all the tags if you're trying to develop code that will work across all arches. Starting with 2.6.29-rc1, I include the ctags-ignore file and sort-tags script in with the patch, putting them in the scripts/ directory along with the recently refactored linux script.

(Ancient) VM_LOCKED stack pages should be present

VM segments marked LOCKED, perhaps by mlockall(MCL_FUTURE), must have physical pages wired into memory at allocation time. This currently happens for the mmap (or brk) case, but not for the stack growth case.

The following patch to expand_stack copies the code at the end of do_mmap_pgoff by calling make_pages_present for the newly allocated stack pages. It also checks against the resource limit for locked pages which was previously ignored for stack allocations.

Patch against 2.4.0-test5.

(Ancient) Acenic debugging

Patch to acenic driver available to implement firmware debugging. A little code ace_ioctl is included which shows the firmware trace back, among other functions. The latest version of the stock driver is available in the linux kernel.

Note: do not undefine TX_HOST_RING without also changing TX_RING_ENTRIES back to 128.

The STP-enabled version of acenic includes a different version of the same functionality, and can be found here.

Patch against 0.49-test2.

Last updated 28 Jan 2009.