1. A method of performing efficient conditional memory ordering in a multi-processor computer system, the method comprising: storing in a shared memory a current release number for a first processor coupled to the shared memory, the current release number comprising: a processor identifier of the first processor; and a release counter used to enforce proper ordering of memory instructions, said release counter represents progress of a second processor at a time when the second processor last accessed the shared memory, and wherein the progress is measured by a number of synchronization operations performed by said second processor; storing a release number vector in each processor, wherein the release number vector comprises current release numbers of all processors in the system; executing a conditional memory ordering instruction implemented by one of the multi-processors using a register, the instruction executing locally on the one of the multi-processors using one release number of the release vector by executing instructions comprising: providing read access to the current release number for the first processor; using the register, determining whether the processor identifier of the one release number of the processor using the register is associated with the first processor; if the processor identifier of the one release number is not associated with the first processor, performing, with the second processor a step of: issuing a remote memory synchronization command to execute on the second processor; and waiting for the command to complete before completing the conditional memory ordering instruction.