我正在使用蒙特卡罗模拟的基础知识编写代码来对模拟算法进行基准测试 - 所以我正在生成一个随机系统(只是一个整数)并在随机生成的系统上运行模拟算法。我需要多次执行此操作,尽管这些算法在概念上相对简单,但它们需要几秒钟才能运行,因为它们包含许多循环。
for i=1:number of algorithms
for i=1:number of repeats
if algo = 1
//run the first algorithm [for loops]
if algo = 2
//run the second algorithm [while]
if algo = 3
//run the third algorithm [while]
每个算法的工作方式不同。第一个算法可以进一步分解为循环多次运行并选择最高分,所以我想即使该算法也可以是多线程的。另外两个制作多线程会复杂得多。
我的问题是如何将程序分成不同的线程。似乎有很多不同的方法可以解决这个问题,而且我对多线程非常陌生,所以我不知道什么是最好的。
选项 1:立即拆分线程并在每个线程上运行不同的算法。
选项 2:使用第二个 for 循环拆分线程,因此重复次数被拆分到不同的线程上。
选项 3:尝试将算法步骤分解为可以并行化的更小块