We ship our applications with a number of binaries for different GPUs. The binaries are produced by compiling source OpenCL files with clBuildProgram ("-fno-bin-source -fno-bin-llvmir -fno-bin-amdil -fbin-exe") in a context created with the CL_CONTEXT_OFFLINE_DEVICES_AMD flag.
When compilation is done on a machine without AMD GPU or with HD 7970 installed, the resulting program does not produce correct results when running on a machine with R9 290.
However, if the compilation takes place on the machine with R9 290 installed, then the program is working correctly.
Both machines are running Catalyst 14.12.
We looked at the binaries generated for Hawaii on machines with different GPUs and found that they are very different, while binaries for other GPUs are quite similar in size. We also tried to to build OpenCL with "-fbin-amdil" and "-fbin-llvmir". For the AMD IL options, the resulting binaries were significantly different in size when building on machines with different GPUs. In both situations binary produced on the machine with HD 7970 was not working correctly on the machine with R9 290.
Is offline compilation still working correctly in Catalyst 14.12?
Thanks for reporting the issue. I'm doing some experiments regarding this. Once done, I will get back to you.
Regards,
Any news on this one?
Thanks, Tim
Hi Tim,
My apologies for this delayed reply. Actually I did some experiments and found similar observation as yours. Though I used command line arguments ("--dump" and "--load") supported by the APP SDK's OpenCL samples to generate and consume the device binary. My observation was somewhat unexpected. I shared my observation with some experts. As per their suggestion, I need to do some more tests before filing an bug report against this issue. I need to know something from you. Do you face this problem only with Catalyst 14.12 or with any earlier versions of Catalyst? If its working fine for any earlier driver, could you please mention the catalyst version?
Regards,
Hi Dipak,
on Catalyst 14.9 everything is working smoothly. The binary produced for Hawaii on a machine with R9 290 is the same, as the one produced for the same GPU on a machine with HD 7970. In fact, the same binary is produced for Hawaii on a machine with HD 7970 when both 14.9 and 14.12 are used.
The application built on machine with HD 7970 produces correct results on a machine with R9 290 when Catalyst 14.9 is in use, but wrong results with 14.12.
Regards,
Tim
Thanks for sharing the information. I've filed an internal bug report against the issue. I'll keep you updated.
Regards,
No news on this issue?
Dipak is working on other tasks this week, I'll make sure he's reminded about this when he gets back next week. Just in general, a fix for a bug in any product won't appear until the next public release at the earliest.
Hi Tim,
This issue has not yet been resolved. The concerned team is still working on it. If I get any update, I'll share with you.
Please keep patience.
Regards,
As of Catalyst 15.4 beta the error still persists.
Just checked the latest available 15.5 beta and regrettably found out that the error remains unfixed.
This seems to be fixed in 15.7.