Am 11.03.2016 um 18:57 schrieb David P Grove: > > Would it make a difference if the static fields were declared to be public > instead of their current package-level visibility? Then it might be a > little harder for the JIT to justify "knowing" that the variables were > never accessed concurrently.
Harder yes, but not guaranteed. > > Andreas Zwinkau <zwin...@kit.edu> wrote on 03/11/2016 07:31:07 AM: >> >> Am 04.03.2016 um 17:27 schrieb David P Grove: >>> >>> Andreas Zwinkau <zwin...@kit.edu> wrote on 03/04/2016 07:02:30 AM: >>> >>>> From: Andreas Zwinkau <zwin...@kit.edu> >>>> To: x10-users@lists.sourceforge.net >>>> Date: 03/04/2016 07:03 AM >>>> Subject: [X10-users] Fences Java implementation >>>> >>>> The x10.util.concurrent.Fences implementation looks reasonable for C+ > +, >>>> but the Java implementation seems weird to me. >>>> >>>> For example, loadLoadBarrier is implemented via two volatile reads. > Why >>>> *two*? I could ask more questions ... >>>> >>>> The code was added by David Grove in 2009 it seems: >>>> https://github.com/x10-lang/x10/commit/ >>>> f4f5420ce476f2538f358509ad13ef52b8c2c4c1 >>>> >>>> Any idea where that came from? Any sources? Any reasons why it is the >>>> way it is? >>> >>> Hi Andreas, >>> >>> Best as I can remember, the Java code that is there was based on >>> discussion being had in 2009 about how to get memory fences given the >>> definition of the Java memory model and java.util.concurrent as it > existed >>> at the time. >>> >>> --dave >> >> I compared it with the JMM Cookbook [0] and it follows it very directly. >> For example, "volatile load then volatile store means loadStore barrier". >> >> The problem is the JMM considers volatile variables separately, so the >> JVM can optimize volatiles. If the JVM figures out the volatile >> variables in FencesUtils.java are never accessed concurrently, then they >> can be optimized away. I made a toy example and this became >> loadLoadBarrier assembly: >> >> # {method} 'loadLoadBarrier' '()V' in 'FencesUtils' >> # [sp+0x20] (sp of caller) >> 0x00007fa3f905f5c0: sub $0x18,%rsp >> 0x00007fa3f905f5c7: mov %rbp,0x10(%rsp) ;*synchronization entry >> ; - >> FencesUtils::loadLoadBarrier@-1 (line 38) >> 0x00007fa3f905f5cc: mov $0x7acd4eee8,%r10 ; {oop(a >> 'java/lang/Class' = 'FencesUtils')} >> 0x00007fa3f905f5d6: mov 0x58(%r10),%r8d >> 0x00007fa3f905f5da: mov %r8d,0x60(%r10) ;*getstatic v1 >> ; - >> FencesUtils::loadLoadBarrier@0 (line 38) >> 0x00007fa3f905f5de: mov 0x5c(%r10),%r11d >> 0x00007fa3f905f5e2: mov %r11d,0x64(%r10) ;*getstatic v2 >> ; - >> FencesUtils::loadLoadBarrier@6 (line 39) >> 0x00007fa3f905f5e6: add $0x10,%rsp >> 0x00007fa3f905f5ea: pop %rbp >> 0x00007fa3f905f5eb: test %eax,0xc967a0f(%rip) # >> 0x00007fa4059c7000 >> ; {poll_return} >> 0x00007fa3f905f5f1: retq >> >> No synchronization instruction. The other three barriers contained a >> "lock addl" instruction. >> >> I think this sometimes might work, but not reliably. Afaik there is no >> way to correctly implement FencesUtils.java. This implies >> x10.util.concurrent.Fences cannot be provided with the Java backend. >> >> [0] http://gee.cs.oswego.edu/dl/jmm/cookbook.html >> -- >> Andreas Zwinkau >> >> KIT IPD Snelting >> Web: http://pp.ipd.kit.edu/personhp/andreas_zwinkau.php >> >> [attachment "signature.asc" deleted by David P Grove/Watson/IBM] >> > ------------------------------------------------------------------------------ > >> Transform Data into Opportunity. >> Accelerate data analysis in your applications with >> Intel Data Analytics Acceleration Library. >> Click to learn more. >> http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 >> _______________________________________________ >> X10-users mailing list >> X10-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/x10-users > > > > ------------------------------------------------------------------------------ > Transform Data into Opportunity. > Accelerate data analysis in your applications with > Intel Data Analytics Acceleration Library. > Click to learn more. > http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 > > > > _______________________________________________ > X10-users mailing list > X10-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/x10-users > -- Andreas Zwinkau KIT IPD Snelting Web: http://pp.ipd.kit.edu/personhp/andreas_zwinkau.php
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
_______________________________________________ X10-users mailing list X10-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x10-users