It should not read global memory again. We already enable such kind of optimization pass in LLVM. And (a*b+c*d) should not calculate again. This is common-subexpression. Clang should do it easily. But I am not quite sure whether clang is affected by -O2 or -O0. Anyone know details?
To check specific kernel. You may need to ‘export OCL_OUTPUT_LLVM_AFTER_GEN=1’ and build your program again to get the LLVM IR. From: Beignet [mailto:[email protected]] On Behalf Of 彭席汉 Sent: Thursday, February 12, 2015 4:40 PM To: [email protected] Subject: [Beignet] a question about default optimize option when building Hi: My CL kernel program looks like as follow: __global unsigned char *p; int a, b, c, d; res1 = *p * (a*b + c*d); <some code here> res2 = *p * (a*b + c*d + 1); If I use default build option, for res2, what will EU do? read global memory for pointer p again and do computing of "a*b + c*d" again?
_______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
