pow : crash

pow : crash

Hi,I use the pow function in my kernel and when I dofloat v = pow(0.00001f, 1000.f);I got a crash !I use a lot this function and don't know if it is due to my context !But this simple line make my soft crashing with the last SDK :-(

http://spectralbattle.wordpress.com/
7 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.

Bad news,The problems sounds related to the context, when I use this method somewhere else... no problem !So, how can I help you to debug the problem ?Thanks

http://spectralbattle.wordpress.com/

Hi,

Can you provide small reprodusor of this issue, few host lines and small kernel?

Thanks,
Evgeny

I think that the problem is more complex than this !I can't provide you a "simple" reproductor ! It is what I say when I tell you that it is a bad news :-(In fact, the crash occur when I add the simple following line in my software :float v = pow(0.1f, 1000.f);in a specific function !I have also try to replace the pow with :inline float POW(float value, float exponent){ for(uint i = 0; i < exponent; i++) value *= value; return value;}And it works ! So there is something wrong with the SDK !So, I can give you access to the full code, but you will have to invest time to debug this way... it is a big application with a lot of OpenCL code !?

http://spectralbattle.wordpress.com/

I have also try the following methods, but all failed :
#define POW(VALUE,EXPONENT) powr(VALUE,EXPONENT)#define POW(VALUE,EXPONENT) pow(VALUE,EXPONENT)#define POW(VALUE,EXPONENT) pown(VALUE,EXPONENT)#define POW(VALUE,EXPONENT) exp(EXPONENT*ln(VALUE))The problem sounds to be in the 'ln' function (not the exp I think)

http://spectralbattle.wordpress.com/

I have also try :#define POW(VALUE,EXPONENT) exp(EXPONENT*log1p(VALUE-1.f))And it works !Because if I remember :pow(x, exponent) = exp(exponent * log_e(x))so, because log1p(x) = log_e(1 + x) I just have to remove 1 !Of course it is just a fix, you still have a problem in the SDK ! For sure a lot of peoples will use it !

http://spectralbattle.wordpress.com/

I have finaly fixed it like this :#define POW(VALUE,EXPONENT) exp(EXPONENT*log(VALUE))What can I do to help you ?

http://spectralbattle.wordpress.com/

Kommentar hinterlassen

Bitte anmelden, um einen Kommentar hinzuzufügen. Sie sind noch nicht Mitglied? Jetzt teilnehmen