Exercise 5.1: What is the significance of the value printed? Exercise 5.4: What are the identity values for: && || & | ^ Exercise 5.5 a. What is the output of the following block of code when run on Bleeblon? int i; float sum = 0.0; for (int i=0; i < 4; i++) sum += a[i]; printf("sum = %4.lf\n", sum); b. What is the output of this code on Bleeblon if thread 0 handles interations 0 and 1, and thread 1 handles iterations 2 and 3? int i; float sum = 0.0; #pragma omp parallel for num_threads(2) reduction(+:sum) for (i=0; i < 4; i++) sum += a[i]; printf("sum = %4.lf\n", sum); Exercise 5.8: How can you eliminate the dependence on a[i-1] in the calculation of a[i]? (You may either give code or explain in English as long as you are detailed and precise.) Question 1: List two differences between CPU computing and GPU computing: a. b. Question 2: In OpenCL, we write two programs: one that runs on the GPU and one that runs on the CPU. What name do we use for each of these programs? GPU: CPU: Question 3: What function can an OpenCL kernel program call to obtain the id of the currently running thread? Question 4: What function does an OpenCL driver program call to build a kernel program? Question 5: What function does an OpenCL driver program call to create a memory buffer on the GPU device?