3 ms·
I worked with a grad student in college who was building models in NetLogo for modeling drug overdoses. It was pretty janky and slow. They had to run the model
by rootoor 8y ago
I worked with a grad student in college who was building models in NetLogo for modeling drug overdoses. It was pretty janky and slow.
They had to run the model millions of times so I had to build NetLogo on our HPC cluster running Rocks OS and write some magic config in slurm to run it and it took for ever because about 1/3 of the jobs would fail because they ran out of ram and would need to be run again.
I’m not sure how much of it was the grad students fault or NetLogos fault but either way, the experience was quite painful
- frankling_ 8y agoAs for the performance aspect, these kinds of simulations (typically using fixed time steps and with per-agent decision-making) are a natural fit for many-core devices. We recently did a survey on that subject [1]. There is a lot of work being done along these lines right now. Some groups are also trying to target sequential, parallel and, say, GPU execution from the same model specification language, which could actually help with the usability of running such simulations in practice. [1] https://arxiv.org/abs/1807.01014 https://arxiv.org/abs/1807.01014
- veddox 8y agoThis is interesting. We've been thinking quite a bit about parallelising our model, but haven't managed it yet. The problem is that although our agents are mostly independent of each other, they all depend on the shared state of the world (and modify this, too). Therefore, if we were to use a multiprocessing setup, we would have to be able to lock the world object when a process is writing to it; and furthermore, find a way to pass it around in memory so that all processes have read access to it. While we know that it should be technically doable, the latency overhead of the latter has proven prohibitively high.
- frankling_ 8y agoYeah, for some models, especially small-scale ones, it can be hard to get a performance gain. There are actually ways of avoiding the locking, e.g., by staging the desired actions and then carrying them out afterwards, resolving conflicts as needed. We actually have a paper on this as well, but I'm going to stop pushing my research at this point ;)
- flatline 8y agoI did a couple projects in undergrad using it. I had to implement my own trig functions from scratch! I think they had sin and cos and that was it? It’s a really a neat little environment for throwing together a proof of concept quickly, not a system in which to do computationally intensive work.