" I guess the Jx j.dll is compiled without it." That is correct, both, the provided dll and the so binaries do not support avx as stated in the release post:
" Jx 1.1 Release A Jx v1.1 Extensions Guide, a J/Jx Cheatsheet, a Jx Assertions script together with links to a Windows 64 bit dll, a Unix 64 bit so binaries (without avx support) and the patch corresponding to the J806 source (beta-6) can be found at the link [0]. " On Mon, Oct 2, 2017 at 10:11 AM, Erling Hellenäs <[email protected]> wrote: > Hi all ! > > These measurements are with Jx j.dll on the latest Beta release. > > n=.500000 > v=.?~n > $v > 500000 > 10{.v > 50689 85238 136693 442735 25192 304048 139323 96663 216893 142946 > ts'-AtTacit-AtTacit-AtTacit-AtTacit-@- v' > 0.1156 4.19917e6 > ts'-AtTacit-AtTacit-AtTacit-AtTacit-AtopTacit- v' > 0.108927 4.20006e6 > ts'-At-At-At-At-Atop- v' > 3.30635 4.20416e6 > ts'-@:-@:-@:-@:-@- v' > 0.115168 4.19712e6 > > For some reason my tacit code is on par with the built in code here. The > performance of my tacit code is doubled!!! in this release compared to > latest stable. There is no avx on this machine. I guess the Jx j.dll is > compiled without it. The explicit code is even slower here. > > The measurements from the latest stable, taken from below: > > n=.500000 > v=.?~n > $v > 500000 > 10{.v > 415593 299586 376558 161399 308885 477430 286004 354448 123594 75795 > ts'-AtTacit-AtTacit-AtTacit-AtTacit-@- v' > 0.240852 1.32199e8 > ts'-AtTacit-AtTacit-AtTacit-AtTacit-AtopTacit- v' > 0.2369 1.322e8 > ts'-At-At-At-At-Atop- v' > 2.96161 1.32204e8 > ts'-@:-@:-@:-@:-@- v' > 0.158078 1.32197e8 > > Cheers, > > Erling > > > On 2017-10-02 15:42, Erling Hellenäs wrote: > >> Hi all ! >> >> I tried to create explicit and tacit definitions of our composition >> conjunctions. I think the result could possibly be used to clarify the >> descriptions in NuVoc. >> >> Opinions are welcome, there are probably still some bugs or >> misunderstandings of function, there could be interesting aspects to >> discuss. >> >> The printout follows, then my project with definitions, tests and some >> minor explanations. >> >> In the end of the printout there are some performance measurements. The >> explicit versions are doing bad in those. The built in versions are >> slightly faster, which could be expected. >> >> Cheers, >> >> Erling >> >> ====Printout======================= >> >> ts=: 6!:2 , 7!:2@] NB. Time and space >> >> At=: 2 : 0 >> NB. @: >> u v"_ y >> : >> u x v"_ y >> ) >> >> <At- 1 2 >> ┌─────┐ >> │_1 _2│ >> └─────┘ >> NB. < _1_2 >> 5 <At- 1 2 >> ┌───┐ >> │4 3│ >> └───┘ >> NB. < 4 3 >> >> NB. @: >> AtTacit=: 2 : '[: u v' >> >> >> <AtTacit- 1 2 >> ┌─────┐ >> │_1 _2│ >> └─────┘ >> NB. < _1_2 >> 5 <AtTacit- 1 2 >> ┌───┐ >> │4 3│ >> └───┘ >> NB. < 4 3 >> >> NB. @: >> <AtTacit- >> [: < - >> >> Atop=: 2 : 0 >> NB. @ >> u At v"v y >> : >> x u At v"v y >> ) >> >> <Atop- 1 2 >> ┌──┬──┐ >> │_1│_2│ >> └──┴──┘ >> NB. _1;_2 >> 5 <Atop- 1 2 >> ┌─┬─┐ >> │4│3│ >> └─┴─┘ >> NB. 4;3 >> >> NB. @ >> AtopTacit=: 2 : '([: u v)"v' >> >> <AtopTacit- 1 2 >> ┌──┬──┐ >> │_1│_2│ >> └──┴──┘ >> NB. _1;_2 >> 5 <AtopTacit- 1 2 >> ┌─┬─┐ >> │4│3│ >> └─┴─┘ >> NB. 4;3 >> >> NB. @ >> <AtopTacit- >> ([: < -)"0 0 0 >> <AtopTacit[ >> ([: < [)"_ _ _ >> <AtopTacit i. >> ([: < i.)"1 _ _ >> >> Appose=: 2 : 0 >> NB. &: >> u v"_ y >> : >> (v"_ x) u v"_ y >> ) >> >> <Appose- 1 2 >> ┌─────┐ >> │_1 _2│ >> └─────┘ >> NB. < _1 _2 >> 5 ([:<<)Appose- 4 5 >> ┌───┐ >> │1 0│ >> └───┘ >> NB. < 1 0 >> >> NB. &: >> ApposeTacitMonadic=: 2 : '[: u [: v ]' >> ApposeTacitDyadic=: 2 : '([: v [) u [: v ]' >> >> <ApposeTacitMonadic- 1 2 >> ┌─────┐ >> │_1 _2│ >> └─────┘ >> NB. < _1 _2 >> 5 ([:<<)ApposeTacitDyadic- 4 5 >> ┌───┐ >> │1 0│ >> └───┘ >> NB. < 1 0 >> >> NB. &: >> <ApposeTacitMonadic- >> [: < [: - ] >> ([:<<)ApposeTacitDyadic- >> ([: - [) ([: < <) [: - ] >> >> Compose=: 2 : 0 >> NB. & >> u Appose v"v y >> : >> x u Appose v"v y >> ) >> >> <Compose- 1 2 >> ┌──┬──┐ >> │_1│_2│ >> └──┴──┘ >> NB. _1;_2 >> 5 ([:<<)Compose- 4 5 >> ┌─┬─┐ >> │1│0│ >> └─┴─┘ >> NB. 1;0 >> >> NB. & >> ComposeTacitMonadic=: 2 : '([: u [: v ])"v' >> ComposeTacitDyadic=: 2 : '(([: v [) u [: v ])"v' >> >> <ComposeTacitMonadic- 1 2 >> ┌──┬──┐ >> │_1│_2│ >> └──┴──┘ >> NB. _1;_2 >> 5 ([:<<)ComposeTacitDyadic- 4 5 >> ┌─┬─┐ >> │1│0│ >> └─┴─┘ >> NB. 1;0 >> >> NB. & >> <ComposeTacitMonadic- >> ([: < [: - ])"0 0 0 >> ([:<<)ComposeTacitDyadic- >> (([: - [) ([: < <) [: - ])"0 0 0 >> >> UnderRankInfinite=: 2 : 0 >> NB. &.: >> v"_^:_1 u v"_ y >> : >> v"_^:_1 (v"_ x) u v"_ y >> ) >> >> -UnderRankInfinite> 1 2;3 4 >> ┌─────┐ >> │_1 _2│ >> │_3 _4│ >> └─────┘ >> NB. <2 2 $ _1 _2 -3 -4 >> (5;6) -UnderRankInfinite> 1 2;3 4 >> ┌───┐ >> │4 3│ >> │3 2│ >> └───┘ >> NB. < 2 2 $ 4 3 3 2 >> >> NB. &.: >> UnderRankInfiniteTacitMonadic=: 2 : '[: v^:_1 [: u [: v ]' >> UnderRankInfiniteTacitDyadic=: 2 : '[: v^:_1 ([: v [) u [: v ]' >> >> -UnderRankInfiniteTacitMonadic> 1 2;3 4 >> ┌─────┐ >> │_1 _2│ >> │_3 _4│ >> └─────┘ >> NB. <2 2 $ _1 _2 -3 -4 >> (5;6) -UnderRankInfiniteTacitDyadic> 1 2;3 4 >> ┌───┐ >> │4 3│ >> │3 2│ >> └───┘ >> NB. < 2 2 $ 4 3 3 2 >> >> NB. &.: >> -UnderRankInfiniteTacitMonadic> >> [: >^:_1 [: - [: > ] >> -UnderRankInfiniteTacitDyadic> >> [: >^:_1 ([: > [) - [: > ] >> >> UnderRankV=: 2 : 0 >> NB. &. >> u UnderRankInfinite v"v y >> : >> x u UnderRankInfinite v"v y >> ) >> >> -UnderRankV> 1 2; 3 4 >> ┌─────┬─────┐ >> │_1 _2│_3 _4│ >> └─────┴─────┘ >> NB. _1 _2; _3 _4 >> (5;6) -UnderRankV> 1 2;3 4 >> ┌───┬───┐ >> │4 3│3 2│ >> └───┴───┘ >> NB. 4 3;3 2 >> >> NB. &. >> UnderRankVTacitMonadic=: 2 : '([: v^:_1 [: u [: v ])"v' >> UnderRankVTacitDyadic=: 2 : '([: v^:_1 ([: v [) u [: v ])"v' >> >> -UnderRankVTacitMonadic> 1 2; 3 4 >> ┌─────┬─────┐ >> │_1 _2│_3 _4│ >> └─────┴─────┘ >> NB. _1 _2; _3 _4 >> (5;6) -UnderRankVTacitDyadic> 1 2;3 4 >> ┌───┬───┐ >> │4 3│3 2│ >> └───┴───┘ >> NB. 4 3;3 2 >> >> NB. &. >> -UnderRankVTacitMonadic> >> ([: >^:_1 [: - [: > ])"0 0 0 >> -UnderRankVTacitDyadic> >> ([: >^:_1 ([: > [) - [: > ])"0 0 0 >> >> n=.500000 >> v=.?~n >> $v >> 500000 >> 10{.v >> 415593 299586 376558 161399 308885 477430 286004 354448 123594 75795 >> >> ts'-AtTacit-AtTacit-AtTacit-AtTacit-@- v' >> 0.240852 1.32199e8 >> ts'-AtTacit-AtTacit-AtTacit-AtTacit-AtopTacit- v' >> 0.2369 1.322e8 >> ts'-At-At-At-At-Atop- v' >> 2.96161 1.32204e8 >> ts'-@:-@:-@:-@:-@- v' >> 0.158078 1.32197e8 >> >> ====================== Project ======================================= >> >> ts=: 6!:2 , 7!:2@] NB. Time and space >> >> At=: 2 : 0 >> NB. @: >> u v"_ y >> : >> u x v"_ y >> ) >> >> <At- 1 2 >> NB. < _1_2 >> 5 <At- 1 2 >> NB. < 4 3 >> >> NB. @: >> AtTacit=: 2 : '[: u v' >> >> >> <AtTacit- 1 2 >> NB. < _1_2 >> 5 <AtTacit- 1 2 >> NB. < 4 3 >> >> NB. @: >> <AtTacit- >> >> Atop=: 2 : 0 >> NB. @ >> u At v"v y >> : >> x u At v"v y >> ) >> >> <Atop- 1 2 >> NB. _1;_2 >> 5 <Atop- 1 2 >> NB. 4;3 >> >> NB. @ >> AtopTacit=: 2 : '([: u v)"v' >> >> <AtopTacit- 1 2 >> NB. _1;_2 >> 5 <AtopTacit- 1 2 >> NB. 4;3 >> >> NB. @ >> <AtopTacit- >> <AtopTacit[ >> <AtopTacit i. >> >> Appose=: 2 : 0 >> NB. &: >> u v"_ y >> : >> (v"_ x) u v"_ y >> ) >> >> <Appose- 1 2 >> NB. < _1 _2 >> 5 ([:<<)Appose- 4 5 >> NB. < 1 0 >> >> NB. &: >> ApposeTacitMonadic=: 2 : '[: u [: v ]' >> ApposeTacitDyadic=: 2 : '([: v [) u [: v ]' >> >> <ApposeTacitMonadic- 1 2 >> NB. < _1 _2 >> 5 ([:<<)ApposeTacitDyadic- 4 5 >> NB. < 1 0 >> >> NB. &: >> <ApposeTacitMonadic- >> ([:<<)ApposeTacitDyadic- >> >> Compose=: 2 : 0 >> NB. & >> u Appose v"v y >> : >> x u Appose v"v y >> ) >> >> <Compose- 1 2 >> NB. _1;_2 >> 5 ([:<<)Compose- 4 5 >> NB. 1;0 >> >> NB. & >> ComposeTacitMonadic=: 2 : '([: u [: v ])"v' >> ComposeTacitDyadic=: 2 : '(([: v [) u [: v ])"v' >> >> <ComposeTacitMonadic- 1 2 >> NB. _1;_2 >> 5 ([:<<)ComposeTacitDyadic- 4 5 >> NB. 1;0 >> >> NB. & >> <ComposeTacitMonadic- >> ([:<<)ComposeTacitDyadic- >> >> UnderRankInfinite=: 2 : 0 >> NB. &.: >> v"_^:_1 u v"_ y >> : >> v"_^:_1 (v"_ x) u v"_ y >> ) >> >> -UnderRankInfinite> 1 2;3 4 >> NB. <2 2 $ _1 _2 -3 -4 >> (5;6) -UnderRankInfinite> 1 2;3 4 >> NB. < 2 2 $ 4 3 3 2 >> >> NB. &.: >> UnderRankInfiniteTacitMonadic=: 2 : '[: v^:_1 [: u [: v ]' >> UnderRankInfiniteTacitDyadic=: 2 : '[: v^:_1 ([: v [) u [: v ]' >> >> -UnderRankInfiniteTacitMonadic> 1 2;3 4 >> NB. <2 2 $ _1 _2 -3 -4 >> (5;6) -UnderRankInfiniteTacitDyadic> 1 2;3 4 >> NB. < 2 2 $ 4 3 3 2 >> >> NB. &.: >> -UnderRankInfiniteTacitMonadic> >> -UnderRankInfiniteTacitDyadic> >> >> UnderRankV=: 2 : 0 >> NB. &. >> u UnderRankInfinite v"v y >> : >> x u UnderRankInfinite v"v y >> ) >> >> -UnderRankV> 1 2; 3 4 >> NB. _1 _2; _3 _4 >> (5;6) -UnderRankV> 1 2;3 4 >> NB. 4 3;3 2 >> >> NB. &. >> UnderRankVTacitMonadic=: 2 : '([: v^:_1 [: u [: v ])"v' >> UnderRankVTacitDyadic=: 2 : '([: v^:_1 ([: v [) u [: v ])"v' >> >> -UnderRankVTacitMonadic> 1 2; 3 4 >> NB. _1 _2; _3 _4 >> (5;6) -UnderRankVTacitDyadic> 1 2;3 4 >> NB. 4 3;3 2 >> >> NB. &. >> -UnderRankVTacitMonadic> >> -UnderRankVTacitDyadic> >> >> n=.500000 >> v=.?~n >> $v >> 10{.v >> >> ts'-AtTacit-AtTacit-AtTacit-AtTacit-@- v' >> ts'-AtTacit-AtTacit-AtTacit-AtTacit-AtopTacit- v' >> ts'-At-At-At-At-Atop- v' >> ts'-@:-@:-@:-@:-@- v' >> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
