.. (לתיקייה המכילה) | ||
What is "MegaInteger"? | |
In this assignment "MegaInteger" means 2^20 integer numbers, so 16 megaintegers is 2^24 integers. |
Where to write the output of the calculation? | |
The functions you write receive "int *a" as a second argument. Use this as both input and output. Note: no printing is allowed! |
After compiling , how can I run and test my code? | |
you should use the run.sh file attached with the hw. >> chmod +rwx run.sh >> sh run.sh [Number of threads] [size of array] [1 -for simple , 2-for fast] |
May we modify the Makefile ? Speed is important and the original Makefile compiles our code without any optimizations. | |
No, we will use our make file to compile and test your code , so that won't help. |
can we use any other function that weren't covered in class? | |
you can use only materials covered in class. |
What is the expected solution performance? | |
Denote the number of physical CPUs/cores in a computer as P. For large inputs (e.g. 16M) your solution (both versions) should scale well up to P at least. It may underperform for small inputs (why?). fast_parallel_walsh() should be able to calculate up to 16M integers, and should be able to run up to N=128 threads at least. Dynamic memory allocations should not depend on threads number. For large inputs (e.g. 16M) fast_parallel_walsh() should run faster than our serial version for any number of threads 2≤N≤P (N is a power of 2). It is possible to write a parallel version which runs faster then a serial one on large inputs for any practical N. |
Where is the "Comparison successful" message? | |
New test code only reports errors. If you don't get a error, your implementation output is correct. No special message is printed in this case anymore. |