<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 16, 2014, at 9:03 PM, Sahasrabuddhe, Sameer <<a href="mailto:Sameer.Sahasrabuddhe@amd.com" class="">Sameer.Sahasrabuddhe@amd.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class="Apple-interchange-newline">Regarding point #5, I believe address spaces may already provide the functionality needed to express overlapping constraints.<br class=""></blockquote><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I am not sure how address spaces can solve the need for such a constraint. Memory scopes are orthogonal to address spaces. An agent that atomically accesses a shared location in one address space may specify a different memory scope on different instructions.</span></div></blockquote></div><br class=""><div class="">It is already the case that address spaces can (potentially) alias. As such, the combination of address spaces and memory scopes can represent any combination where the sharing properties of memory are statically known, simply by having (potentially aliasing) address spaces to represent memory pools that are only shared with a specific combinations of agents. One can imagine a GPU that worked like this, and GPU programming models do generally differentiating various sharing pools statically.</div><div class=""><br class=""></div><div class="">The case that this doesn’t handle is when the sharing properties are not known statically. However, I question the utility of designing this, since there are no known systems that require it. We should design the representation to cover all reasonably anticipated systems, not ones that don’t, and have no prospect of, existing.</div><div class=""><br class=""></div><div class="">—Owen</div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>