ActivitySim currently allows multiprocessing by breaking up the problem for individual components and then running these “chunks” in parallel. Doing this work requires the segmentation of the pipeline objects, such that each process can read from and write to the correct location. This process can be improved by leveraging the numba package’s multithreading capabilities, which takes care of the safe write problem. This can allow additional computing resources to be brought to bear to tasks with a multiprocessing segmentation.
ActivitySim currently allows multiprocessing by breaking up the problem for individual components and then running these “chunks” in parallel. Doing this work requires the segmentation of the pipeline objects, such that each process can read from and write to the correct location. This process can be improved by leveraging the numba package’s multithreading capabilities, which takes care of the safe write problem. This can allow additional computing resources to be brought to bear to tasks with a multiprocessing segmentation.