我有一个for循环,其中迭代计算i不依赖于前一次迭代中完成的计算.
我想并行化for循环(我的代码在java中),以便多个迭代的计算可以在多个处理器上同时运行.我应该为每次迭代的计算创建一个线程,即要创建的线程数等于迭代次数(for循环中的迭代次数是多少)?这该怎么做?
我的C代码中有一个for循环,如下所示:
for(i=0; i<100000; i++){
a[i] = simulate(); // simulate() function simulates some system
}
Run Code Online (Sandbox Code Playgroud)
我们看到每次迭代的计算都与其他迭代无关(元素的顺序a[]对我来说并不重要).我想使用多线程并行化这个for循环的计算.我不完全清楚如何在C中这样做?我有一台8处理器的机器,所以我可以并行运行8个线程.
我想使用Mersenne twister在c中生成随机数(0到1之间).我的代码如下:
for (i=1; i<=10;i++){
srand(time(NULL));
a=rand();
b=rand();
c=rand();
}
Run Code Online (Sandbox Code Playgroud)
即在for循环的每次迭代中,随机数将以当前时间播种,并且使用此种子我将在0和1之间生成3个随机数.如何使用mersenne twister?