Hey guys. I'm doing research on complex systems for a physics PhD project and am wondering if OpenCL is worthwhile for me to learn for that purpose. My time is somewhat limited and I know the topic is challenging, so I don't want to commit a lot of time if it's not particularly well suited. For those not familiar, "complex systems" are characterized by many simple things interacting with one another locally to form emergent complicated behavior globally. A simple example: ants finding food or a school of fish swimming together, all without central coordination/synchrony; or a brain of many neurons interacting to form the mind. These are highly parallel processes. However, it sounds like GPUs or OpenCL are good at the parallel part, but not so good at the interaction part. So imagine you have your fake ants wiggling around looking for food and each-other. Unless there's a more clever way I haven't thought of, each ant has to be checking if it's colliding with every other ant after each step. Could this be parallelized appropriately to get benefits of GPUs/OpenCL? Or will the problem of having to check and then potentially interact with other ants make this a case where the CPU and GPU would perform comparably? Thanks!