code: public static int cuPointerSetAttribute(Pointer value, int attribute, CUdeviceptr ptr)
      {
          return checkResult(cuPointerSetAttributeNative(value, attribute, ptr));
      }
docs: Set attributes on a previously allocated memory region<br>
  <br>
  The supported attributes are:
  <br>
  <ul>
  <li>CU_POINTER_ATTRIBUTE_SYNC_MEMOPS:
  
  A boolean attribute that can either be set (1) or unset (0). When set,
  the region of memory that ptr points to is guaranteed to always synchronize
  memory operations that are synchronous. If there are some previously initiated
  synchronous memory operations that are pending when this attribute is set, the
  function does not return until those memory operations are complete.
  See further documentation in the section titled "API synchronization behavior"
  to learn more about cases when synchronous memory operations can
  exhibit asynchronous behavior.
  value will be considered as a pointer to an unsigned integer to which this attribute is to be set.
  </li>
  </ul>
  @param value     Pointer to memory containing the value to be set
  @param attribute Pointer attribute to set
  @param ptr       Pointer to a memory region allocated using CUDA memory allocation APIs
  
  @return CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED,
  CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
  
  @see JCudaDriver#cuPointerGetAttribute,
  @see JCudaDriver#cuPointerGetAttributes,
  @see JCudaDriver#cuMemAlloc,
  @see JCudaDriver#cuMemFree,
  @see JCudaDriver#cuMemAllocHost,
  @see JCudaDriver#cuMemFreeHost,
  @see JCudaDriver#cuMemHostAlloc,
  @see JCudaDriver#cuMemHostRegister,
  @see JCudaDriver#cuMemHostUnregister