P4 to Git Change 2019864 by axie@axie_opencl_pal on 2019/10/25 18:03:56
P4 to Git Change 2019864 by axie@axie_opencl_pal on 2019/10/25 18:03:56

	SWDEV-204995 - Linux Pro: Houdini18 Application hang is seen with pyro sample on OpenCL selection.
	The new Houdini application has around 286.6K byte TLS. In Linux, the TLS resides in thread stack. TLS is allocated and initialized during pthread_create.
	If command queue thread stack size is only 256k byte, pthread_create function failed with return value EINVAL.

	The above information is verified by this test:
	I printed out the address of a __thread variable. Then I printed out an address of a local variable. I confirmed both variables are in the same memory segment according to /proc/id/maps. This memory segment is same size of CQ_THREAD_STACK_SIZE and changed with this environment variable.

	The __thread variable is 286.6K byte away from the bottom of the stack but still inside the stack.

	I have added printf to verify function guessTlsSize can guess tlsSize correctly. And pthread_create succeeded in first invocation with tls size adjustment.

	Tests:
	1. Test houdini - PASS
	2. http://ocltc.amd.com:8111/viewModification.html?modId=128021&personal=true&tab=vcsModificationBuilds

	ReviewBoard: http://ocltc.amd.com/reviews/r/18175

Affected files ...

... //depot/stg/opencl/drivers/opencl/runtime/os/os_posix.cpp#47 edit

ROCm-Developer-Tools/ROCclr,ROCm-Developer-Tools/ROCclr