I have the following loop in Mata
This should be executable in parallel. Each thread takes, say, 50 observations and returns the sum, and at the end I collect each result. Something like
But have the three code cunks execute in parallel. Is such a thing possible? Workarounds and hacks welcome.
Thanks!
Code:
mata: result = 0 for (i = 1; i <= 100; i++) { result_i = // Operations using the i-th observation result = result + result_i } end
Code:
mata: result_thread1 = result_thread2 = 0 // Thread 1 waitfor_thread1 = 1 for (i = 1; i <= 50; i++) { result_i = // Operations using the i-th observation result_thread1 = result + result_i } waitfor_thread1 = 0 // Thread 2 waitfor_thread2 = 1 for (i = 51; i <= 100; i++) { result_i = // Operations using the i-th observation result_thread2 = result + result_i } waitfor_thread2 = 0 // Collect while (waitfor_thread1 & waitfor_thread2) {} result = result_thread1 + result_thread2 end
Thanks!