Can I use GPUs to increase the model speed on the campus cluster?

My model currently can run on the cluster using 120 cores and 32GB memory and it takes 1 day and 10 hours to run through 1 parameter. I have 3 that i need to run through. I have access to GPUs on the cluster. Can I use them to speed up the simulations? I’ve never done that before, so would need some guidance. I looked up on the documentation- but couldn’t find anything in the behaviour space page or the cluster page about using GPUs. If you have resource, please link. Thank you!

Hi @pandora,

I’m not sure if there are any tools for more directly running NetLogo on GPUs, because Java is meant to be run on a CPU. I think the best approach for now might be to look for ways to speed up your model on a CPU. Could you provide some details about what your model does and why it might be taking so long? You can probably offload some expensive computation with something like the Python extension, which would be able to leverage the GPU more effectively.

Isaac B.

well, at every time step, the model has to check 420 nodes, and 1900 cars over how many routes are that day to see if any one is infecting the other. I’ve significantly decreased the time already with some programming changes. I really don’t know what else I can do. now that I have that 1 parameter down, I can just narrow that down to the values that make the most sense. And i’ll work through the other ones a little at a time. I showed the CC guys the part of documentation about splitting up the experiments in the batch files, but they suggested against that and to use their own batch array system. Thank you for the help Isaac.
Pandora

NetLogo cannot parallelize to GPUs, only CPUs. Your feasible options for speeding things up are:

  • Get more runs happening in parallel
    • By getting access to more CPUs at once
    • By manually splitting the BehaviorSpace configuration to make more-efficient use of the CPUs available to you
  • Shrink the parameter space
  • Increase the speed of the model
    • By finding performance bottlenecks and substituting in faster code
    • By scaling down the model

Are you aware of the profiler extension? If not, it can be very helpful to find the part of your code that is the slowest and then try to specifically optimize that.

2 Likes