If you have 20 cores to work with, your bottleneck will be using your CPU.
If you already have single-core code worked out in QB64, I'd suggest you try to find a way to parallellise it, so it can be run with a command line parameter, then run 30-40 instances at once to max out your CPU load to full. If you're processing directories, that's a simple way to pass the parameter to your QB64 app. You can use the command line tool xargs to specify how many of the directories to pass to your QB64 app at once, it's handy for quick parallellisation tasks.
What is your code actually doing? Something that can be broken down into a bunch of pieces, or does later code rely on earlier code?
I'm not sure if QB64 supports calling an app in the background, but it should be doable by adding a "&" after the command to place it as a background job on GNU+Linux, possibly doing it as ( mycommand & ) to force it into a subshell. If you're on Windows, I think the "START" command can launch an app in the background, so it detaches from your app. Then you just need your app to monitor for the sub-processes to finish. An easy way to do this is to use filenames like SUB_00001.TMP while it is processing a data set, and when it completes rename it to SUB_00001.TXT or similar. Then your app just waits for .TXT files to appear, then does something with the results.