Fractional Programming for Communication Systems—Part II: Uplink Scheduling via Matching | Synapse