12.6 release

Hi,

When will be the official 12.6 release available? Could we expect to get it before the end of July?

thanks!

Hi pilot117,

I haven’t gotten an update today, but know it should be out very soon.

  • Mat

I’m eagerly awaiting 12.6 – I have some code that uses regular OpenMP pragmas of firstprivate and want to see how it performs under OpenACC. Any updates or beta versions available are welcome!

Hi Everyone,

I was told by our Compiler Manager that 12.6 for Linux will be given to our Webmaster today for posting on pgroup.com. Though, I’m not sure exactly when today. Note Windows and MacOSX will follow later once they have finished final QA testing.

  • Mat

Hi Mat,

great, some of the updates are very helpful (complex sin and cos in particular).

Is there any hope to get all intrinsics to support complex numbers in the near future?
(in particular acos, asin, tan)

Thanks, Jan

Hi Jan,

Looks like we did get the “degree” intrinsics (asin, tan, etc) into 12.6, but only for reals and double precision. I put in a feature request (TPR#18845) to have complex version added.

  • Mat

Hmmm… acos, asin, atan, atan2, cosh, sinh, tan, tanh are only defined for real arguments, not for complex.

We have not implemented the degree versions of complex versions of cos, sin, etc., on the host or on the accelerator. We are looking into this.

Hi Michael,

For example, the tan of complex values is defined as here:
http://planetmath.org/encyclopedia/9074.html

I currently compute it in a device subroutine like this:

z  = -cis_dev*(EXP( z3 ) -EXP(-z3))/(EXP(z3)+EXP(-z3))

where

cis_dev=CMPLX(0.,1.)

I have noticed that pgfortran on cpu does not have all intrinsics implemented for complex values. I am pretty sure that the intel fortran compiler has at least tan.

For acos and asin, see here:
http://planetmath.org/encyclopedia/GoniometricFormula.html

I currently compute acos in a device function like this:

zrp1 = REAL(z,SP)+1._SP
zrm1 = zrp1-2._SP
zi = AIMAG(z)
zizi = zi*zi
a1 = 0.5_SP*SQRT(zrp1*zrp1 + zizi)
a2 = 0.5_SP*SQRT(zrm1*zrm1 + zizi)
a = a1+a2
b = a1- a2
IF(zi >= 0._SP)THEN
   z = ACOS(b) - cis_dev*LOG(a + SQRT(a*a - 1._SP))
ELSE
   z = ACOS(b) + cis_dev*LOG(a + SQRT(a*a - 1._SP))
ENDIF

I am sure that my implementations are not very efficient, so it would be great to see these supported on GPUs.

Thanks, Jan