INF205/lab_2/12_answer.md

989 B

What did work:

Removing a double calculation when step

I changed config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]+ 0.25*previous[(i+1) % size]; to config[i] = 0.5*previous[i] + 0.25*previous[(i-1) % size]*2; in step This made all the improvement as far as i can tell

In shift_centre_to_origin compute the ratio before the for loop

const float ratio = sum/size;
for(long i = 0; i < size; i++) config[i] -= ratio;

This did not make a noticable difference

What did not work and actually made it slower:

  • Trying to find a fancy way to get a random bool in stochastic_unit_step
  • Using the std::minmax_element function in elongation
  • Changing the step function to be a void that changed the array directly made it about 8 secounds slower

Compiler optimizations

I treid these flags: -Ofast -march=native -flto -fno-signed-zeros -fno-trapping-math The improvements were in the margin of error

Speedup

I got at best a 1.1 times speedup. See 12_speedup.png