Multipol is a library of distributed data structures, designed to ease the programming of "irregular" problems on large scale, distributed-memory multiprocessors. Multipol structures are divided into state structures and scheduling structures. The state structures include hash tables, sets, and trees, and use a combination of replication, partitioning, and software-controlled caching for good locality. The scheduling structures are various kinds of queues that provide good load balancing without destroying the locality required by the state structures in the application.