When performing CPU profiling everything works fine. Switch to GPU profiling and the CodeXL will override the applications locale selection into whatever LC_ env vars state and thus ruining float parsing as the separator becomes a comma instead of period.
Steps to reproduce: Do a fresh install of Xubuntu/Ubuntu. Select timezone into somewhere in Europe so it'll automatically set LC_ env vars to whatever locale there is. Install AMD drivers and CodeXL. Profile a program that either prints floats or parses them using the standard C library functions. Observe how in CPU profiling floats print as they normally should under the default C locale. Observe how in GPU profiling CodeXL overrides the locale selection of the program to follow the environment variables and thus changing the parsing style.
Workaround: Change all LC_ env vars to en_US.UFT-8, or whatever you want to force your software to use.
It would be more defensible if it would override it in all cases. But as it does it only on GPU profiling it makes it really painful to debug where the issue is.
Make the catalyst control center on Linux have a language selection.
Thanks for the report, the clear reproducibility instructions AND workaround. I have forwarded to the engineering team to ensure they are aware. The feature request as well for the Catalyst control center.
I wish to retract my claim that it would be more defensible if it would happen also in CPU profiling. As the C specification is quite clear on the issue (C11 Specification 220.127.116.11 paragraph 4) . If no locale is selected by the program then it's equivalent to having the "C" locale set. So the current GPU debugging breaks explicitly C conformant programs. It should be the same in C++.
So the only possible fix is to make GPU profiling not leak it's locale into the process under examination.
We have tried on several systems to reproduce the issue with the GPU Profiler and so far have been unable to reproduce the issue. Here's what I tried on my Ubuntu machine
Open the Language Support app
On the Regional Formats page, I selected "Deutsch (Deutschland)" for the "Display numbers, dates, and currentcy amounts in the usual format for" setting
I clicked the "Apply System-wide" button, and rebooted the system
After logging back in, I ran an application that write floating point values to stdout.
I see no difference in the output when running the app standalone or within CodeXL.
CodeXL QA also tried to reproduce this on several of their systems.
I took a look at the GPU Profiler code, and I think I know what might be causing the issue you're seeing, but until I can reproduce the issue, I can't confirm that any fix I put in place is correct.
Perhaps, you can share how you are changing the locale on you Ubuntu system and perhaps also share the application you are using for testing.