Chapel-1.16.0 pre-release Internal error (-999) what other approach possible to a prior domain-size agnostic declaration? -


prototyping has returned internal error:

while purpose of particular setup neither of interest or relevant,
compiler finished following debug-notice,
advice on collision-avoiding syntax appreciated:

<tio>-ide-debug::____________________________________________________  .code.tio.chpl:77: internal error: imp0586 chpl version 1.16.0 pre-release (-999)  note: source location guess.  internal errors indicate bug in chapel compiler ("it's us, not you"), , we're sorry hassle.  appreciate reporting bug --  please see http://chapel.cray.com/bugs.html instructions.  in meantime, filename + line number above may useful in working around issue. 


( compiler-team have additional interest & worries internal handing of observed situation, not primary intent or subject of post )


the code, live @ <tio>-ide::

/* ---------------------------------------setup-section-under-test--*/ use time; /* ---------------------------------------setup-section-under-test--*/ var astopwatch_rnd_gen: timer; /* ---------------------------------------setup-section-under-test--*/ var astopwatch_lin_alg: timer; /* ---------------------------------------setup-section-under-test--*/ var astopwatch_mat_rec: timer; /* ---------------------------------------setup-section-under-test--*/ var astopwatch_arr_rec: timer; config const n_power =         5; config const l_size  =      1000;        const indices = 1..l_size;        const adomain = {indices, indices};         var   a: [adomain] real(64); // real(32); // may've shown byte-word alignment artifacts        var   b: [adomain] real(64); // real(32); // may've shown byte-word alignment artifacts        const dtype =    "-real(64)";        var   s: [adomain] real(64); // real(32); // ok: must've been set real(64) avoid /linearalgebra.chpl:535: error: type mismatch in assignment real(64) real(32)  /* -----------------------------------------------------------------*/ use random; /* ---------------------------------------------section-under-test--*/     astopwatch_rnd_gen.start();     random.fillrandom(  );     random.fillrandom(  b ); /* ---------------------------------------------section-under-test--*/     astopwatch_rnd_gen.stop(); /*      ============================================ */  proc arrmul( arra: [?da] real(64),              arrb: [?db] real(64)              ) {                      /*                                          <brad> if domain/size of array being returned cannot described directly in function prototype,                                                 believe best bet @ present omit description of return type , lean on chapel's type inference machinery                                                 determine you're returning array                                                  >>> https://stackoverflow.com/a/39420337/3666197                                                  */      var                       arrc: [adomain] real(64);                                       /*                                                 <tio>-ide-debug::____________________________________________________                                                  .code.tio.chpl:77: internal error: imp0586 chpl version 1.16.0 pre-release (-999)                                                  note: source location guess.                                                  internal errors indicate bug in chapel compiler ("it's us, not you"),                                                 , we're sorry hassle.  appreciate reporting bug --                                                  please see http://chapel.cray.com/bugs.html instructions.  in meantime,                                                 filename + line number above may useful in working around issue.                                                  */   /*  var                       arrc: [{1..arra.dim( 1 ).length(),       // ..#arra.dim( 1 ),                                        1..arrb.dim( 2 ).length()        // ..#arrb.dim( 2 )                                        }                                       ] real(64);                                                  <tio>-ide-debug::____________________________________________________                                                  .code.tio.chpl:49: error: unresolved call '[domain(2,int(64),false)] real(64).dim(1)'                                                 $chpl_home/modules/internal/chapelarray.chpl:1215: note: candidates are: _domain.dim(d: int)                                                 $chpl_home/modules/internal/chapelarray.chpl:1218: note:                 _domain.dim(param d: int)                                                  */   // forall      (row, col) in arrc.domain {    // [row:77] reports: internal error: imp0586 chpl version 1.16.0 pre-release (-999)      forall      (row, col) in     adomain {    // [row:78] reports: internal error: imp0586 chpl version 1.16.0 pre-release (-999)                                       in arra.dim( 2 )              arrc[row, col] += arra[row, i]                              * arrb[     i, col];      }      return  arrc; }  proc arr_rec_pow( arrm: [?d] real(64),                   n:          int(64) // int(32) failed:                                       //      <- config const n_power = 5 // .code.tio.chpl:64: error: unresolved call 'arr_rec_pow([domain(2,int(64),false)] real(64), int(64))'                   ):    [ d] real(64) {     /*                                                  <brad> if domain/size of array being returned cannot described directly in function prototype,                                                        believe best bet @ present omit description of return type , lean on chapel's type inference machinery                                                        determine you're returning array                                                         >>> https://stackoverflow.com/a/39420337/3666197                                                  <tio>-ide-debug::____________________________________________________                                                  .code.tio.chpl:56: error: unable resolve return type of function 'arr_rec_pow'                                                 .code.tio.chpl:56: in function 'arr_rec_pow':                                                 .code.tio.chpl:61: error: called recursively @ point                                                   // ? operator called query operator, , used take                                                 // undetermined values tuple or array sizes , generic types.                                                 // example, taking arrays parameters. query operator used                                                 // determine domain of a. uesful defining return type,                                                 // though it's not required.                                                  //                  (c) 2017 ian j. bertolacci, ben harshbarger                                                 // contributed ian j. bertolacci, , updated 8 contributor(s).                                                          >>> https://learnxinyminutes.com/docs/chapel/>                                                 */       if      n < 1 return         arrm;      else               return arrmul( arrm, arr_rec_pow( arrm, n - 1 ) ); }  /* ---------------------------------------------section-under-test--*/     astopwatch_arr_rec.start();     forall (row, col)             in s.domain {          s[row, col] = arr_rec_pow( a, n_power )[row,col]                      + arr_rec_pow( b, n_power )[row,col];    } /* ---------------------------------------------section-under-test--*/     astopwatch_arr_rec.start(); /*      ============================================ */ 

reduced <tio>-ide ( pitty no code-folding productivity, in other ide environments. agree ben, experiments-under-review self-documenting layouts readable per individual preferences )

still

chpl:30: internal error: imp0586 chpl version 1.16.0 pre-release (-999)

chpl:30: being:

forall      (row, col) in    adomain { 

>>> aclickthrough-with-an-updated-code, no syntax warnings (-999) @<tio>-ide

                    use time;  var astopwatch_rnd_gen: time.timer; var astopwatch_lin_alg: time.timer; var astopwatch_mat_rec: time.timer; var astopwatch_arr_rec: time.timer;  config const n_power =         5; config const l_size  =      1000;        const indices = 1..l_size;        const adomain = {indices, indices};         var   a: [adomain] real(64);        var   b: [adomain] real(64);        const dtype =    "-real(64)";        var   s: [adomain] real(64);  use random; /* ---------------------------------------------section-under-test--*/     astopwatch_rnd_gen.start();     random.fillrandom(  );     random.fillrandom(  b ); /* ---------------------------------------------section-under-test--*/     astopwatch_rnd_gen.stop();  proc arrmul( arra: [?da] real(64),              arrb: [?db] real(64)              ) {       var     arrc: [adomain] real(64);       forall      (row, col) in    adomain {              arrc[row, col]  = 0;                                      in arra.dim( 2 )              arrc[row, col] += arra[row, i]                              * arrb[     i, col];      }      return  arrc; }  proc arr_rec_pow( arrm: [?d] real(64),                   n:          int(64)                   ):    [ d] real(64) {       if      n < 1 return         arrm;      else               return arrmul( arrm, arr_rec_pow( arrm, n - 1 ) ); }  /* ---------------------------------------------section-under-test--*/     astopwatch_arr_rec.start();    forall (row, col)             in s.domain {          s[row, col] = arr_rec_pow( a, n_power )[row,col]                      + arr_rec_pow( b, n_power )[row,col];    } /* ---------------------------------------------section-under-test--*/     astopwatch_arr_rec.start();       use linearalgebra; var ma = linearalgebra.matrix( ); var mb = linearalgebra.matrix( b ); var ms = linearalgebra.matrix( s ); /* ---------------------------------------------section-under-test--*/     astopwatch_lin_alg.start();     ms = linearalgebra.matplus( linearalgebra.matpow( ma, n_power ),                                 linearalgebra.matpow( mb, n_power )                                 ); /* ---------------------------------------------section-under-test--*/     astopwatch_lin_alg.stop();  proc mat_rec_pow( matm: [] real(64),                   n:        int(64)                   ) {       if      n < 1 return                    matm;      else               return linearalgebra.dot( matm, mat_rec_pow( matm, n - 1 ) ); }  /* -----------------------------------------------re-fill-m?[,]-----*/     random.fillrandom(  ); ma = matrix( ); // re-fill ma[,]     random.fillrandom(  b ); mb = matrix( b ); // re-fill mb[,] /* -----------------------------------------------re-fill-m?[,]-----*/  /* ---------------------------------------------section-under-test--*/     astopwatch_mat_rec.start();    forall  (row, col)              in ms.domain {          ms[row, col]  = mat_rec_pow( ma, n_power )[row,col]                        + mat_rec_pow( mb, n_power )[row,col];    } /* ---------------------------------------------section-under-test--*/     astopwatch_mat_rec.start();  /* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| perf--*/  writeln( ".fillrandom() took",           astopwatch_rnd_gen.elapsed( time.timeunits.microseconds ), " [us] a[,], b[,] having ", 2 * ( l_size * l_size ), dtype, " elements in total." ); writeln(         "\n <section-under-test> took ", astopwatch_lin_alg.elapsed( time.timeunits.microseconds ), " [us] in [lin_alg] mode ( a^n + b^b ) [", l_size, ",", l_size, "] on <tio>-ide",         "\n <section-under-test> took ", astopwatch_mat_rec.elapsed( time.timeunits.microseconds ), " [us] in [mat_rec] mode ( a^n + b^b ) [", l_size, ",", l_size, "] on <tio>-ide",         "\n <section-under-test> took ", astopwatch_arr_rec.elapsed( time.timeunits.microseconds ), " [us] in [arr_rec] mode ( a^n + b^b ) [", l_size, ",", l_size, "] on <tio>-ide"          ); /* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| inf--*/  writeln(                     "<tio>-ide-localespace is: ", localespace, " massive. code executing [here], being locale ", here.id  );                                                in    localespace     writeln(                 "          locale #", i, "'s id is: ", locales[i].id ); 

task complete! domain-helpers used, recursion still needs investigation

great helped make happen.
prior w.i.p. interim remarks yet left inplace educational purposes

[ok]: code passes initial compiler's syntax-check,

blas+atlas yet fail work per v1.15/.16 documentation advice
( , being solved kind of <tio>-ide administrators )

                    use time;  var astopwatch_rnd_gen: time.timer; var astopwatch_lin_alg: time.timer; var astopwatch_mat_rec: time.timer; var astopwatch_arr_rec: time.timer;  config const n_power =         5; config const l_size  =      1000;        const indices = 1..l_size;        const adomain = {indices, indices};         var   a: [adomain] real(64);        var   b: [adomain] real(64);        const dtype =    "-real(64)";        var   s: [adomain] real(64);  use random; /* ---------------------------------------------section-under-test--*/     astopwatch_rnd_gen.start();     random.fillrandom(  );     random.fillrandom(  b ); /* ---------------------------------------------section-under-test--*/     astopwatch_rnd_gen.stop();  proc arrmul( arra: [?da] real(64),              arrb: [?db] real(64)              ) {       var     arrc: [adomain] real(64);       forall      (row, col) in    adomain {              arrc[row, col]  = 0;      //                              in arra.dim( 2 )          // calling .dim(2) on array instead of it's domain. note dim defined on domain, not array                                      in arra.domain.dim( 2 )   // calling .dim(2) on array instead of it's domain. note dim defined on domain, not array              arrc[row, col] += arra[row, i]                              * arrb[     i, col];      }      return  arrc; }  proc arr_rec_pow( arrm: [?d] real(64),                   n:          int(64)                   ):    [ d] real(64) {       if      n < 1 return         arrm;      else               return arrmul( arrm, arr_rec_pow( arrm, n - 1 ) ); }  /* ---------------------------------------------section-under-test--*/     astopwatch_arr_rec.start();    forall (row, col)             in s.domain {          s[row, col] = arr_rec_pow( a, n_power )[row,col]                      + arr_rec_pow( b, n_power )[row,col];    } /* ---------------------------------------------section-under-test--*/     astopwatch_arr_rec.start();       use linearalgebra; var ma = linearalgebra.matrix( ); var mb = linearalgebra.matrix( b ); var ms = linearalgebra.matrix( s ); /* ---------------------------------------------section-under-test--*/     astopwatch_lin_alg.start();     ms = linearalgebra.matplus( linearalgebra.matpow( ma, n_power ),                                 linearalgebra.matpow( mb, n_power )                                 ); /* ---------------------------------------------section-under-test--*/     astopwatch_lin_alg.stop();  proc mat_rec_pow( matm: [?dm] real(64),                   n:           int(64)                   ):    [ dm] real(64) {   //  if      n < 1 return                    matm;                                           // chpl:65: error: unable resolve return type of function 'mat_rec_pow'      if      n < 1 return linearalgebra.dot( matm, linearalgebra.eye( matm.shape[1] ) );     // [did not help]: added: compiler assume return-type      else               return linearalgebra.dot( matm,       mat_rec_pow( matm, n - 1 ) );       // chpl:70: error: called recursively @ point }  /* -----------------------------------------------re-fill-m?[,]-----*/     random.fillrandom(  ); ma = matrix( ); // re-fill ma[,]     random.fillrandom(  b ); mb = matrix( b ); // re-fill mb[,] /* -----------------------------------------------re-fill-m?[,]-----*/  /* ---------------------------------------------section-under-test--*/     astopwatch_mat_rec.start();    forall  (row, col)              in ms.domain {          ms[row, col]  = mat_rec_pow( ma, n_power )[row,col]                        + mat_rec_pow( mb, n_power )[row,col];    } /* ---------------------------------------------section-under-test--*/     astopwatch_mat_rec.start();  /* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| perf--*/  writeln( ".fillrandom() took",           astopwatch_rnd_gen.elapsed( time.timeunits.microseconds ), " [us] a[,], b[,] having ", 2 * ( l_size * l_size ), dtype, " elements in total." ); writeln(         "\n <section-under-test> took ", astopwatch_lin_alg.elapsed( time.timeunits.microseconds ), " [us] in [lin_alg] mode ( a^n + b^n ) [", l_size, ",", l_size, "] on <tio>-ide",         "\n <section-under-test> took ", astopwatch_mat_rec.elapsed( time.timeunits.microseconds ), " [us] in [mat_rec] mode ( a^n + b^n ) [", l_size, ",", l_size, "] on <tio>-ide",         "\n <section-under-test> took ", astopwatch_arr_rec.elapsed( time.timeunits.microseconds ), " [us] in [arr_rec] mode ( a^n + b^n ) [", l_size, ",", l_size, "] on <tio>-ide"          ); /* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| inf--*/  writeln(                     "<tio>-ide-localespace is: ", localespace, " massive. code executing [here], being locale ", here.id  );                                                in    localespace     writeln(                 "          locale #", i, "'s id is: ", locales[i].id ); 

blas + atlas protest if tried compiled/linked >>> @ <tio>-ide, whereas admins confirmed have been installed , reviewed / acknowledged both modules in-place ( [ok]: solved <tio>-ide site-admins , brad - both deserve great )

/usr/bin/ld: cannot find -lblas /usr/bin/ld: cannot find -latlas 

<tio>-ide admin's + brad's advice helped work

process-performance on single-locale, ( threaded version atlas ):

.fillrandom()         took  582125 [us] a[,], b[,] having 2000000-real(64) elements in total.      <section-under-test> took 2702530 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide 

--print-commands compiler-switch reported

gcc    -i/opt/chapel//lib/chapel/1.16/third-party/qthread/install/linux64-gnu-native-flat/include        -i/opt/chapel//lib/chapel/1.16/third-party/hwloc/install/linux64-gnu-native-flat/include        -dchpl_tasks_model_h=\"tasks-qthreads.h\"        -dchpl_threads_model_h=\"threads-none.h\"        -dchpl_wide_pointer_struct        -dchpl_jemalloc_prefix=chpl_je_        -dchpl_has_gmp        -wno-unused        -wno-uninitialized        -wno-pointer-sign        -wno-tautological-compare        -wno-stringop-overflow        -wno-strict-overflow        -c        -o /tmp/chpl-runner-15040.deleteme/.bin.tio.tmp.o        -i/opt/chapel//lib/chapel/1.16/third-party/qthread/install/linux64-gnu-native-flat/include        -i.        -i/opt/chapel//lib/chapel/1.16/runtime/include/localemodels/flat        -i/opt/chapel//lib/chapel/1.16/runtime/include/localemodels        -i/opt/chapel//lib/chapel/1.16/runtime/include/comm/none        -i/opt/chapel//lib/chapel/1.16/runtime/include/comm        -i/opt/chapel//lib/chapel/1.16/runtime/include/tasks/qthreads        -i/opt/chapel//lib/chapel/1.16/runtime/include/threads/none        -i/opt/chapel//lib/chapel/1.16/runtime/include        -i/opt/chapel//lib/chapel/1.16/runtime/include/qio        -i/opt/chapel//lib/chapel/1.16/runtime/include/atomics/intrinsics        -i/opt/chapel//lib/chapel/1.16/runtime/include/mem/jemalloc        -i/opt/chapel//lib/chapel/1.16/third-party/utf8-decoder        -i/opt/chapel/share/chapel/1.16/runtime//../build/runtime/linux64/gnu/arch-native/loc-flat/comm-none/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-intrinsics/gmp/hwloc/re2/wide-struct/fs-none/include        -i/opt/chapel//lib/chapel/1.16/third-party/jemalloc/install/linux64-gnu-native/include        -i/opt/chapel//lib/chapel/1.16/third-party/gmp/install/linux64-gnu-native/include        -i/opt/chapel//lib/chapel/1.16/third-party/hwloc/install/linux64-gnu-native-flat/include /tmp/chpl-runner-15040.deleteme/_main.c  g++    -l/opt/chapel//lib/chapel/1.16/third-party/qthread/install/linux64-gnu-native-flat/lib        -wl,-rpath,/opt/chapel//lib/chapel/1.16/third-party/qthread/install/linux64-gnu-native-flat/lib        -l/opt/chapel//lib/chapel/1.16/third-party/jemalloc/install/linux64-gnu-native/lib        -l/opt/chapel//lib/chapel/1.16/third-party/gmp/install/linux64-gnu-native/lib        -wl,-rpath,/opt/chapel//lib/chapel/1.16/third-party/gmp/install/linux64-gnu-native/lib        -l/opt/chapel//lib/chapel/1.16/third-party/hwloc/install/linux64-gnu-native-flat/lib        -wl,-rpath,/opt/chapel//lib/chapel/1.16/third-party/hwloc/install/linux64-gnu-native-flat/lib        -l/opt/chapel//lib/chapel/1.16/third-party/re2/install/linux64-gnu-native/lib        -wl,-rpath,/opt/chapel//lib/chapel/1.16/third-party/re2/install/linux64-gnu-native/lib        -o /tmp/chpl-runner-15040.deleteme/.bin.tio.tmp        -l/opt/chapel//lib/chapel/1.16/runtime/lib/linux64/gnu/arch-native/loc-flat/comm-none/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-intrinsics/gmp/hwloc/re2/wide-struct/fs-none        /tmp/chpl-runner-15040.deleteme/.bin.tio.tmp.o        /opt/chapel//lib/chapel/1.16/runtime/lib/linux64/gnu/arch-native/loc-flat/comm-none/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-intrinsics/gmp/hwloc/re2/wide-struct/fs-none/main.o        -lchpl        -lm        -lblas -l/usr/lib64/atlas        -ltatlas        -lgmp        -lchpl        -lqthread -l/opt/chapel//lib/chapel/1.16/third-party/hwloc/install/linux64-gnu-native-flat/lib        -l/opt/chapel//lib/chapel/1.16/third-party/jemalloc/install/linux64-gnu-native/lib        -ljemalloc        -lhwloc        -lm        -lre2        -lpthread 

last, not least, let me share
some final remarks
on performance-data, setup overheads , range of experimentally explorable boundaries

while biggest [par] powers outside scope-of-testability ( administratively not available obvious reasons on public sponsored <tio>-ide infrastructure ) , might further investigated on more realistic computing devices, example available within cray's internal resources available , used cray's chapel-initiative, the essence of both benefits language expressivity , actual state of language implementation impressive.

some additional issues investigated may be:

  • an observed random.fillrandom() performance < 22+ [ns/b]- generated & stored,
    compared py3.numpy.random.rand() peaking ~ 1.54 [ns/b] generated & stored
    on identical physical infrastructure

  • linearalgebra. methods, yet tested on large-scale, dense .matrix instances, multi-locale, distributed, [par] enabled computing infrastructures ought demonstrate powers , bring in remarkable gains expected


acknowledgements

once more, thank dennis @<tio>-ide support & brad @ cray + best team, driving , extending great software project still grow better , better.


writeln(// "______________________________________chplcode.<-lsatlas> implementation___________________________________ serial-mode [atlas] support [linearalgebra] module" );            "______________________________________chplcode.<-ltatlas> implementation_________________________________ threaded-mode [atlas] support [linearalgebra] module" );         /*             experimentally collected performance-data show , support below,            there constant,            matrix scale-invariant,            additional overhead of ~ +440 ~ +500 [ms]                       threaded-mode [atlas] support [linearalgebra] module,            believed            associated setup of thread-pool & al processing pre-arrangements,                       ought accounted in            overhead-aware amdahl law formulation pre-validations of feasible choice            whether [par], using -ltatlas            or      [seq], using -lsatlas support [linearalgebra] module implementation            yield faster processing times.            */                      use time;  var astopwatch_rnd_gen: time.timer; var astopwatch_lin_alg: time.timer; var astopwatch_mat_rec: time.timer; var astopwatch_arr_rec: time.timer;  config const n_power =         5; config const l_size  =      2600;        const indices = 1..l_size;        const adomain = {indices, indices};         var   a: [adomain] real(64);        var   b: [adomain] real(64);        const dtype =    "-real(64)";        var   s: [adomain] real(64);  use random; /* ---------------------------------------------section-under-test--*/     astopwatch_rnd_gen.start();     random.fillrandom(  );     random.fillrandom(  b ); /* ---------------------------------------------section-under-test--*/     astopwatch_rnd_gen.stop(); writeln( ".fillrandom()        took ",                                     astopwatch_rnd_gen.elapsed( time.timeunits.microseconds ),          " [us] a[,], b[,] having ", 2 * ( l_size * l_size ), dtype, " elements in total." );       use linearalgebra; var ma = linearalgebra.matrix( ); var mb = linearalgebra.matrix( b ); var ms = linearalgebra.matrix( s );  /* ---------------------------------------------section-under-test--*/     astopwatch_lin_alg.start();     ms = linearalgebra.matplus( linearalgebra.matpow( ma, n_power ),                                 linearalgebra.matpow( mb, n_power )                                 ); /* ---------------------------------------------section-under-test--*/     astopwatch_lin_alg.stop(); /* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| perf--*/  writeln( ".fillrandom()        took ", astopwatch_rnd_gen.elapsed( time.timeunits.microseconds ), " [us] a[,], b[,] having ", 2 * ( l_size * l_size ), dtype, " elements in total." ); writeln(        "\n<section-under-test> took ", astopwatch_lin_alg.elapsed( time.timeunits.microseconds ), " [us] in [lin_alg] mode ( a^n + b^n ) [", l_size, ",", l_size, "] on <tio>-ide"    // ,"\n<section-under-test> took ", astopwatch_mat_rec.elapsed( time.timeunits.microseconds ), " [us] in [mat_rec] mode ( a^n + b^n ) [", l_size, ",", l_size, "] on <tio>-ide"    // ,"\n<section-under-test> took ", astopwatch_arr_rec.elapsed( time.timeunits.microseconds ), " [us] in [arr_rec] mode ( a^n + b^n ) [", l_size, ",", l_size, "] on <tio>-ide"         ); /* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| inf--*/  writeln(                     "<tio>-ide-localespace is: ", localespace, " massive. code executing [here], being locale ", here.id  );                                                in    localespace     writeln(                 "          locale #", i, "'s id is: ", locales[i].id,                                            "\n                                having name of <_",                                                                     locales[i].name,                                        "_>\n                                having { real:"              ,                                                                  // locales[i].numpus( logical = false, accessible =  true ),   " | virt:"                       ,                                                                     locales[i].numpus(           false,               true ),   " | virt:"                       ,                                                                  // locales[i].numpus( logical =  true, accessible =  true ),   " | teor:"                       ,                                                                     locales[i].numpus(            true,               true ),   " | teor:"                       ,                                                                  // locales[i].numpus( logical =  true, accessible = false ),   " } punits"                      ,                                                                     locales[i].numpus(            true,              false ),   " } punits\n                                having max ",                                                                     locales[i].maxtaskpar,                                      " 'just'-[concurrent]-tasks\n                                having max ",                                                                     locales[i].callstacksize,                                   "-callstacksize."                                                                     );  /* ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| res:  .fillrandom()        took      560773 [us] a[,], b[,] having  2000000-real(64) elements in total. <best-case>s in serial-mode [atlas] support [linearalgebra] module .fillrandom()        took     2521920 [us] a[,], b[,] having  8000000-real(64) elements in total. .fillrandom()        took     2717450 [us] a[,], b[,] having  9680000-real(64) elements in total. .fillrandom()        took     3630820 [us] a[,], b[,] having 11520000-real(64) elements in total.  .fillrandom()        took     4429820 [us] a[,], b[,] having 13520000-real(64) elements in total. .fillrandom()        took     4048440 [us] a[,], b[,] having 13520000-real(64) elements in total. ( in threaded-mode ) faster, not systematically  .fillrandom()        took     4793110 [us] a[,], b[,] having 15680000-real(64) elements in total.  .fillrandom()        took     5055060 [us] a[,], b[,] having 15680000-real(64) elements in total. ( in threaded-mode )  .fillrandom()        took     5630540 [us] a[,], b[,] having 18000000-real(64) elements in total.    <tio>-ide-localespace is: {0..0} massive. code executing [here], being locale 0           locale #0's id is: 0                                 having name of <_tio2_>                                 having { real:1 | virt:1 | teor:1 } punits                                 having max 4 'just'-[concurrent]-tasks                                 having max 8388608-callstacksize.  <section-under-test> took    15110000 [us] in [lin_alg] mode ( a^n + b^n ) [2000,2000] on <tio>-ide <best-case>s in serial-mode <section-under-test> took    17880300 [us] in [lin_alg] mode ( a^n + b^n ) [2200,2200] on <tio>-ide <section-under-test> took    25094100 [us] in [lin_alg] mode ( a^n + b^n ) [2400,2400] on <tio>-ide <section-under-test> took    31550900 [us] in [lin_alg] mode ( a^n + b^n ) [2600,2600] on <tio>-ide <section-under-test> took    32996500 [us] in [lin_alg] mode ( a^n + b^n ) [2600,2600] on <tio>-ide <section-under-test> took    34390400 [us] in [lin_alg] mode ( a^n + b^n ) [2800,2800] on <tio>-ide <section-under-test> kill-ed                                               [3000,3000] on <tio>-ide, having 18,000,000-real(64) elements .fillrandom()-ed in ~ 5.6 [s] time.  ______________________________________chplcode.<-lsatlas> implementation___________________________________ serial-mode [atlas] support [linearalgebra] module                                                   ^________________________________________________________ serial-mode [atlas] support [linearalgebra] module .fillrandom()        took 5.60773e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.62970e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.64366e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.70291e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.75086e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.85121e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 6.25645e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 6.77903e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 6.96932e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 6.98700e+05 [us] a[,], b[,] having 2000000-real(64) elements in total.  <section-under-test> took 2.06538e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.07902e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.08725e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.12497e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.13071e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.22075e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.28035e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.32674e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.33844e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.35908e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide   ______________________________________chplcode.<-ltatlas> implementation_________________________________ threaded-mode [atlas] support [linearalgebra] module                                                   ^______________________________________________________ threaded-mode [atlas] support [linearalgebra] module .fillrandom()        took 5.68652e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.73797e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.74911e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.81389e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.87079e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 5.92182e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 6.20989e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 6.62606e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 6.69875e+05 [us] a[,], b[,] having 2000000-real(64) elements in total. .fillrandom()        took 6.71270e+05 [us] a[,], b[,] having 2000000-real(64) elements in total.  <section-under-test> took 2.53459e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.57695e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.59966e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.61859e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.70356e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.76325e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.85588e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.92058e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.92204e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide <section-under-test> took 2.97887e+06 [us] in [lin_alg] mode ( a^n + b^n ) [1000,1000] on <tio>-ide   <tio>-ide-localespace is: {0..0} massive.             +--------------------------------<_tio2_> code executing [here], being locale 0              v           locale #0's id is: 0, having name of <_tio2_>                                 having { real:1 | virt:1 | teor:1 } punits,                                 having max 4 just-[concurent]-tasks,                                 having 8388608-callstacksize.                                                        +--------------------------------<_tio3_>                                                       v ...                             having name of <_tio3_>                                 having { real:1 | virt:1 | teor:1 } punits                                 having max 4 'just'-[concurrent]-tasks                                 having max 8388608-callstacksize.   */ 

Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -