#include <stdio.h>
#include <stdlib.h>
#include <dispatch/dispatch.h>

#include "matrix.h"

int main(int argc, char *argv[]){
	int index;
	dispatch_queue_t globalQueue;
	dispatch_group_t grp;
			
	initialize(argc, argv);
	
	globalQueue = dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
	grp = dispatch_group_create();
	
	for (index = 0; index < size; index++) {
		dispatch_group_async(grp, globalQueue, ^{
			int position, start, stop, line, column;
			start = index * range;
			stop = start + range;
			for (position = start; position < stop; position ++) {
				line  = position / DIMENSION;
				column = position % DIMENSION;
				matrixProduct[line][column] = scalar_product(matrixA[line], matrixB[column]);
			}
		});
	}
	dispatch_group_wait(grp, DISPATCH_TIME_FOREVER);

	return 0;
}