Hi Greg, 

Previously the ID type was a 64 bit integer (like).

Now they want to move it to 128 bit in future.  For that struct is used,

The experimental 128 bit looks like.
struct { 
  int_ptr_t upper;
  int_ptr_t lower;
}

For the transition, it is still 64 bit, but a struct with just one int_ptr_t 
field. The integer can be taken out from it for now. But that would make it 
difficult later when it moves to 128 bit fully.

Thank you
Sriraj


> On Jan 3, 2017, at 11:03 PM, Greg Titus <[email protected]> wrote:
> 
> Hi Sriraj —
> 
> Could you say even more about your task ID type?  What are the elements of 
> the structure?  Could you pack them into 64 bits of an integer, or is that 
> not enough space at scale and/or would cause a performance issue somehow?  
> I’m curious because if you really do need more than 64 bits and/or a 
> structured type, that would invalidate my earlier statement that we could 
> define the task ID type the same way for all implementations.
> 
> thanks,
> greg
> 
> 
>> On Jan 3, 2017, at 10:21 AM, sri raj paul <[email protected]> wrote:
>> 
>>> 
>>> Could you say more about what the "task ID" you are trying to use
>>> contains? How many bits long is it?
>> 
>> The task ID I am considering is of type struct and therefore causes problems 
>> with binary operations.  It could be 64 or 128 bit long. 
>> 
>>> 
>>> A simpler solution, which we’ve considered in the past but never 
>>> implemented, would be to take the task ID type out of the 
>>> implementation-specific definitions and just make it (say) an int64_t in 
>>> all cases. 
>> 
>> Since we are already defining chpl_taskID_t, would it be better to use it 
>> rather than converting it to 64 bit. There are runtimes (for example OCR and 
>> also UPC i think)  that already supports 128 bit IDs. 
>> 
>> Thank you
>> Sriraj
>> 
>> 
>>> On Jan 3, 2017, at 9:00 PM, Greg Titus <[email protected]> wrote:
>>> 
>>> A simpler solution, which we’ve considered in the past but never 
>>> implemented, would be to take the task ID type out of the 
>>> implementation-specific definitions and just make it (say) an int64_t in 
>>> all cases.  The only reason I hadn’t already done this already was that it 
>>> was so far down the list in importance.  I wouldn’t mind a bit if someone 
>>> wanted to take this on …
>>> 
>>> greg
>>> 
>>> 
>>>> On Jan 3, 2017, at 7:42 AM, Michael Ferguson <[email protected]> wrote:
>>>> 
>>>> Hi -
>>>> 
>>>> On 1/2/17, 12:46 PM, "sri raj paul" <[email protected]> wrote:
>>>> 
>>>>> Hello,
>>>>> 
>>>>> I am looking at the Chapel tasking-runtime source code.
>>>>> 
>>>>> Each tasking model typedefs “chpl_taskID_t” to its own ID type and
>>>>> chpl_task_getId() has a return type of chpl_taskID_t
>>>>> The introduction of chpl_taskID_t might be to support multiple low-level
>>>>> runtimes.
>>>>> 
>>>>> But in runtime/include/qio/qio.h:212 , Inside struct qio_lock_t , task
>>>>> owner’s ID is of type int64_t
>>>>> Later in runtime/src/qio/qio.c , inside functions qio_lock() and
>>>>> qio_unlock(), task IDs are stored int64_t variables.
>>>>> and also compared using binary operators (== , !=) in
>>>>> runtime/src/qio/qio.c:103 and 122.
>>>>> 
>>>>> This causes type conversion errors if the underlying tasking model is
>>>>> using some ID type that is not compatible with integer.
>>>>> The qio files should also use chpl_taskID_t instead if int64_t.
>>>> 
>>>> This change sounds reasonable to me and you could create a PR to do it.
>>>> Nonetheless the code that is there should be OK for any task ID that is a
>>>> pointer or integer type,
>>>> which is all that we have so far.
>>>> 
>>>>> Also binary operators are not applicable to all types and therefore it
>>>>> will be better if each tasking model provides an isEqual() api for its ID
>>>>> type.
>>>> 
>>>> I'm less certain about this one.
>>>> 
>>>>> We tried this change and noticed that the runtime/src/chpl-visual-debug.c
>>>>> type-casts chpl_taskID_t to some integer type while doing printf().
>>>> 
>>>> Right, chpl-visual-debug.c creates a log file for chplvis to use. The
>>>> visualization tool needs to
>>>> be able to figure out which events are in which task. I bet that for
>>>> chplvis's purposes though,
>>>> the "task ID" could be an arbitrary string.
>>>> 
>>>> Could you say more about what the "task ID" you are trying to use
>>>> contains? How many bits long is it?
>>>> 
>>>>> 
>>>>> Again this causes problem for types not compatible with integers.
>>>>> So either a custom format specifier for ID should be made or easier
>>>>> option is to provide a chpl_taskID_t_to_integer() by each tasking model.
>>>> 
>>>> 
>>>> As with a custom isEqual(), I'm not sure if we need
>>>> chpl_taskID_t_to_integer. Let's talk more about
>>>> what you hope to encode in the task ID.
>>>> 
>>>> 
>>>> Thanks,
>>>> 
>>>> -michael
>>>> 
>>>> 
>>>> 
>>>>> Just for testing, the address of  chpl_taskID_t can be type casted to an
>>>>> integer pointer and then dereferenced, but this will cause loss of
>>>>> information.
>>>>> 
>>>>> Thank you
>>>>> Sriraj
>>>>> 
>>>>> 
>>>>> --------------------------------------------------------------------------
>>>>> ----
>>>>> Check out the vibrant tech community on one of the world's most
>>>>> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
>>>>> _______________________________________________
>>>>> Chapel-developers mailing list
>>>>> [email protected]
>>>>> https://lists.sourceforge.net/lists/listinfo/chapel-developers
>>>> 
>>>> ------------------------------------------------------------------------------
>>>> Check out the vibrant tech community on one of the world's most 
>>>> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
>>>> _______________________________________________
>>>> Chapel-developers mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/chapel-developers
>>> 
>> 
> 


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Chapel-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-developers

Reply via email to