Device function implenation