Implement a Windows multithreaded utility that performs matrix multiplication - C code.
- Utility name = Project name = MatrixMult
- Execution will be as follows: MatrixMult C:\[url removed, login to view] C:\[url removed, login to view] C:\[url removed, login to view]
- 2 first arguments – files containing the input matrices A & B in the specified format
- You may assume you have required permissions to access the files
- 3-rd argument – output file to hold the multiplication result in the same format as the input.
- You should override the output file in case it exists.
- In case of an I/O error or content error (such as badly formatted number or != ) you should output an error message and exit with error code 1.
- You may use c-library functions to deal with output, files, memory allocation etc, but the thread creation and manipulation as well as the synchronization must be performed through system calls.
- No external threading libraries (such as TBB, OMP etc.) are allowed.
- Double precision variables (double) should be sufficient for your computations.
- No more than 20 simultaneous threads are allowed
- To show the user that some progress is made, each 100 result cells (in the destination matrix) you should print “.” on the screen
- No new line etc is required just use printf(“.”);
- No more than 50 rows of the destination matrix are to be held in the process memory
- Flush output to the file once you have results (not necessarily 50 rows, you can do earlier but no more than 50)
- The tool should exit immediately upon completion with exit code 0.
An example of file C:\[url removed, login to view]:
1 1.2 111.0
-3 4.8 [url removed, login to view]
[url removed, login to view] [url removed, login to view] -2
10 5.4 [url removed, login to view]