What do you mean when you say you only have access to one thread on your shared server? If you have access to multiple CPU cores then you should be able to use julia’s threaded parallelization.
I think you might be mixing up shared memory parallelization using OS threads, which is what julia’s Base.Threads module does, and CPU hyperthreads.
In parallel programming, threading usually refers to parallelization within a single OS process containing multiple OS threads, whereas distributed memory computing uses multiple processes. How these OS threads or processes map to physical or logical CPU cores is a separate matter. Confusion sometimes arises because modern CPUs often have multiple logical cores, which are sometimes referred to as CPU threads. Here’s a good stack exchange post that gives a brief explanation of the difference between physical and logical cores:
If you don’t need a specific method of BlackBoxOptim.jl but would be fine with CMA-ES you can use it with option parallel_evaluation. The package should be registered in the next few days.
Thanks for the feedback–your hypothesis was correct about getting mixed up between physical vs logical cores.
What I don’t understand, then, is why NThreads=Threads.nthreads() on the shared server, I only see one! It seems like I should see many, as I know the shared server has many cores (and a friend is running parallelized python code on the same server)!
By default, julia only runs single threaded. You need to set the number of julia threads you want to run by setting the JULIA_NUM_THREADS environment variable before launching julia. For example, on Linux you can do the following: