Chapel-1.16.0 pre-release Internal error (-999) what other approach possible to a prior domain-size agnostic declaration? -
prototyping has returned chapel 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 chapel [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 chapel language expressivity , actual state of language implementation impressive.
some additional issues investigated may be:
an observed
random.fillrandom()performance< 22+ [ns/b]- generated & stored,
comparedpy3.numpy.random.rand()peaking~ 1.54 [ns/b]generated & stored
on identical physical infrastructurelinearalgebra.methods, yet tested on large-scale, dense.matrixinstances, 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 chapel 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
Post a Comment