SHMEM_LOCK(3)

πŸ’– NAME πŸ’–

Hiii bestie, welcome to the Open MPI page for SHMEM_LOCK(3) β€” it’s giving mutual-exclusion-lock realness. This page covers shmem_set_lock(3), shmem_clear_lock(3), and shmem_test_lock(3): releases, locks, and tests a mutual exclusion memory lock. Periodt. πŸŽ€

✨ SYNOPSIS ✨

C or C++:

#include <mpp/shmem.h>

void shmem_clear_lock(volatile long *lock);

void shmem_set_lock(volatile long *lock);

int shmem_test_lock(volatile long *lock);

Fortran:

INCLUDE "mpp/shmem.fh"

INTEGER lock, SHMEM_TEST_LOCK

CALL SHMEM_CLEAR_LOCK(lock)

CALL SHMEM_SET_LOCK(lock)

I = SHMEM_TEST_LOCK(lock)

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so shmem_set_lock sets a mutual exclusion lock after waiting for the lock to be freed by any other PE currently holding the lock. Waiting PEs are assured of getting the lock in a first-come, first-served manner. No line-cutting, bestie. πŸ’…

shmem_clear_lock releases a lock previously set by shmem_set_lock after ensuring that all local and remote stores initiated in the critical region are complete. Very β€œclean up your mess before you dip” energy. ✨

shmem_test_lock sets a mutual exclusion lock only if it is currently cleared. By using this function, a PE can avoid blocking on a set lock. If the lock is currently set, the function returns without waiting. These routines are appropriate for protecting a critical region from simultaneous update by multiple PEs. They accept the following arguments:

  • lock β€” a symmetric data object that is a scalar variable or an array of length 1. This data object must be set to 0 on all processing elements (PEs) prior to the first use. lock must be of type integer. If you are using Fortran, it must be of default kind.
bestie, β€œset to 0 on all PEs before first use” is not a suggestion, it’s the vibe check. βœ…

🌸 NOTES 🌸

The term symmetric data object is defined on intro_shmem(3). Iykyk. 🫢

πŸ”₯ RETURN VALUES πŸ”₯

The shmem_test_lock function returns 0 if the lock was originally cleared and this call was able to set the lock. A value of 1 is returned if the lock had been set and the call returned without waiting to set the lock.

πŸ‘‘ SEE ALSO πŸ‘‘

intro_shmem(3) β€” go read it, bestie. πŸ’œ


xoxo, your Unix bestie πŸ’… β€” this page came from gitclone, source/version status Unreleased developer copy, and the footer has no date listed. SHMEM_LOCK(3) out! 🫢

πŸ“¦ where this page comes from
  • arch rolling: nvhpc-comm-libs 26.9-1 Β· LicenseRef-NVIDIA-HPC-SDK
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms