UPC Runtime System Questions

From: Hung-Hsun Su (su_at_hcs_dot_ufl_dot_edu)
Date: Tue Feb 15 2005 - 13:20:08 PST

  • Next message: Dan Bonachea: "Re: UPC Runtime System Questions"
    I have been trying to understand the intermediate code generated by a dummy upc program (see attached) that I've put together that covers all the construct as in UPC spec 1.1 and I have some questions I would like to ask:
    1. For the declaration of shared variables and pointers, I see that sometimes upcr_pshared_ptr_t is used while other times upcr_shared_ptr_t is used. What is the rule in determining which to use? More generally, what are the rules to translate shared variables and pointers?
    2. For lock declaration, What is the purpose of UPCR_TLD_DEFINE_TENTATIVE?
    3. For MYTHREAD translations:
      3a. Where can I find some more information on the variable parg? what is this use for?
      3b. What is the purpose of the multiple indirection? i.e. why go through the following translation [MYTHREAD-->upcr_mythread()-->upcri_mypthreadinfo()->mythread-->_upcr_pthreadinfo->mythread = pargs->mythread] rather than directly using the later variables? This also applies to some other translation as sometimes I would see one thing translated to another and then to yet another one, why is this necessary?
    4. For UPC_MAX_BLOCK_SIZE,  upc_localsizeof, etc. Are these always compile time constant? If so, what are things that will always be compile time constant? runtime constants?
    5. For upcr_pshared_to_local(),  why would this only work if shared variableis  own by calling thread? And similar to 3b, why is it necessary to use the intermediate variable such as Mcvtptr_bupc_2?
    6. In _upcr_notify, will upcri_mypthreads() = #threads? When does this get assigned?
    7. Where is the actual definition of upcr_barrier()? I've looked through all the .c and .h file at the upcr level and I've not been able to find this
    8. For upc_for_all, What is the use for upc_forall_control? What is the general mechanism behind the implementation of upc_for_all?
    9. For UPCR_GLOBAL_ALLOC, What is the purpose of UPCRI_ALLOCCALLER?
    10. For UPCR_ALL_ALLOC and UPCR_ALL_LOCK_ALLOC, I see that there is an all-to-all communication going on, why is this necessary?
    11. Where is UPCR_ALLOC defined?
    12. For upc_threadof() --> UPCR_THREADOF_PSHARED, What is UPCRI_PACKED_SPTR and how is it used?
    13. I couldn't find the translation for upc_resetphase(), is this supported and how?
    14. Where is upcaffinitysize defined?
    15. For _upcr_free()
        15a. I see that there are checks in upcri_do_local_free() that is really not necessary as far as I can tell since this function can only be called if the checking is true. Is there another purpose for the multiple check other than to provide extra protection?
        15b. Where is upcra_sharedlocal_free() defined?
        15c. Where is upcra_sharedglobal_free() defined?
    16. Is UPCR_LOCK_ATTEMPT() equivalent to upcr_lock()? If so, why? If not, can you explain how they are implemented differently as they seem the same to me.
    17. For UPCR_LOCK_FREE, why is an AM short send out even if the lock owner is local?
    18. What¡¦s the purpose of UPCRI_PASS_GAS() in all the memput/memget operations?
    19. Is there optimization going on at the upc runtime level that aggregates communication? If so, what is the logic for this?
    Thanks in advance!
    Hung-Hsun Su
    Ph.D. Student, UPC Group Leader, Research Assistant, Teaching Assistant
    High-performance Computing and Simulation (HCS) Research Laboratory
    Dept. of Electrical and Computer Engineering , University of Florida,
    Gainesville, FL 32611-6200
    Email: su@hcs.ufl.edu, hunghsun_at_ufl_dot_edu

  • Next message: Dan Bonachea: "Re: UPC Runtime System Questions"