physx2.8.4 NX_CLF_HARDWARE

I try to use GPU accerlation,
I set "SDKDesc.flags &= ~NX_SDKF_NO_HARDWARE;" when I created my SDK and used
NxHWVersion hwCheck = gPhysicsSDK->getHWVersion();
if (hwCheck == NX_HW_VERSION_NONE)
{
cout<<"\nWarning: Unable to find a PhysX card, the cloth will be simulated in software.\n\n";
}
to check if GPU is set or not. then I create a cloth fall down because of gravity.
I set
"NxClothDesc desc;
desc.flags |= NX_CLF_VISUALIZATION ;
desc.flags |= NX_CLF_BENDING;
desc.flags |= NX_CLF_HARDWARE;"

if I don’t set "desc.flags |= NX_CLF_HARDWARE;", Everything is fine. the cloth fall down and stay on the ground, but if I set "desc.flags |= NX_CLF_HARDWARE;" it will hit ground then it rebound to very high altitude and disappear. It seems very strange, What happen in my program?

You might want to look at the SampleCloth to copy the HW cloth properties. Hooking up to PVD is useful to track what’s going with your cloth.

The HW cloth properties I find from SampleCloth are

NxPhysicsSDKDesc desc;
        desc.gpuHeapSize = 8;
	desc.meshCacheSize = 0;
	desc.flags &= ~NX_SDKF_NO_HARDWARE;
	NxSDKCreateError errorCode = NXCE_NO_ERROR;
#if !defined(NX_DISABLE_HARDWARE) && !defined(_XBOX) && !defined(__CELLOS_LV2__)
	NxHWVersion hwCheck = gPhysicsSDK->getHWVersion();
	if (hwCheck == NX_HW_VERSION_NONE) 
	{
		printf("\nWarning: Unable to find a PhysX card, the cloth will be simulated in software.\n\n");
		gHardwareSimulation = false;
	}
#endif

and set flag NX_CLF_HARDWARE when I create cloth

if (gHardwareSimulation)
	clothDesc.flags |= NX_CLF_HARDWARE;

Anything missed?