1
0
mirror of https://github.com/paboyle/Grid.git synced 2026-04-23 03:56:13 +01:00

Compare commits

..

1486 Commits

Author SHA1 Message Date
paboyle af855cc129 Updating to fix peek poke to checkerboarded arrays since Chulwoo needs this. 2015-12-12 07:11:46 +00:00
paboyle a5314eddbb Update todo list 2015-12-10 23:34:03 +00:00
paboyle 78ca15fdd8 Merge branch 'aportelli-master' 2015-12-10 23:15:16 +00:00
paboyle 47fe6b5a7c Merge branch 'master' of https://github.com/aportelli/Grid into aportelli-master 2015-12-10 23:14:52 +00:00
paboyle b3ef09a54d Merge branch 'master' of https://github.com/paboyle/Grid 2015-12-10 23:05:38 +00:00
paboyle 8ed3940048 New files for Chroma regression 2015-12-10 22:55:59 +00:00
paboyle 3ce10aa975 Fix a regression failure on Mobius; chroma regression added 2015-12-10 22:55:00 +00:00
Azusa Yamaguchi a32a59fc43 Merge branch 'master' of https://github.com/paboyle/Grid 2015-12-09 12:48:44 +00:00
portelli 200de272ed IO: serialisable enums 2015-12-08 13:54:00 +00:00
portelli d68a72e28b IO: code cleaning and string binary IO fix 2015-12-08 13:53:33 +00:00
portelli ab45f029f4 ignore Config.h.in 2015-12-08 13:52:44 +00:00
portelli 17f9268a55 XmlIO: minor code cleaning 2015-12-07 18:30:00 +00:00
portelli 78f0c2595d autotool file accidentally committed 2015-12-07 18:28:06 +00:00
Peter Boyle 26161addd0 Warn fix clang 2015-11-29 11:19:12 +00:00
paboyle 93356fd246 No compile fixes on gcc/Cray 2015-11-29 03:14:44 -08:00
Peter Boyle f35fc4b76c No compile fixes 2015-11-29 10:59:11 +00:00
paboyle ca42fe6d32 Merge branch 'master' of github.com:paboyle/Grid
Merge done
Conflicts:
	lib/serialisation/XmlIO.h
	tests/Test_stencil.cc
2015-11-28 17:03:43 -08:00
paboyle b8a38f292d Domain decomposition SAP precon implemented and working but not as fast as I hoped. 2015-11-28 17:01:51 -08:00
paboyle 6b97b271ae Integer divide useful 2015-11-28 17:01:20 -08:00
paboyle fa01ae5980 integer divide 2015-11-28 17:00:34 -08:00
paboyle 113131b01c THis failed for some reason. Suspect Antonin has made more progress. 2015-11-28 16:59:59 -08:00
paboyle b2c02a6106 Runs fastst on cori 2015-11-28 16:58:16 -08:00
paboyle 02d730513a Divide function 2015-11-28 16:54:43 -08:00
paboyle d875c2bd39 More verbose useful 2015-11-28 16:54:19 -08:00
paboyle cc32ba615a Verbose changes 2015-11-28 16:53:54 -08:00
paboyle 6684739452 Better to drop KMP_AFFINITY override 2015-11-28 16:52:44 -08:00
Peter Boyle bc4b252883 Merge branch 'master' of https://github.com/paboyle/Grid 2015-11-29 00:33:01 +00:00
Peter Boyle 11cf0f08f3 This file is not yet debugged. 2015-11-29 00:32:45 +00:00
Peter Boyle fff0f00552 Modest changes 2015-11-29 00:31:57 +00:00
Peter Boyle 42e6055746 Try 1/x for hermitian indef approx 2015-11-29 00:31:19 +00:00
Peter Boyle 01231ce824 Stencil fix 2015-11-29 00:31:02 +00:00
Peter Boyle ef84d54033 precision set 2015-11-29 00:30:44 +00:00
Peter Boyle 41e8038c56 Makefile update 2015-11-29 00:30:19 +00:00
Peter Boyle 8a33846095 No compile fix 2015-11-29 00:29:58 +00:00
Peter Boyle 54f04ee5c9 Perf event interface was linux specfic and use ifdef to protect 2015-11-29 00:24:48 +00:00
Peter Boyle 825875fd48 compile fixes 2015-11-29 00:24:25 +00:00
Peter Boyle f8290bfd58 Compile fixes 2015-11-29 00:24:04 +00:00
Azusa Yamaguchi 967be91692 update merge 2015-11-26 09:51:41 +00:00
azusayamaguchi d43034d3ac Merge pull request #21 from aportelli/master
Overhaul of I/O interface
2015-11-19 11:45:50 +00:00
portelli 06f8ecea04 Merge commit '899ca41cb8c8f47771bfd37cd895cbc2184e5560' 2015-11-16 18:16:25 +00:00
portelli af19118113 new I/O interface 2015-11-16 18:14:37 +00:00
paboyle e9ff25b06b Small threading change makes a difference on Cori. 2015-11-07 00:07:05 -08:00
paboyle 05a7029600 Stencil change 2015-11-07 00:06:31 -08:00
paboyle b04b8914fd EXECINFO change 2015-11-07 00:05:57 -08:00
paboyle 7522e3f0dd Stencil interface change fix no compile 2015-11-07 00:05:10 -08:00
paboyle 1cc0d7b811 Bigger ncall as timing loops got small on cori 2015-11-07 00:04:40 -08:00
paboyle 899ca41cb8 Merge branch 'master' of github.com:paboyle/Grid
Conflicts:
	lib/qcd/action/fermion/WilsonFermion5D.cc
2015-11-06 03:50:04 -08:00
paboyle d29b4c1dee Assembler files 2015-11-06 03:48:48 -08:00
paboyle a2ff068e29 Asm and threading for many core 2015-11-06 03:47:14 -08:00
paboyle b362f8d27b Threading for many core 2015-11-06 03:46:41 -08:00
paboyle 64770d9052 Threading changes for many core and asm calls 2015-11-06 03:46:21 -08:00
paboyle 17af18dcab Changes for AVX512 assembler 2015-11-06 03:45:51 -08:00
Peter Boyle 28022755ae Stencil class name global change to StencilImpl typedef 2015-11-06 05:30:17 -06:00
Peter Boyle 98d8ba6d14 Remove autogen files from CVS 2015-11-06 05:29:07 -06:00
Peter Boyle 27813cf518 More timing detail reported 2015-11-06 05:27:13 -06:00
Peter Boyle 955b482aaf Partial optimisation of the extraction/merger of simd vecs. 2015-11-06 05:26:20 -06:00
Peter Boyle f9b2fce93b Changing whole stencil class to be template and not just single functions 2015-11-06 05:25:10 -06:00
Peter Boyle 473fa28a6c Partial optimisation; comms in x-dir for red black dslash will be slow as the checker skipping block strided
loops are non threadable. Will need to write a kernel for these instead and drive them with a lookup table
to make a look sufficiently simple to thread.
2015-11-06 05:23:23 -06:00
Peter Boyle 5d854c869c Stencil interface changes 2015-11-06 05:22:33 -06:00
Peter Boyle 880ff88362 Comms optimisation 2015-11-06 05:22:18 -06:00
Peter Boyle f85b9ddd97 Remove nonfunctioning lanczos 2015-11-06 05:21:21 -06:00
Azusa Yamaguchi 4690acc3c8 Don't know why peter committed these as they didn't compile 2015-11-06 10:31:48 +00:00
Azusa Yamaguchi 3281745fde Exec info and linux check to stop non-portable code breaking 2015-11-06 10:31:24 +00:00
Azusa Yamaguchi c2d96644a0 EXEC INFO check 2015-11-06 10:31:05 +00:00
paboyle 1159de165c Asm option for AVX512 2015-11-05 22:04:51 -08:00
paboyle 16c7993434 Merge branch 'master' of github.com:paboyle/Grid
Conflicts:
	lib/simd/Grid_avx512.h
	lib/simd/Grid_imci.h
2015-11-04 03:32:10 -08:00
paboyle 6be9716e6f New file 2015-11-04 03:26:28 -08:00
paboyle 32762346ad Better run time on KNC 2015-11-04 03:25:34 -08:00
paboyle 4a41c885ed Use Linux kernel interface to hardware performance counters. Dead useful. 2015-11-04 03:24:19 -08:00
paboyle 0f48658a27 Update minor 2015-11-04 03:23:46 -08:00
paboyle 757b31ed42 Threading for KNC mods. 2015-11-04 03:22:14 -08:00
paboyle 5aafdd7e1a Inline asm for KNL, KNC, Skylake Xeon 2015-11-04 03:21:15 -08:00
paboyle ac7d1f26ad Either blocking or lebesgue curve 2015-11-04 03:19:16 -08:00
paboyle 1a8bf938b3 Use either sub-blocking or lebesgue 2015-11-04 03:18:51 -08:00
paboyle 63a2993827 Exec info an cache blocking 2015-11-04 03:16:56 -08:00
paboyle 4e65ad21ac Adding a routine for AVX512 / IMCI with explicit assembly implementations 2015-11-04 03:15:08 -08:00
Peter Boyle dfc1de6f60 Merge branch 'master' of github.com:paboyle/Grid 2015-11-04 05:14:26 -06:00
Peter Boyle f87526a04f Make ICC happy 2015-11-04 05:14:03 -06:00
Peter Boyle 3b7576ad53 Switch off for now 2015-11-04 05:13:29 -06:00
paboyle 9b5d31ffc1 mac , mult routines
Lines# with '#' will be ignored, and an empty message aborts the commit.
2015-11-04 03:10:34 -08:00
paboyle a38762159c Inline assembly hooks for AVX 512. Better way in some ways than BAGEL to generate assembly.
Updated Grid_avx512.h
2015-11-04 03:09:06 -08:00
Peter Boyle ffc5dab17f AMD FMA4 support added for Interlagos/BlueWaters 2015-11-04 04:29:58 -06:00
Peter Boyle 96608c70d1 chrono causing some problems on Cray systems. Suspend use for now 2015-11-04 04:28:31 -06:00
Peter Boyle d35d63b171 Algorithm in 2015-11-04 04:27:44 -06:00
Peter Boyle 9183920e8b Added an even odd stencil test, shook out a problem with spread out x-direction.
Generalise test to allow different types of "Field" to be used.
2015-11-04 10:03:04 +00:00
Peter Boyle 01f286c9fe Better testing for red black cshift which was sufficient to chase down a spread out x-direction problem. 2015-11-04 10:02:17 +00:00
Peter Boyle 24044dbc56 Debugged a problem with checkerboarded cshift in the checker dimension which arose
only when mpi spread out in the checker dimension. Added a test that trapped and helped debug this
2015-11-04 10:00:55 +00:00
Peter Boyle abb23df83f formatting only 2015-11-04 10:00:27 +00:00
Peter Boyle 12c5ec813c Useful debug messages (commented out) are included for preservation in case I need to revisit this 2015-11-04 09:59:27 +00:00
Peter Boyle 1271508ca2 Bug fix for spread out in x (EO) direction.
This is really annoying -- it is very hard to thread the loops with the index
recursion on buffer offset in the red-black case. Must think of a good threading
solution here.
2015-11-04 09:57:57 +00:00
Peter Boyle ec5af35166 EO bug fix when spread out in x-direction 2015-11-04 09:56:58 +00:00
Peter Boyle b3d70a3bb2 Ncall change 2015-11-04 09:55:21 +00:00
Peter Boyle c26220e9ab EO benchmark as well as non-eo 2015-11-04 09:54:48 +00:00
Peter Boyle 0f59356e86 Problem in comms fixed 2015-11-02 00:00:15 +00:00
portelli 8709117aea Log: generalised Logger class to allow separate logs in Grid-based applications 2015-10-27 17:31:13 +00:00
portelli 1b22ce5720 tests Make.inc fix 2015-10-27 10:47:52 +00:00
portelli e6b9aa9076 Config.h removed form repository 2015-10-27 10:47:07 +00:00
portelli d9f2e2e06a Merge pull request #2 from paboyle/master
Update from Peter
2015-10-19 14:52:52 +01:00
Peter Boyle 41299da406 files added 2015-10-09 01:01:46 +02:00
Peter Boyle 8889af45ca FMA4 added 2015-10-09 01:00:53 +02:00
Peter Boyle d4289a33b8 AMD FMA4 addition 2015-10-09 00:44:20 +02:00
Peter Boyle 83afb2e26a Poly support for lanczos 2015-10-09 00:43:21 +02:00
Peter Boyle 3726fe7481 Bigger vec length 2015-10-09 00:42:54 +02:00
Peter Boyle 6d06bd9493 Minor change in commented out code 2015-10-09 00:42:21 +02:00
Peter Boyle 6ee23f409e Lanczos addition 2015-10-09 00:41:00 +02:00
Peter Boyle 2d95dac6b6 Lanczos untested/partially tested additions. In middle of shake out but at least compiles 2015-10-09 00:40:25 +02:00
Peter Boyle 44fecd4d8d Lanczos test 2015-10-09 00:39:21 +02:00
Peter Boyle 814c79f38d SIMD improvements for mac and madd use in complex for avx, sse 2015-10-09 00:38:52 +02:00
paboyle 1878bf97d0 Babbage fix 2015-09-30 16:04:01 -07:00
paboyle 3a478e5f2a No compile babbage fix 2015-09-30 16:03:05 -07:00
paboyle a660ce716b No compile babbage fix 2015-09-30 16:02:44 -07:00
paboyle f4b6d1dfea NGO stores reenabled 2015-09-30 16:02:14 -07:00
paboyle 23813ac798 No compile on babbage fix 2015-09-30 16:01:28 -07:00
paboyle af89c40462 Better timing tweaks to give sensible results on 24 threads on Edison dual ivybridge nodes. 2015-09-28 16:09:04 -07:00
Peter Boyle 9f4f65cb46 Added a decoupled memory system benchmark to remove thread synch overhead 2015-09-26 18:23:57 -07:00
Peter Boyle 64d64d1ab6 Updating to modify non-inlining permute routines and hopefully get better reg use and
enhance performance.
2015-09-25 08:55:04 -07:00
Peter Boyle 5ef42add2d Changes to remove warnings under icc; disambiguate AVX512 from IMCI correctly
and drop swizzles in AVX512. Don't know why these compiled.
2015-09-23 05:23:45 -07:00
Peter Boyle 2f38ebc446 Reintroducing the hand unrolled loops 2015-09-08 17:45:30 +01:00
Peter Boyle 638d6675ee Tested rms dH is ~ dt^4 numerically, so believe the ForceGradient is correct now.
Paranoia makes me want to diddle with the FG step to ensure dt^2 reappears.
2015-08-31 16:33:20 +01:00
Peter Boyle 357c6ab46d Reunitarise. Complete the HMC and integrator changes. 2015-08-31 16:32:04 +01:00
Peter Boyle 755dca9533 Added ForceGradient integrator. dH dropped so seems to work. Will only
believe it is right once I have pulled a dt^4 error scaling plot out.
2015-08-31 06:23:02 +01:00
Peter Boyle 29fd004d54 Unified integrator and integrator algorithm into virtual class used as a policy for the
HMC.
2015-08-30 13:39:19 +01:00
Peter Boyle eed889ea05 Update on todo list 2015-08-30 12:23:08 +01:00
Peter Boyle aa52fdadcc Global edit on HMC sector -- making GaugeField a template parameter and
preparing to pass integrator, smearing, bc's as policy classes to hmc.

Propose to unify "integrator" and integrator algorithm in a base/derived
way to override step. Want to read through ForceGradient to ensure
that abstraction covers the force gradient case.
2015-08-30 12:18:34 +01:00
Peter Boyle 76d752585b Started a tidy up in the HMC sector. Now comfortable with the two level integrators;
to a little figure out what Guido had done & why -- but there is a neat saving of force
evaluations across the nesting time boundary making use of linearity of the leapP in dt.

I cleaned up the printing, reduced the volume of code, in the process sharing printing
between all integrators. Placed an assert that the total integration time for all integrators
must match at end of trajectory.

Have now verified e-dH = 1 for nested integrators in Wilson/Wilson runs with both
Omelyan and with Leapfrog so substantial confidence gained.
2015-08-29 17:18:43 +01:00
Peter Boyle dc814f30da Binary IO file for generic Grid array parallel I/O.
Number of IO MPI tasks can be varied by selecting which
dimensions use parallel IO and which dimensions use Serial send to boss
I/O.

Thus can neck down from, say 1024 nodes = 4x4x8x8 to {1,8,32,64,128,256,1024} nodes
doing the I/O.

Interpolates nicely between ALL nodes write their data, a single boss per time-plane
in processor space [old UKQCD fortran code did this], and a single node doing all I/O.

Not sure I have the transfer sizes big enough and am not overly convinced fstream
is guaranteed to not give buffer inconsistencies unless I set streambuf size to zero.

Practically it has worked on 8 tasks, 2x1x2x2 writing /cloning NERSC configurations
on my MacOS + OpenMPI and Clang environment.

It is VERY easy to switch to pwrite at a later date, and also easy to send x-strips around from
each node in order to gather bigger chunks at the syscall level.

That would push us up to the circa 8x 18*4*8 == 4KB size write chunk, and by taking, say, x/y non
parallel we get to 16MB contiguous chunks written in multi 4KB transactions
per IOnode in 64^3 lattices for configuration I/O.

I suspect this is fine for system performance.
2015-08-26 13:40:29 +01:00
Peter Boyle 612957f057 pull in original license. 2015-08-21 10:19:08 +01:00
Peter Boyle cea8ac9a22 Credits to orig source where I found the macro tricks. 2015-08-21 10:14:53 +01:00
Peter Boyle 476da3ee62 Separated IO reader/writers into a proper abstract base,
derived relationship. Have Text/Binary/Xml versions of
Reader & Writer.

Any new Reader/Writer class inheriting the interface can give object serialisation
to any desired format now.

      new file:   lib/serialisation/BaseIO.h
      modified:   lib/serialisation/BinaryIO.h
      modified:   lib/serialisation/Serialisation.h
      modified:   lib/serialisation/TextIO.h
      modified:   lib/serialisation/XmlIO.h

The test uses the Xml, Binary and Text formats as well as cout << Object.
2015-08-21 10:06:33 +01:00
Peter Boyle 35818fdf6c Text and Binary readers 2015-08-20 23:04:38 +01:00
Peter Boyle 091785e5f5 Better list 2015-08-20 17:19:48 +01:00
Peter Boyle 77d299b414 Cosmetic 2015-08-20 16:30:52 +01:00
Peter Boyle ab81a25073 XMLReader implementation and a virtual Reader/Writer template framework.
Test_serialisation has an example of *code* *free* object serialisation
to both ostream and to XML using macro magic.

Implementing TextReader/TextWriter, YAML, JSON etc.. should be trivial
and we can use configure time options to select the default "Reader" typedef.

Present done with

"using XMLPolicy::Reader"

to pick up the default serialisation strategy.
2015-08-20 16:21:26 +01:00
portelli dd498f993e Merge pull request #1 from paboyle/master
Sync with Peter
2015-08-19 17:27:31 +02:00
Peter Boyle fdfe194c41 Threading bug in RNG fill fixed. 2015-08-19 14:41:05 +01:00
Peter Boyle 8b070ae54c Gparity now accepting twists through constructor 2015-08-19 11:26:01 +01:00
Peter Boyle 4e085dd0ed Domain wall even-odd 2f HMC with wilson gauge and PV 2f ratio now running and giving small dH.
Azusa is working hard on the rectangle term and we'll hopefully start reproducing plaquettes
from RBC-UKQCD parameters soon !

My new laptop is pretty warm and is starting to groan ;)
2015-08-19 10:26:07 +01:00
Peter Boyle e8d63c9178 Merge branch 'master' of https://github.com/paboyle/Grid 2015-08-19 05:49:00 +01:00
Peter Boyle c54c086f17 Even odd preconditioned one flavour ratio
(no support for non-const EE schur block)
2015-08-19 05:46:58 +01:00
Peter Boyle dd6bb73ee0 Added one flavour rational ratios (unprec) 2015-08-19 04:58:40 +01:00
Peter Boyle fc160eeccc Added one flavour rational ratios (unprec) 2015-08-19 04:58:40 +01:00
Peter Boyle 48db72259e EvenOdd schur decomposed mpcdagmpc version of rhmc determinant.
dH is also small and plaquette looks right.
2015-08-18 18:37:39 +01:00
Peter Boyle 570150f1d3 EvenOdd schur decomposed mpcdagmpc version of rhmc determinant.
dH is also small and plaquette looks right.
2015-08-18 18:37:39 +01:00
Peter Boyle 9c7840c3a7 rhmc for 1+1 wilson is conserving dH~0.
A good days work  ;)
2015-08-18 16:58:56 +01:00
Peter Boyle aef98b7226 rhmc for 1+1 wilson is conserving dH~0.
A good days work  ;)
2015-08-18 16:58:56 +01:00
Peter Boyle 5c364f8082 One flavour rational unprec added; untested but does compile.
Moving param structs into a single header for later connection to file I/O using
macromagic.h
2015-08-18 14:40:08 +01:00
Peter Boyle a842a6c94d One flavour rational unprec added; untested but does compile.
Moving param structs into a single header for later connection to file I/O using
macromagic.h
2015-08-18 14:40:08 +01:00
Peter Boyle 2dd9ad7b0f Update TODO list 2015-08-18 10:43:32 +01:00
Peter Boyle cd242a2637 Update TODO list 2015-08-18 10:43:32 +01:00
Peter Boyle bdcbfe9310 Even Odd two flavour ratio added and dH == small 2015-08-18 10:37:08 +01:00
Peter Boyle 9306921ded Even Odd two flavour ratio added and dH == small 2015-08-18 10:37:08 +01:00
Peter Boyle 76f3855629 Merge branch 'master' of https://github.com/paboyle/Grid 2015-08-18 09:23:58 +01:00
Peter Boyle 8621e2409f Merge branch 'master' of https://github.com/paboyle/Grid 2015-08-18 09:23:58 +01:00
Peter Boyle 6212807a77 Small dh obtained in two flavour ratio so looks ok. 2015-08-18 09:21:29 +01:00
Peter Boyle 7622f0c441 Small dh obtained in two flavour ratio so looks ok. 2015-08-18 09:21:29 +01:00
Peter Boyle 0bc38a69ce Adding PV pseudofermion in prep for DWF HMC.
Not compiled this yet, but cloned in from BFM.
2015-08-18 09:19:42 +01:00
Peter Boyle 25d0eae50c Adding PV pseudofermion in prep for DWF HMC.
Not compiled this yet, but cloned in from BFM.
2015-08-18 09:19:42 +01:00
Peter Boyle 24382d77bb Adding PV pseudofermion in prep for DWF HMC.
Not compiled this yet, but cloned in from BFM.
2015-08-17 23:14:48 +01:00
Peter Boyle ef6a9e6b07 Adding PV pseudofermion in prep for DWF HMC.
Not compiled this yet, but cloned in from BFM.
2015-08-17 23:14:48 +01:00
Peter Boyle 353d66def1 Unused apparently 2015-08-16 01:41:05 +01:00
Peter Boyle b8166af92b Unused apparently 2015-08-16 01:41:05 +01:00
Peter Boyle afeabe0d23 Tidying 2015-08-16 00:14:10 +01:00
Peter Boyle 6180487517 Tidying 2015-08-16 00:14:10 +01:00
Peter Boyle 2d6b97be06 Merge branch 'master' of https://github.com/paboyle/Grid 2015-08-16 00:13:14 +01:00
Peter Boyle 0e088d2264 Merge branch 'master' of https://github.com/paboyle/Grid 2015-08-16 00:13:14 +01:00
Peter Boyle 53da927c3c Merge branch 'master' of https://github.com/paboyle/Grid 2015-08-15 23:59:04 +01:00
Peter Boyle f0e32f12cf Merge branch 'master' of https://github.com/paboyle/Grid 2015-08-15 23:59:04 +01:00
Peter Boyle c7b50d18e7 Merge branch 'master' of https://github.com/paboyle/Grid 2015-08-15 23:56:31 +01:00
Peter Boyle 155c164b0c * Finished the template/policy style introduction of gparity, except the gparity force terms.
So valence sector looks ok.

FermionOperatorImpl.h provides the policy classes.

Expect HMC will introduce a smearing policy and a fermion representation change policy template
param. Will also probably need multi-precision work.

* HMC is running even-odd and non-checkerboarded (checked 4^4 wilson fermion/wilson gauge).

There appears to be a bug in the multi-level integrator -- <e-dH> passes with single level but
not with multi-level.

In any case there looks to be quite a bit to clean up.

This is the "const det" style implementation that is not appropriate  yet for clover since
it assumes that Mee is indept of the gauge fields. Easily fixed in future.
2015-08-15 23:25:49 +01:00
Peter Boyle 55cfc89459 * Finished the template/policy style introduction of gparity, except the gparity force terms.
So valence sector looks ok.

FermionOperatorImpl.h provides the policy classes.

Expect HMC will introduce a smearing policy and a fermion representation change policy template
param. Will also probably need multi-precision work.

* HMC is running even-odd and non-checkerboarded (checked 4^4 wilson fermion/wilson gauge).

There appears to be a bug in the multi-level integrator -- <e-dH> passes with single level but
not with multi-level.

In any case there looks to be quite a bit to clean up.

This is the "const det" style implementation that is not appropriate  yet for clover since
it assumes that Mee is indept of the gauge fields. Easily fixed in future.
2015-08-15 23:25:49 +01:00
Peter Boyle f40475f382 Reorganising the Fermion interface 2015-08-14 14:16:45 +01:00
Peter Boyle ba8c09a58e Reorganising the Fermion interface 2015-08-14 14:16:45 +01:00
Peter Boyle 045c85823b Extra test 2015-08-14 13:18:59 +01:00
Peter Boyle b3b46fd456 Extra test 2015-08-14 13:18:59 +01:00
Peter Boyle e8462790a9 Extra test 2015-08-14 13:18:59 +01:00
Peter Boyle cc63078de5 Gparity works now even if simd distributed in a Gparity twist direction.
Tested by doubling lattice in t-direction.
2015-08-14 12:57:42 +01:00
Peter Boyle 59d66eb17a Gparity works now even if simd distributed in a Gparity twist direction.
Tested by doubling lattice in t-direction.
2015-08-14 12:57:42 +01:00
Peter Boyle 4dc7c36aa8 Gparity works now even if simd distributed in a Gparity twist direction.
Tested by doubling lattice in t-direction.
2015-08-14 12:57:42 +01:00
Peter Boyle e6bed000c3 Gparity valence test now working.
Interface in FermionOperator will change a lot in future
2015-08-14 00:01:04 +01:00
Peter Boyle 028e2061e0 Gparity valence test now working.
Interface in FermionOperator will change a lot in future
2015-08-14 00:01:04 +01:00
Peter Boyle 7d3512ab21 Gparity valence test now working.
Interface in FermionOperator will change a lot in future
2015-08-14 00:01:04 +01:00
Peter Boyle fc9b36c769 Gamma5 mult direct 2015-08-13 10:51:29 +01:00
Peter Boyle 2c216a42f9 Gamma5 mult direct 2015-08-13 10:51:29 +01:00
Peter Boyle 45b01858a8 Gamma5 mult direct 2015-08-13 10:51:29 +01:00
Peter Boyle c39078162e Gparity improvements 2015-08-13 10:51:01 +01:00
Peter Boyle 145b807ba2 Gparity improvements 2015-08-13 10:51:01 +01:00
Peter Boyle 1c2d148bfa Gparity improvements 2015-08-13 10:51:01 +01:00
Peter Boyle 7e9203d8e0 Some bug fixes for more complicated types introduced with gparity 2015-08-13 10:50:34 +01:00
Peter Boyle 8d4c43327b Some bug fixes for more complicated types introduced with gparity 2015-08-13 10:50:34 +01:00
Peter Boyle 546513861f Some bug fixes for more complicated types introduced with gparity 2015-08-13 10:50:34 +01:00
Peter Boyle 6ab73c5512 Gparity test added; partial implementation -- this is Chris K's doubled lattice only
and have to regress this with the 2 flavour implementation.
2015-08-12 09:49:33 +01:00
Peter Boyle 8a0be42080 Gparity test added; partial implementation -- this is Chris K's doubled lattice only
and have to regress this with the 2 flavour implementation.
2015-08-12 09:49:33 +01:00
Peter Boyle 9183380946 Gparity test added; partial implementation -- this is Chris K's doubled lattice only
and have to regress this with the 2 flavour implementation.
2015-08-12 09:49:33 +01:00
Peter Boyle c8dca58e6d File list update. 2015-08-11 06:37:42 +01:00
Peter Boyle ded3945467 File list update. 2015-08-11 06:37:42 +01:00
Peter Boyle 04e0e9f5a0 File list update. 2015-08-11 06:37:42 +01:00
Peter Boyle 826fbb18c4 Preconditioned conjugate residual 2015-08-11 06:24:53 +01:00
Peter Boyle 9cd7f9ecad Preconditioned conjugate residual 2015-08-11 06:24:53 +01:00
Peter Boyle 69ce87fbe4 Preconditioned conjugate residual 2015-08-11 06:24:53 +01:00
Peter Boyle 07d672baeb Header 2015-08-11 06:23:38 +01:00
Peter Boyle 26f5ee0621 Header 2015-08-11 06:23:38 +01:00
Peter Boyle f165b1a120 Header 2015-08-11 06:23:38 +01:00
Peter Boyle 3903dfe6a5 Gparity modifications in the Gparity compressor variant. 2015-08-11 06:22:20 +01:00
Peter Boyle 881acaa065 Gparity modifications in the Gparity compressor variant. 2015-08-11 06:22:20 +01:00
Peter Boyle 0a9ebac514 Gparity modifications in the Gparity compressor variant. 2015-08-11 06:22:20 +01:00
Peter Boyle 1b3c93e22a Rework/global edit to enforce type templating of fermion operators.
Allows multi-precision work and paves the way for alternate BC's and such like
allowing for example G-parity which is important for K pipi programme.
In particular, can drive an extra flavour index into the fermion fields
using template types.
2015-08-10 20:47:44 +01:00
Peter Boyle aeb7442d8f Rework/global edit to enforce type templating of fermion operators.
Allows multi-precision work and paves the way for alternate BC's and such like
allowing for example G-parity which is important for K pipi programme.
In particular, can drive an extra flavour index into the fermion fields
using template types.
2015-08-10 20:47:44 +01:00
Peter Boyle 84a66476ab Rework/global edit to enforce type templating of fermion operators.
Allows multi-precision work and paves the way for alternate BC's and such like
allowing for example G-parity which is important for K pipi programme.
In particular, can drive an extra flavour index into the fermion fields
using template types.
2015-08-10 20:47:44 +01:00
Peter Boyle 2be8df93ad Adding components for even odd decomposed determinant in HMC.
dH not yet conserved, so something wrong in the eo force code still
2015-08-07 08:37:15 +01:00
Peter Boyle ce34856e32 Adding components for even odd decomposed determinant in HMC.
dH not yet conserved, so something wrong in the eo force code still
2015-08-07 08:37:15 +01:00
Peter Boyle a01aa156b9 Adding components for even odd decomposed determinant in HMC.
dH not yet conserved, so something wrong in the eo force code still
2015-08-07 08:37:15 +01:00
Peter Boyle b5a483ae60 Continued fraction overlap, partial fraction overlap force terms have a successful
test passing.
2015-08-01 22:48:21 +09:00
Peter Boyle d98e8366a0 Continued fraction overlap, partial fraction overlap force terms have a successful
test passing.
2015-08-01 22:48:21 +09:00
Peter Boyle 6ec087d43c Continued fraction overlap, partial fraction overlap force terms have a successful
test passing.
2015-08-01 22:48:21 +09:00
Peter Boyle bb372a6a8a Merge problem fixed 2015-08-01 22:30:00 +09:00
Peter Boyle 742db5d8b4 Merge problem fixed 2015-08-01 22:30:00 +09:00
Peter Boyle 772cd8199d Merge problem fixed 2015-08-01 22:30:00 +09:00
Peter Boyle 5e9bef8a1b Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
	lib/qcd/hmc/HMC.h
	tests/Make.inc
	tests/Test_hmc_WilsonFermionGauge.cc
2015-08-01 22:24:54 +09:00
Peter Boyle a1d1dc96d6 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
	lib/qcd/hmc/HMC.h
	tests/Make.inc
	tests/Test_hmc_WilsonFermionGauge.cc
2015-08-01 22:24:54 +09:00
Peter Boyle 35feb93f56 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
	lib/qcd/hmc/HMC.h
	tests/Make.inc
	tests/Test_hmc_WilsonFermionGauge.cc
2015-08-01 22:24:54 +09:00
Peter Boyle bb7d8535aa Test for DWF force term passes 2015-08-01 22:07:05 +09:00
Peter Boyle 4866467e98 Test for DWF force term passes 2015-08-01 22:07:05 +09:00
Peter Boyle f37552a385 Test for DWF force term passes 2015-08-01 22:07:05 +09:00
Peter Boyle 848104b1a9 Changes making force term test for DWF pass. 2015-08-01 22:06:07 +09:00
Peter Boyle 2994274267 Changes making force term test for DWF pass. 2015-08-01 22:06:07 +09:00
Peter Boyle 2157a6919a Changes making force term test for DWF pass. 2015-08-01 22:06:07 +09:00
Peter Boyle 8627e237c8 Jackson smoothed chebyshev and (untested) completion of force terms
for Cayley, Partial and Cont fraction dwf and overlap.
have even odd and unprec forces.
2015-08-01 05:58:35 +09:00
Peter Boyle 1d0be956ae Jackson smoothed chebyshev and (untested) completion of force terms
for Cayley, Partial and Cont fraction dwf and overlap.
have even odd and unprec forces.
2015-08-01 05:58:35 +09:00
Peter Boyle 1d67d29183 Jackson smoothed chebyshev and (untested) completion of force terms
for Cayley, Partial and Cont fraction dwf and overlap.
have even odd and unprec forces.
2015-08-01 05:58:35 +09:00
neo 702ab15b6a Amending a merge mistake 2015-07-30 17:21:42 +09:00
neo f78cea58fa Amending a merge mistake 2015-07-30 17:21:42 +09:00
neo 3dd846c93c Amending a merge mistake 2015-07-30 17:21:42 +09:00
neo bcdc67b152 Small change in the HMC interface.
Example of multiple levels in the WilsonFermion hmc test.

Merge remote-tracking branch 'upstream/master'

Conflicts:
	lib/qcd/hmc/HMC.h
	lib/qcd/hmc/integrators/Integrator.h
	lib/qcd/hmc/integrators/Integrator_algorithm.h
	tests/Test_simd.cc
2015-07-30 17:16:57 +09:00
neo c2aff0ccd4 Small change in the HMC interface.
Example of multiple levels in the WilsonFermion hmc test.

Merge remote-tracking branch 'upstream/master'

Conflicts:
	lib/qcd/hmc/HMC.h
	lib/qcd/hmc/integrators/Integrator.h
	lib/qcd/hmc/integrators/Integrator_algorithm.h
	tests/Test_simd.cc
2015-07-30 17:16:57 +09:00
neo 490009745c Small change in the HMC interface.
Example of multiple levels in the WilsonFermion hmc test.

Merge remote-tracking branch 'upstream/master'

Conflicts:
	lib/qcd/hmc/HMC.h
	lib/qcd/hmc/integrators/Integrator.h
	lib/qcd/hmc/integrators/Integrator_algorithm.h
	tests/Test_simd.cc
2015-07-30 17:16:57 +09:00
Peter Boyle 68d9463be5 Bug in two flav pseudofermion corrected to reimport gauge field upon rejection.
exp(-DeltaH) = 1 now, and plaquette is sensible. Will reproduce an old Wilson Gauge
Wilson Fermion SCRI plaquette with precision in mass matching shortly.
2015-07-29 21:02:07 +09:00
Peter Boyle de153b70ce Bug in two flav pseudofermion corrected to reimport gauge field upon rejection.
exp(-DeltaH) = 1 now, and plaquette is sensible. Will reproduce an old Wilson Gauge
Wilson Fermion SCRI plaquette with precision in mass matching shortly.
2015-07-29 21:02:07 +09:00
Peter Boyle 9ff0b2987c Bug in two flav pseudofermion corrected to reimport gauge field upon rejection.
exp(-DeltaH) = 1 now, and plaquette is sensible. Will reproduce an old Wilson Gauge
Wilson Fermion SCRI plaquette with precision in mass matching shortly.
2015-07-29 21:02:07 +09:00
Peter Boyle 0b603225d1 Two flavour HMC for Wilson/Wilson is conserving energy.
Still to check plaq and <e(-dH)>, but nevertheless this is
progress
2015-07-29 17:53:39 +09:00
Peter Boyle cc4ca48d13 Two flavour HMC for Wilson/Wilson is conserving energy.
Still to check plaq and <e(-dH)>, but nevertheless this is
progress
2015-07-29 17:53:39 +09:00
Peter Boyle 4fe110bd07 Two flavour HMC for Wilson/Wilson is conserving energy.
Still to check plaq and <e(-dH)>, but nevertheless this is
progress
2015-07-29 17:53:39 +09:00
Peter Boyle f4c74e34d8 Committing incomplete work for parameter file I/O.
MacroMagic.h is central. Guido and I plan to move
over to generating virtual (XML, JSON, YAML, text, binary) encoding
from macro based system.
2015-07-27 18:32:28 +09:00
Peter Boyle bc09d7c3bd Committing incomplete work for parameter file I/O.
MacroMagic.h is central. Guido and I plan to move
over to generating virtual (XML, JSON, YAML, text, binary) encoding
from macro based system.
2015-07-27 18:32:28 +09:00
Peter Boyle 4cc2ef84d3 Committing incomplete work for parameter file I/O.
MacroMagic.h is central. Guido and I plan to move
over to generating virtual (XML, JSON, YAML, text, binary) encoding
from macro based system.
2015-07-27 18:32:28 +09:00
Peter Boyle 51031dd46c Files renamed 2015-07-27 18:30:19 +09:00
Peter Boyle 4c3f36b80c Files renamed 2015-07-27 18:30:19 +09:00
Peter Boyle 019f7a802e Files renamed 2015-07-27 18:30:19 +09:00
Peter Boyle 63015324c1 Two flavour pseudofermion action 2015-07-26 12:28:03 +09:00
Peter Boyle 9de40578d3 Two flavour pseudofermion action 2015-07-26 12:28:03 +09:00
Peter Boyle 97b41c41b0 Two flavour pseudofermion action 2015-07-26 12:28:03 +09:00
Peter Boyle 36b8f35eed Elemental force term for Wilson dslash added and tests thereof passing.
Now need to construct pseudofermion two flavour, ratio, one flavour, ratio
action fragments.
2015-07-26 10:54:38 +09:00
Peter Boyle d7e6b65a76 Elemental force term for Wilson dslash added and tests thereof passing.
Now need to construct pseudofermion two flavour, ratio, one flavour, ratio
action fragments.
2015-07-26 10:54:38 +09:00
Peter Boyle d9d4c5916a Elemental force term for Wilson dslash added and tests thereof passing.
Now need to construct pseudofermion two flavour, ratio, one flavour, ratio
action fragments.
2015-07-26 10:54:38 +09:00
Peter Boyle a4953610bb Merge branch 'master' of https://github.com/paboyle/Grid 2015-07-24 01:33:19 +09:00
Peter Boyle ba4989dd45 Merge branch 'master' of https://github.com/paboyle/Grid 2015-07-24 01:33:19 +09:00
Peter Boyle 1d70a45d84 Merge branch 'master' of https://github.com/paboyle/Grid 2015-07-24 01:33:19 +09:00
Peter Boyle 5e370db6c5 Sizable improvement in multigrid for unsquared.
6000 matmuls CG unprec
2000 matmuls CG prec (4000 eo muls)
1050 matmuls PGCR on 16^3 x 32 x 8 m=.01

Substantial effort on timing and logging infrastructure
2015-07-24 01:31:13 +09:00
Peter Boyle 28bdc90908 Sizable improvement in multigrid for unsquared.
6000 matmuls CG unprec
2000 matmuls CG prec (4000 eo muls)
1050 matmuls PGCR on 16^3 x 32 x 8 m=.01

Substantial effort on timing and logging infrastructure
2015-07-24 01:31:13 +09:00
Peter Boyle d1afebf71e Sizable improvement in multigrid for unsquared.
6000 matmuls CG unprec
2000 matmuls CG prec (4000 eo muls)
1050 matmuls PGCR on 16^3 x 32 x 8 m=.01

Substantial effort on timing and logging infrastructure
2015-07-24 01:31:13 +09:00
paboyle e0ed320827 Bug work around 2015-07-21 22:49:36 -07:00
paboyle c67bc303db Bug work around 2015-07-21 22:49:36 -07:00
paboyle f62f1699cb Bug work around 2015-07-21 22:49:36 -07:00
paboyle ee37130b5e Removed troublesome macros 2015-07-21 22:41:01 -07:00
paboyle 91629a24fe Removed troublesome macros 2015-07-21 22:41:01 -07:00
paboyle 5a68a9bbd4 Removed troublesome macros 2015-07-21 22:41:01 -07:00
Peter Boyle 5b475d5e08 5x speed up now 2015-07-22 00:30:05 +09:00
Peter Boyle d6a2d734d3 5x speed up now 2015-07-22 00:30:05 +09:00
Peter Boyle 11c99d5e66 5x speed up now 2015-07-22 00:30:05 +09:00
neo 479912a5ed Merge remote-tracking branch 'upstream/master' 2015-07-21 17:17:50 +09:00
neo d01310383f Merge remote-tracking branch 'upstream/master' 2015-07-21 17:17:50 +09:00
neo 5fc6af1c77 Merge remote-tracking branch 'upstream/master' 2015-07-21 17:17:50 +09:00
Peter Boyle b382660425 INSTALL 2015-07-21 13:58:57 +09:00
Peter Boyle 1c3ab017e8 INSTALL 2015-07-21 13:58:57 +09:00
Peter Boyle 135998acf5 INSTALL 2015-07-21 13:58:57 +09:00
Peter Boyle 987801c86d Merge 2015-07-21 13:56:22 +09:00
Peter Boyle 8925845684 Merge 2015-07-21 13:56:22 +09:00
Peter Boyle 4e94ddad46 Merge 2015-07-21 13:56:22 +09:00
Peter Boyle f8be0aeed1 No changes shown on git diff 2015-07-21 13:54:09 +09:00
Peter Boyle e34f8adbf4 No changes shown on git diff 2015-07-21 13:54:09 +09:00
Peter Boyle 5ac625f716 No changes shown on git diff 2015-07-21 13:54:09 +09:00
Peter Boyle 9651ab661b Small pretty layout change 2015-07-21 13:53:23 +09:00
Peter Boyle c7925e5c9b Small pretty layout change 2015-07-21 13:53:23 +09:00
Peter Boyle 8d654a86de Small pretty layout change 2015-07-21 13:53:23 +09:00
Peter Boyle fb65953d82 This was needed to compile on gcc 2015-07-21 13:52:59 +09:00
Peter Boyle 9d18773fbc This was needed to compile on gcc 2015-07-21 13:52:59 +09:00
Peter Boyle df2aac01f4 This was needed to compile on gcc 2015-07-21 13:52:59 +09:00
Peter Boyle 98dfc9254f This file is being developed and will remain hacky until the new algorithm
is complete
2015-07-21 13:52:23 +09:00
Peter Boyle 81987b64a6 This file is being developed and will remain hacky until the new algorithm
is complete
2015-07-21 13:52:23 +09:00
Peter Boyle 487fde8496 This file is being developed and will remain hacky until the new algorithm
is complete
2015-07-21 13:52:23 +09:00
Peter Boyle 44cf212720 Printing change 2015-07-21 13:51:56 +09:00
Peter Boyle 821ac7b6f4 Printing change 2015-07-21 13:51:56 +09:00
Peter Boyle 0007669381 Printing change 2015-07-21 13:51:56 +09:00
Peter Boyle cbec16fedd More info 2015-07-21 13:48:57 +09:00
Peter Boyle 01f9b1f6a4 More info 2015-07-21 13:48:57 +09:00
Peter Boyle a700933611 More info 2015-07-21 13:48:57 +09:00
Peter Boyle 64703207d4 Tweaks to subspace set up to put in g5 r5 hermiticity 2015-07-21 12:13:03 +09:00
Peter Boyle 59baa15d9f Tweaks to subspace set up to put in g5 r5 hermiticity 2015-07-21 12:13:03 +09:00
Peter Boyle c515d069cd Tweaks to subspace set up to put in g5 r5 hermiticity 2015-07-21 12:13:03 +09:00
Peter Boyle 021478af3b verbose 2015-07-21 12:12:29 +09:00
Peter Boyle 8a4f9d2367 verbose 2015-07-21 12:12:29 +09:00
Peter Boyle 8a7b7f1e2b verbose 2015-07-21 12:12:29 +09:00
neo 0ea846dcdc Merge remote-tracking branch 'upstream/master'
Conflicts:
	configure
2015-07-21 11:57:34 +09:00
neo 52e9c6b8db Merge remote-tracking branch 'upstream/master'
Conflicts:
	configure
2015-07-21 11:57:34 +09:00
neo a9c15626e1 Merge remote-tracking branch 'upstream/master'
Conflicts:
	configure
2015-07-21 11:57:34 +09:00
Guido Cossu d6489c8bf5 Merge pull request #16 from aportelli/master
AX_GCC_X86_AVX_XGETBV macro fix
2015-07-21 11:55:40 +09:00
Guido Cossu 7fc26258c7 Merge pull request #16 from aportelli/master
AX_GCC_X86_AVX_XGETBV macro fix
2015-07-21 11:55:40 +09:00
Guido Cossu 5c721b0aa0 Merge pull request #16 from aportelli/master
AX_GCC_X86_AVX_XGETBV macro fix
2015-07-21 11:55:40 +09:00
neo ab916d80fd More NEON functionalities 2015-07-21 11:52:15 +09:00
neo 7343a95772 More NEON functionalities 2015-07-21 11:52:15 +09:00
neo 9adaeb061a More NEON functionalities 2015-07-21 11:52:15 +09:00
portelli b0eedfd7ba fix of AX_GCC_X86_AVX_XGETBV macro 2015-07-17 11:15:57 +09:00
portelli 3fc9c00465 fix of AX_GCC_X86_AVX_XGETBV macro 2015-07-17 11:15:57 +09:00
portelli 73c4a1dac9 fix of AX_GCC_X86_AVX_XGETBV macro 2015-07-17 11:15:57 +09:00
portelli 6b8190a032 gitignore update 2015-07-17 11:15:17 +09:00
portelli 807e329a18 gitignore update 2015-07-17 11:15:17 +09:00
portelli ce7c24989d gitignore update 2015-07-17 11:15:17 +09:00
Peter Boyle 2da20f1443 This file drives me crazy 2015-07-11 23:06:31 +09:00
Peter Boyle ab509d3f8e This file drives me crazy 2015-07-11 23:06:31 +09:00
Peter Boyle 7907e4ca03 This file drives me crazy 2015-07-11 23:06:31 +09:00
neo c431816393 Cleaning up files for HMC 2015-07-07 14:59:37 +09:00
neo 48ae886c32 Cleaning up files for HMC 2015-07-07 14:59:37 +09:00
neo 97afe4125f Cleaning up files for HMC 2015-07-07 14:59:37 +09:00
neo 1e9317e5cf Simplifying HMC syntax for the final user 2015-07-06 18:32:20 +09:00
neo 19a1ffedcc Simplifying HMC syntax for the final user 2015-07-06 18:32:20 +09:00
neo 0f21c38ff8 Simplifying HMC syntax for the final user 2015-07-06 18:32:20 +09:00
neo 510f55ba30 Rearranging files in hmc 2015-07-06 16:46:43 +09:00
neo 32e6887d5f Rearranging files in hmc 2015-07-06 16:46:43 +09:00
neo fa42b652e5 Rearranging files in hmc 2015-07-06 16:46:43 +09:00
neo f95db88d19 Added minimum norm integrator
Little rearrangement of HMC and integrator classes
2015-07-06 16:17:32 +09:00
neo 1991852025 Added minimum norm integrator
Little rearrangement of HMC and integrator classes
2015-07-06 16:17:32 +09:00
neo 68fe0769a1 Added minimum norm integrator
Little rearrangement of HMC and integrator classes
2015-07-06 16:17:32 +09:00
neo 12e1682a87 HMC for Wilson Gauge action works
Fixed bug in momenta generation
2015-07-06 12:58:49 +09:00
neo 2718038977 HMC for Wilson Gauge action works
Fixed bug in momenta generation
2015-07-06 12:58:49 +09:00
neo 808f5820fa HMC for Wilson Gauge action works
Fixed bug in momenta generation
2015-07-06 12:58:49 +09:00
neo 6261770f59 Debugged vector version of ProjectOnGroup 2015-07-06 02:24:58 +09:00
neo 62d8952c0a Debugged vector version of ProjectOnGroup 2015-07-06 02:24:58 +09:00
neo 0ffcdf6204 Debugged vector version of ProjectOnGroup 2015-07-06 02:24:58 +09:00
neo 7a4ed7a867 HMC ready but untested 2015-07-04 17:47:50 +09:00
neo b1f94fa292 HMC ready but untested 2015-07-04 17:47:50 +09:00
neo e6087e1820 HMC ready but untested 2015-07-04 17:47:50 +09:00
neo 250965c6ca More progress in the HMC construction 2015-07-04 02:43:14 +09:00
neo 30c9dc473d More progress in the HMC construction 2015-07-04 02:43:14 +09:00
neo 59be55c0ab More progress in the HMC construction 2015-07-04 02:43:14 +09:00
neo 55f05a778f Skeleton of HMC/Integrators 2015-07-03 16:51:41 +09:00
neo 9655d43017 Skeleton of HMC/Integrators 2015-07-03 16:51:41 +09:00
neo ab3ad78ece Skeleton of HMC/Integrators 2015-07-03 16:51:41 +09:00
Peter Boyle 2c9ceaef94 No compile fix 2015-07-02 02:03:09 +01:00
Peter Boyle a666e66e36 No compile fix 2015-07-02 02:03:09 +01:00
Peter Boyle 4deffd1ccb No compile fix 2015-07-02 02:03:09 +01:00
Peter Boyle 55e313bd08 Cleaning up the recursion for traceIndex<n> after the changes the enable G++ to
compile it again.
2015-07-01 23:43:57 +01:00
Peter Boyle 84ec7c40cd Cleaning up the recursion for traceIndex<n> after the changes the enable G++ to
compile it again.
2015-07-01 23:43:57 +01:00
Peter Boyle a5c3edaca9 Cleaning up the recursion for traceIndex<n> after the changes the enable G++ to
compile it again.
2015-07-01 23:43:57 +01:00
Peter Boyle ef0ec1d0b2 Merge branch 'master' of https://github.com/paboyle/Grid 2015-07-01 22:51:04 +01:00
Peter Boyle 69a3d3203c Merge branch 'master' of https://github.com/paboyle/Grid 2015-07-01 22:51:04 +01:00
Peter Boyle 31a0c8d783 Merge branch 'master' of https://github.com/paboyle/Grid 2015-07-01 22:51:04 +01:00
paboyle 1e29d9f778 Some useful XC30 commands 2015-07-01 22:50:13 +01:00
paboyle 4cbcc7fd23 Some useful XC30 commands 2015-07-01 22:50:13 +01:00
paboyle ea5f2fcac4 Some useful XC30 commands 2015-07-01 22:50:13 +01:00
paboyle 46cf661ecd More xc30 config commansd 2015-07-01 22:48:58 +01:00
paboyle d4c4ce49fc More xc30 config commansd 2015-07-01 22:48:58 +01:00
paboyle 993420633b More xc30 config commansd 2015-07-01 22:48:58 +01:00
paboyle cb9da7b371 Temporarily disable gmp dependency simply because Cray XC30's I'm benchmarking
have a downlevel gmp version that chokes on ::max_align_t where gmp had a
bug as far as I recall.
2015-07-01 22:47:33 +01:00
paboyle c0ea404a7c Temporarily disable gmp dependency simply because Cray XC30's I'm benchmarking
have a downlevel gmp version that chokes on ::max_align_t where gmp had a
bug as far as I recall.
2015-07-01 22:47:33 +01:00
paboyle e3456bf559 Temporarily disable gmp dependency simply because Cray XC30's I'm benchmarking
have a downlevel gmp version that chokes on ::max_align_t where gmp had a
bug as far as I recall.
2015-07-01 22:47:33 +01:00
paboyle 71e6733d4d Modified memory bw test to display word size 2015-07-01 22:46:53 +01:00
paboyle 0aec35bfc0 Modified memory bw test to display word size 2015-07-01 22:46:53 +01:00
paboyle 39271b02dd Modified memory bw test to display word size 2015-07-01 22:46:53 +01:00
Peter Boyle 98b84d230a Change the SIMD command correctly with precision = double vs. single and
connect the "Real" default precisoin to a configure flag.
Have RealF, RealD and Real types, where Real is compile target dependent single/double,
RealF is single and RealD is double etc..
2015-07-01 22:45:15 +01:00
Peter Boyle dc66161f47 Change the SIMD command correctly with precision = double vs. single and
connect the "Real" default precisoin to a configure flag.
Have RealF, RealD and Real types, where Real is compile target dependent single/double,
RealF is single and RealD is double etc..
2015-07-01 22:45:15 +01:00
Peter Boyle 638d2cda11 Change the SIMD command correctly with precision = double vs. single and
connect the "Real" default precisoin to a configure flag.
Have RealF, RealD and Real types, where Real is compile target dependent single/double,
RealF is single and RealD is double etc..
2015-07-01 22:45:15 +01:00
paboyle c4777879e6 Remove dependency on wrong file 2015-07-01 13:04:02 +01:00
paboyle b139941423 Remove dependency on wrong file 2015-07-01 13:04:02 +01:00
paboyle 61c3491b8b Remove dependency on wrong file 2015-07-01 13:04:02 +01:00
Peter Boyle e618c609fe Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-30 15:17:46 +01:00
Peter Boyle ef81d6bf06 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-30 15:17:46 +01:00
Peter Boyle 9143f071d7 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-30 15:17:46 +01:00
Peter Boyle e164ed6f12 Big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:17:27 +01:00
Peter Boyle f41c7dffef Big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:17:27 +01:00
Peter Boyle 03ca506a3d Big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:17:27 +01:00
Peter Boyle 95ecf81d42 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:03:11 +01:00
Peter Boyle 74e397b29c big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:03:11 +01:00
Peter Boyle 98c817df1b big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:03:11 +01:00
Peter Boyle f36dbfffe5 VPGCR updates 2015-06-30 15:02:27 +01:00
Peter Boyle 7cfe432ee2 VPGCR updates 2015-06-30 15:02:27 +01:00
Peter Boyle 8eaf657f95 VPGCR updates 2015-06-30 15:02:27 +01:00
Peter Boyle 8581c05ab3 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:01:44 +01:00
Peter Boyle 490042f8e1 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:01:44 +01:00
Peter Boyle 8ad81bed32 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:01:44 +01:00
Peter Boyle 59cd42c164 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:01:26 +01:00
Peter Boyle 0971522f43 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:01:26 +01:00
Peter Boyle cd2fb68905 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:01:26 +01:00
Peter Boyle a4369e1db6 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:00:19 +01:00
Peter Boyle 7de5ccb879 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:00:19 +01:00
Peter Boyle c20fdd45a5 big commit fixing nocompiles in defective C++11 compilers (gcc, icpc). stared getting to
near the bleeding edge I guess
2015-06-30 15:00:19 +01:00
Peter Boyle d6c79bbadb Update Benchmark_comms.cc 2015-06-25 10:59:53 +01:00
Peter Boyle a67b44ffa4 Update Benchmark_comms.cc 2015-06-25 10:59:53 +01:00
Peter Boyle 93916f400d Update Benchmark_comms.cc 2015-06-25 10:59:53 +01:00
Peter Boyle 5f8f0bc792 Some small steps towards a multigrid 2015-06-22 12:49:44 +01:00
Peter Boyle dec68e5c0e Some small steps towards a multigrid 2015-06-22 12:49:44 +01:00
Peter Boyle a17684ebe2 Some small steps towards a multigrid 2015-06-22 12:49:44 +01:00
Azusa Yamaguchi 95538bb8c6 Abstract preconditioner 2015-06-21 11:03:55 +01:00
Azusa Yamaguchi e415587e8f Abstract preconditioner 2015-06-21 11:03:55 +01:00
Azusa Yamaguchi fd1a8abcd1 Abstract preconditioner 2015-06-21 11:03:55 +01:00
Azusa Yamaguchi a265765319 Variable preconditioned GCR with restarting.
Orthogonalisation depth and restart frequency is controllable via constructor
2015-06-21 10:58:46 +01:00
Azusa Yamaguchi 945bb93e48 Variable preconditioned GCR with restarting.
Orthogonalisation depth and restart frequency is controllable via constructor
2015-06-21 10:58:46 +01:00
Azusa Yamaguchi 3b4118f33e Variable preconditioned GCR with restarting.
Orthogonalisation depth and restart frequency is controllable via constructor
2015-06-21 10:58:46 +01:00
Peter Boyle eace9051e8 Merge
Merge branch 'master' of https://github.com/paboyle/Grid
2015-06-20 22:25:31 +01:00
Peter Boyle bcf1d5160f Merge
Merge branch 'master' of https://github.com/paboyle/Grid
2015-06-20 22:25:31 +01:00
Peter Boyle c7d77dfa0f Merge
Merge branch 'master' of https://github.com/paboyle/Grid
2015-06-20 22:25:31 +01:00
Peter Boyle f1916a7515 Will start this as a two level algorithm 2015-06-20 22:24:21 +01:00
Peter Boyle eb5ad2884c Will start this as a two level algorithm 2015-06-20 22:24:21 +01:00
Peter Boyle 960f29c0b1 Will start this as a two level algorithm 2015-06-20 22:24:21 +01:00
Peter Boyle 5ccbac7db1 HDCG but this is not complete and placeholder for later completion 2015-06-20 22:23:57 +01:00
Peter Boyle bce59d9911 HDCG but this is not complete and placeholder for later completion 2015-06-20 22:23:57 +01:00
Peter Boyle fb07ee5781 HDCG but this is not complete and placeholder for later completion 2015-06-20 22:23:57 +01:00
Peter Boyle aba5c8595a Patches for beginnings of an overlap multigrid 2015-06-20 22:22:56 +01:00
Peter Boyle 6ad96f7383 Patches for beginnings of an overlap multigrid 2015-06-20 22:22:56 +01:00
Peter Boyle b4a6dbfa65 Patches for beginnings of an overlap multigrid 2015-06-20 22:22:56 +01:00
Azusa Yamaguchi cb92390825 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-20 14:22:29 +01:00
Azusa Yamaguchi 6cebd006d4 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-20 14:22:29 +01:00
Azusa Yamaguchi dc7c77e1d5 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-20 14:22:29 +01:00
Azusa Yamaguchi 9dbb326061 Add the test_quenched files 2015-06-20 14:09:26 +01:00
Azusa Yamaguchi fd208ca11c Add the test_quenched files 2015-06-20 14:09:26 +01:00
Azusa Yamaguchi 1e8217d880 Add the test_quenched files 2015-06-20 14:09:26 +01:00
Peter Boyle 2534199ee7 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-19 17:24:05 +01:00
Peter Boyle 177b5632fd Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-19 17:24:05 +01:00
Peter Boyle a0d4f832cf Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-19 17:24:05 +01:00
neo faf8544233 Lattice matrix exponential ok 2015-06-17 20:41:07 +09:00
neo 09757cbf0c Lattice matrix exponential ok 2015-06-17 20:41:07 +09:00
neo 4eb71d2cd2 Lattice matrix exponential ok 2015-06-17 20:41:07 +09:00
Azusa Yamaguchi b78ecd6fb2 merge 2015-06-16 20:47:31 +01:00
Azusa Yamaguchi 92e870b256 merge 2015-06-16 20:47:31 +01:00
Azusa Yamaguchi fd72b64ca3 merge 2015-06-16 20:47:31 +01:00
Azusa Yamaguchi 700614123d add bug-fixed Test_nersc)_io. 2015-06-16 20:23:27 +01:00
Azusa Yamaguchi 06047b83c7 add bug-fixed Test_nersc)_io. 2015-06-16 20:23:27 +01:00
Azusa Yamaguchi 2faf7d95db add bug-fixed Test_nersc)_io. 2015-06-16 20:23:27 +01:00
neo 26ff0f3b50 Merge remote-tracking branch 'upstream/master' 2015-06-17 02:02:51 +09:00
neo 9c846bb0c7 Merge remote-tracking branch 'upstream/master' 2015-06-17 02:02:51 +09:00
neo e31dfa79d1 Merge remote-tracking branch 'upstream/master' 2015-06-17 02:02:51 +09:00
neo 296edfbd95 Check for SUN projection and Exponential 2015-06-17 02:02:06 +09:00
neo 318e244748 Check for SUN projection and Exponential 2015-06-17 02:02:06 +09:00
neo 47159797cb Check for SUN projection and Exponential 2015-06-17 02:02:06 +09:00
neo a7555b41df Corrected bug in integer multiplications for SSE4 and AVX2
Merge remote-tracking branch 'upstream/master'

Conflicts:
	tests/Make.inc
2015-06-16 23:34:45 +09:00
neo c9018d74ac Corrected bug in integer multiplications for SSE4 and AVX2
Merge remote-tracking branch 'upstream/master'

Conflicts:
	tests/Make.inc
2015-06-16 23:34:45 +09:00
neo 6e5db0b1da Corrected bug in integer multiplications for SSE4 and AVX2
Merge remote-tracking branch 'upstream/master'

Conflicts:
	tests/Make.inc
2015-06-16 23:34:45 +09:00
Azusa Yamaguchi 453b28bd81 Heatbath and config related removed 2015-06-16 14:18:48 +01:00
Azusa Yamaguchi ddbfb026d5 Heatbath and config related removed 2015-06-16 14:18:48 +01:00
Azusa Yamaguchi 1c3c795b84 Heatbath and config related removed 2015-06-16 14:18:48 +01:00
Azusa Yamaguchi 77058d9b9f Critical bug fix of sin/cos typo 2015-06-16 14:17:45 +01:00
Azusa Yamaguchi 9c16bccbf4 Critical bug fix of sin/cos typo 2015-06-16 14:17:45 +01:00
Azusa Yamaguchi 20fe866651 Critical bug fix of sin/cos typo 2015-06-16 14:17:45 +01:00
Azusa Yamaguchi 74845cb3dc Quenched works for wilson gauge 2015-06-16 14:17:11 +01:00
Azusa Yamaguchi 79a9f8b9c9 Quenched works for wilson gauge 2015-06-16 14:17:11 +01:00
Azusa Yamaguchi 18d0437f8d Quenched works for wilson gauge 2015-06-16 14:17:11 +01:00
Azusa Yamaguchi c945041067 uninitialised bug fix 2015-06-16 14:07:05 +01:00
Azusa Yamaguchi 173b31ce05 uninitialised bug fix 2015-06-16 14:07:05 +01:00
Azusa Yamaguchi 4e7300b68d uninitialised bug fix 2015-06-16 14:07:05 +01:00
Azusa Yamaguchi a7774e100f Typo fix 2015-06-16 14:06:31 +01:00
Azusa Yamaguchi 633ee06faf Typo fix 2015-06-16 14:06:31 +01:00
Azusa Yamaguchi 73494a4768 Typo fix 2015-06-16 14:06:31 +01:00
Azusa Yamaguchi b11f4a1473 Extra check that failed in quenched test 2015-06-16 14:04:56 +01:00
Azusa Yamaguchi cd7eac062a Extra check that failed in quenched test 2015-06-16 14:04:56 +01:00
Azusa Yamaguchi d7a8921de2 Extra check that failed in quenched test 2015-06-16 14:04:56 +01:00
Azusa Yamaguchi 212c13bb2c pointer cast 2015-06-16 14:04:33 +01:00
Azusa Yamaguchi 625bb1d7ee pointer cast 2015-06-16 14:04:33 +01:00
Azusa Yamaguchi d5edd09beb pointer cast 2015-06-16 14:04:33 +01:00
neo 0bff862876 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/Make.inc
	tests/Make.inc
2015-06-15 16:48:50 +09:00
neo 1f2cf5cff4 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/Make.inc
	tests/Make.inc
2015-06-15 16:48:50 +09:00
neo f7a1cef15b Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/Make.inc
	tests/Make.inc
2015-06-15 16:48:50 +09:00
Peter Boyle 8ebff0b7c0 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-14 01:29:41 +01:00
Peter Boyle 308d53858b Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-14 01:29:41 +01:00
Peter Boyle 392399e866 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-14 01:29:41 +01:00
Azusa Yamaguchi 54964dd4bb First cut at SUN support for quenched updates 2015-06-14 01:28:54 +01:00
Azusa Yamaguchi ae0873bc77 First cut at SUN support for quenched updates 2015-06-14 01:28:54 +01:00
Azusa Yamaguchi 55d7483608 First cut at SUN support for quenched updates 2015-06-14 01:28:54 +01:00
Peter Boyle 0f6ed6b633 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-14 01:27:07 +01:00
Peter Boyle 3f7a66328a Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-14 01:27:07 +01:00
Peter Boyle 337bccf27d Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-14 01:27:07 +01:00
Azusa Yamaguchi aa558ab03d Logical elemenet by element on tensors 2015-06-14 01:08:29 +01:00
Azusa Yamaguchi 353c9598c1 Logical elemenet by element on tensors 2015-06-14 01:08:29 +01:00
Azusa Yamaguchi 2b971c14c0 Logical elemenet by element on tensors 2015-06-14 01:08:29 +01:00
Azusa Yamaguchi 459ce22bb3 WHere should always have precisely matching types in ET system 2015-06-14 01:07:58 +01:00
Azusa Yamaguchi a5bb9472b6 WHere should always have precisely matching types in ET system 2015-06-14 01:07:58 +01:00
Azusa Yamaguchi 250cb00c42 WHere should always have precisely matching types in ET system 2015-06-14 01:07:58 +01:00
Azusa Yamaguchi 694dac7ff5 Where and many other functions (sin cos abs log exp) into ET system 2015-06-14 01:07:25 +01:00
Azusa Yamaguchi 84a207f2e6 Where and many other functions (sin cos abs log exp) into ET system 2015-06-14 01:07:25 +01:00
Azusa Yamaguchi f5bcca6cdf Where and many other functions (sin cos abs log exp) into ET system 2015-06-14 01:07:25 +01:00
Azusa Yamaguchi c54299107a Cosmetic 2015-06-14 01:06:56 +01:00
Azusa Yamaguchi 667abe888a Cosmetic 2015-06-14 01:06:56 +01:00
Azusa Yamaguchi be3f4ce201 Cosmetic 2015-06-14 01:06:56 +01:00
Azusa Yamaguchi fe1d8a9dd1 real comps and expression comps 2015-06-14 01:05:57 +01:00
Azusa Yamaguchi bc238177b7 real comps and expression comps 2015-06-14 01:05:57 +01:00
Azusa Yamaguchi 264d0d1735 real comps and expression comps 2015-06-14 01:05:57 +01:00
Azusa Yamaguchi c93c0edcd9 Allow real comparisons and expressions in comparisons 2015-06-14 01:05:39 +01:00
Azusa Yamaguchi 2303a2231b Allow real comparisons and expressions in comparisons 2015-06-14 01:05:39 +01:00
Azusa Yamaguchi 6ca940b5a6 Allow real comparisons and expressions in comparisons 2015-06-14 01:05:39 +01:00
Azusa Yamaguchi 9bdef0888e Allow sparse occupation of vectors in some cases 2015-06-14 01:05:06 +01:00
Azusa Yamaguchi 9bdb8ffb3f Allow sparse occupation of vectors in some cases 2015-06-14 01:05:06 +01:00
Azusa Yamaguchi b66bbed548 Allow sparse occupation of vectors in some cases 2015-06-14 01:05:06 +01:00
Azusa Yamaguchi f8f4b8a249 Moving more into the ET system 2015-06-14 01:04:32 +01:00
Azusa Yamaguchi 38e8a61035 Moving more into the ET system 2015-06-14 01:04:32 +01:00
Azusa Yamaguchi 463b9ca374 Moving more into the ET system 2015-06-14 01:04:32 +01:00
Azusa Yamaguchi 8bafe067eb trying to find a way to remove functions from the ET system using explicit
expression closure statements. Not sure if this works yet
2015-06-14 01:03:28 +01:00
Azusa Yamaguchi 02885ee583 trying to find a way to remove functions from the ET system using explicit
expression closure statements. Not sure if this works yet
2015-06-14 01:03:28 +01:00
Azusa Yamaguchi 611f7ec38c trying to find a way to remove functions from the ET system using explicit
expression closure statements. Not sure if this works yet
2015-06-14 01:03:28 +01:00
Azusa Yamaguchi 53ba8d4926 Transpose always returns self image 2015-06-14 01:02:31 +01:00
Azusa Yamaguchi 6a697be060 Transpose always returns self image 2015-06-14 01:02:31 +01:00
Azusa Yamaguchi f490f320ae Transpose always returns self image 2015-06-14 01:02:31 +01:00
Azusa Yamaguchi ddd93a0576 Extra lattice unaries 2015-06-14 01:01:55 +01:00
Azusa Yamaguchi 4d81d402b9 Extra lattice unaries 2015-06-14 01:01:55 +01:00
Azusa Yamaguchi 58f50b7520 Extra lattice unaries 2015-06-14 01:01:55 +01:00
Azusa Yamaguchi ae2dcfc173 Moving where in to the expression template system; deprecate 2015-06-14 01:01:21 +01:00
Azusa Yamaguchi 0f7cf40867 Moving where in to the expression template system; deprecate 2015-06-14 01:01:21 +01:00
Azusa Yamaguchi e5c980f169 Moving where in to the expression template system; deprecate 2015-06-14 01:01:21 +01:00
Azusa Yamaguchi 58a695b0a9 More TODO as ever 2015-06-14 01:00:46 +01:00
Azusa Yamaguchi 8b9a9aea81 More TODO as ever 2015-06-14 01:00:46 +01:00
Azusa Yamaguchi c185cbdc40 More TODO as ever 2015-06-14 01:00:46 +01:00
Azusa Yamaguchi e529dd9696 Peek poke colour/spin/complex and trace transpose support 2015-06-14 01:00:11 +01:00
Azusa Yamaguchi 87cc0d4ca3 Peek poke colour/spin/complex and trace transpose support 2015-06-14 01:00:11 +01:00
Azusa Yamaguchi 6b8bdf0c6b Peek poke colour/spin/complex and trace transpose support 2015-06-14 01:00:11 +01:00
Azusa Yamaguchi 610450bc0e const safety 2015-06-14 00:59:50 +01:00
Azusa Yamaguchi 66e5718610 const safety 2015-06-14 00:59:50 +01:00
Azusa Yamaguchi 68b82ddd99 const safety 2015-06-14 00:59:50 +01:00
Azusa Yamaguchi 2ba72a91de Binop assist and real/complex improvements 2015-06-14 00:59:07 +01:00
Azusa Yamaguchi 19e8d2809a Binop assist and real/complex improvements 2015-06-14 00:59:07 +01:00
Azusa Yamaguchi 22c8185caa Binop assist and real/complex improvements 2015-06-14 00:59:07 +01:00
Azusa Yamaguchi 4cf04c8583 More functions broken out into element by element 2015-06-14 00:58:14 +01:00
Azusa Yamaguchi 8245585dee More functions broken out into element by element 2015-06-14 00:58:14 +01:00
Azusa Yamaguchi 42f7e5b7f8 More functions broken out into element by element 2015-06-14 00:58:14 +01:00
Azusa Yamaguchi 56d120cb24 typo fix -- remove extra template arg 2015-06-14 00:57:23 +01:00
Azusa Yamaguchi 9006f7a34a typo fix -- remove extra template arg 2015-06-14 00:57:23 +01:00
Azusa Yamaguchi 84485afe6c typo fix -- remove extra template arg 2015-06-14 00:57:23 +01:00
Azusa Yamaguchi 1dc8dfd3ae Logical ops element by element 2015-06-14 00:56:40 +01:00
Azusa Yamaguchi d5810eaef1 Logical ops element by element 2015-06-14 00:56:40 +01:00
Azusa Yamaguchi 3dea03e72b Logical ops element by element 2015-06-14 00:56:40 +01:00
Azusa Yamaguchi f2dafbc4f7 Real complex improved 2015-06-14 00:56:08 +01:00
Azusa Yamaguchi b521155218 Real complex improved 2015-06-14 00:56:08 +01:00
Azusa Yamaguchi dbfb1a69c6 Real complex improved 2015-06-14 00:56:08 +01:00
Azusa Yamaguchi 9c810200e0 Handle case of simd_layout not filling whole vector.
Useful if real complex live on same grid
2015-06-14 00:55:21 +01:00
Azusa Yamaguchi 51ebc4f402 Handle case of simd_layout not filling whole vector.
Useful if real complex live on same grid
2015-06-14 00:55:21 +01:00
Azusa Yamaguchi ef97692622 Handle case of simd_layout not filling whole vector.
Useful if real complex live on same grid
2015-06-14 00:55:21 +01:00
Azusa Yamaguchi 6d6e9a5811 Real/Complex improvements 2015-06-14 00:54:18 +01:00
Azusa Yamaguchi 17de4bce20 Real/Complex improvements 2015-06-14 00:54:18 +01:00
Azusa Yamaguchi a81998f704 Real/Complex improvements 2015-06-14 00:54:18 +01:00
Azusa Yamaguchi 2949e5feca Real handling improvement 2015-06-14 00:53:52 +01:00
Azusa Yamaguchi d74aa0e1e6 Real handling improvement 2015-06-14 00:53:52 +01:00
Azusa Yamaguchi 8fa0c90062 Real handling improvement 2015-06-14 00:53:52 +01:00
Azusa Yamaguchi 96a55c17f1 Unary funcs update 2015-06-14 00:53:18 +01:00
Azusa Yamaguchi d66cab3f01 Unary funcs update 2015-06-14 00:53:18 +01:00
Azusa Yamaguchi c90cf08bae Unary funcs update 2015-06-14 00:53:18 +01:00
Azusa Yamaguchi d47f2fe1e0 File list 2015-06-14 00:52:39 +01:00
Azusa Yamaguchi 5c66b5c712 File list 2015-06-14 00:52:39 +01:00
Azusa Yamaguchi 0fa26e7d68 File list 2015-06-14 00:52:39 +01:00
Azusa Yamaguchi eff0cb3067 Minor 2015-06-14 00:52:26 +01:00
Azusa Yamaguchi 3e261b3d9e Minor 2015-06-14 00:52:26 +01:00
Azusa Yamaguchi 8bac3b57ad Minor 2015-06-14 00:52:26 +01:00
Azusa Yamaguchi ff8bde53df more accurate comment 2015-06-14 00:51:56 +01:00
Azusa Yamaguchi c79d85f763 more accurate comment 2015-06-14 00:51:56 +01:00
Azusa Yamaguchi 171c95d6d8 more accurate comment 2015-06-14 00:51:56 +01:00
Azusa Yamaguchi 58019383f3 Typing 2015-06-14 00:51:37 +01:00
Azusa Yamaguchi ff3db9ceee Typing 2015-06-14 00:51:37 +01:00
Azusa Yamaguchi 5484607ef2 Typing 2015-06-14 00:51:37 +01:00
Azusa Yamaguchi 21f214d6c9 Apply a heatbath sweep 2015-06-14 00:50:59 +01:00
Azusa Yamaguchi f3aebd4b33 Apply a heatbath sweep 2015-06-14 00:50:59 +01:00
Azusa Yamaguchi 31ab4c4c35 Apply a heatbath sweep 2015-06-14 00:50:59 +01:00
Azusa Yamaguchi e57bc34afe Minor change 2015-06-14 00:50:26 +01:00
Azusa Yamaguchi 0c8c44b3e3 Minor change 2015-06-14 00:50:26 +01:00
Azusa Yamaguchi a0dcbc0d16 Minor change 2015-06-14 00:50:26 +01:00
Azusa Yamaguchi 744879a3f5 be more precise on typing 2015-06-14 00:49:57 +01:00
Azusa Yamaguchi e4e91d3042 be more precise on typing 2015-06-14 00:49:57 +01:00
Azusa Yamaguchi fa6117f136 be more precise on typing 2015-06-14 00:49:57 +01:00
Azusa Yamaguchi 45c21a9c8b TensorRemove not needed now 2015-06-14 00:49:26 +01:00
Azusa Yamaguchi 9184cc68da TensorRemove not needed now 2015-06-14 00:49:26 +01:00
Azusa Yamaguchi 2c2112e152 TensorRemove not needed now 2015-06-14 00:49:26 +01:00
Azusa Yamaguchi 19ff065844 fix no compile 2015-06-14 00:48:41 +01:00
Azusa Yamaguchi 46eafa520d fix no compile 2015-06-14 00:48:41 +01:00
Azusa Yamaguchi dcfc189f11 fix no compile 2015-06-14 00:48:41 +01:00
Peter Boyle f0d190024a Updates to ldop tests 2015-06-10 12:26:25 +01:00
Peter Boyle 1cc25837b2 Updates to ldop tests 2015-06-10 12:26:25 +01:00
Peter Boyle 5cce44edb4 Updates to ldop tests 2015-06-10 12:26:25 +01:00
Peter Boyle 0ad72b38ab file list 2015-06-10 12:25:15 +01:00
Peter Boyle 50c4f416b6 file list 2015-06-10 12:25:15 +01:00
Peter Boyle 622261b1ea file list 2015-06-10 12:25:15 +01:00
Azusa Yamaguchi 12d7902ca0 Fix compile 2015-06-10 11:30:27 +01:00
Azusa Yamaguchi e5d30fe5e2 Fix compile 2015-06-10 11:30:27 +01:00
Azusa Yamaguchi f6667801e1 Fix compile 2015-06-10 11:30:27 +01:00
Azusa Yamaguchi e3b4dd32c0 commit file list 2015-06-10 11:26:46 +01:00
Azusa Yamaguchi 89f961faef commit file list 2015-06-10 11:26:46 +01:00
Azusa Yamaguchi 22752f6ff0 commit file list 2015-06-10 11:26:46 +01:00
Azusa Yamaguchi 562cdc805b Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-10 11:25:57 +01:00
Azusa Yamaguchi ca109497a1 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-10 11:25:57 +01:00
Azusa Yamaguchi 0457923179 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-10 11:25:57 +01:00
Azusa Yamaguchi 653a94e8ab Successful generation of general SU N generators
This class will move into a utils class and gain exponentiation and ta projection
to support HMC and heatbath
2015-06-10 11:24:14 +01:00
Azusa Yamaguchi 2f4a0c5de4 Successful generation of general SU N generators
This class will move into a utils class and gain exponentiation and ta projection
to support HMC and heatbath
2015-06-10 11:24:14 +01:00
Azusa Yamaguchi 8cf34ebbff Successful generation of general SU N generators
This class will move into a utils class and gain exponentiation and ta projection
to support HMC and heatbath
2015-06-10 11:24:14 +01:00
neo f3dd829459 Adding several iMatrix utilities 2015-06-10 14:16:33 +09:00
neo 965a92ce40 Adding several iMatrix utilities 2015-06-10 14:16:33 +09:00
neo bb4a916767 Adding several iMatrix utilities 2015-06-10 14:16:33 +09:00
Peter Boyle e79a57b423 Merge branch 'master' of https://github.com/paboyle/Grid
Not sure what changed in master
2015-06-09 22:51:10 +01:00
Peter Boyle 1118c42fcc Merge branch 'master' of https://github.com/paboyle/Grid
Not sure what changed in master
2015-06-09 22:51:10 +01:00
Peter Boyle 02144fb50b Merge branch 'master' of https://github.com/paboyle/Grid
Not sure what changed in master
2015-06-09 22:51:10 +01:00
Peter Boyle 5a53086e41 Solver converges 2015-06-09 22:51:02 +01:00
Peter Boyle 62cb914488 Solver converges 2015-06-09 22:51:02 +01:00
Peter Boyle 7d6be625fa Solver converges 2015-06-09 22:51:02 +01:00
Peter Boyle c4f204f440 Solver converges 2015-06-09 22:50:45 +01:00
Peter Boyle d50cf43e5e Solver converges 2015-06-09 22:50:45 +01:00
Peter Boyle 3f8c7be6f8 Solver converges 2015-06-09 22:50:45 +01:00
Peter Boyle 2022a7205c Remove extra layers of checks now it works 2015-06-09 22:43:41 +01:00
Peter Boyle 60a96e3d0d Remove extra layers of checks now it works 2015-06-09 22:43:41 +01:00
Peter Boyle 0784bbc4bf Remove extra layers of checks now it works 2015-06-09 22:43:41 +01:00
Peter Boyle 4357f5acdc Some extra tests 2015-06-09 22:43:10 +01:00
Peter Boyle 850054d162 Some extra tests 2015-06-09 22:43:10 +01:00
Peter Boyle 516f1a6316 Some extra tests 2015-06-09 22:43:10 +01:00
Peter Boyle 4963f7356a 5d OpDir direction interface refers to the 5d dims, not 4d to present a
sensible and consistent external interface.
2015-06-09 22:41:59 +01:00
Peter Boyle 6abbd35d81 5d OpDir direction interface refers to the 5d dims, not 4d to present a
sensible and consistent external interface.
2015-06-09 22:41:59 +01:00
Peter Boyle b92060f511 5d OpDir direction interface refers to the 5d dims, not 4d to present a
sensible and consistent external interface.
2015-06-09 22:41:59 +01:00
Peter Boyle 3a52bc4ce1 G5R5 update 2015-06-09 22:41:27 +01:00
Peter Boyle 971d224983 G5R5 update 2015-06-09 22:41:27 +01:00
Peter Boyle 3546dcac1a G5R5 update 2015-06-09 22:41:27 +01:00
Peter Boyle 708d4f7533 g5 and g5R5 hermitian are now differentiated 2015-06-09 22:40:58 +01:00
Peter Boyle c7152c520a g5 and g5R5 hermitian are now differentiated 2015-06-09 22:40:58 +01:00
Peter Boyle c133974d67 g5 and g5R5 hermitian are now differentiated 2015-06-09 22:40:58 +01:00
Peter Boyle 61770d4472 Files update 2015-06-09 22:40:12 +01:00
Peter Boyle 930463a226 Files update 2015-06-09 22:40:12 +01:00
Peter Boyle c86c15f95f Files update 2015-06-09 22:40:12 +01:00
Peter Boyle a57ca0bbe7 Prettier reporting 2015-06-09 22:39:37 +01:00
Peter Boyle 2e43d8fe92 Prettier reporting 2015-06-09 22:39:37 +01:00
Peter Boyle accd21dec7 Prettier reporting 2015-06-09 22:39:37 +01:00
Peter Boyle 1f2498918d Got this sorted with the promote working in a test 2015-06-09 22:39:13 +01:00
Peter Boyle 4a10540365 Got this sorted with the promote working in a test 2015-06-09 22:39:13 +01:00
Peter Boyle 7766cc96c1 Got this sorted with the promote working in a test 2015-06-09 22:39:13 +01:00
Peter Boyle 25bfff370a Starting to use 2015-06-09 22:38:13 +01:00
Peter Boyle e19391ef7a Starting to use 2015-06-09 22:38:13 +01:00
Peter Boyle 6fb36c8a51 Starting to use 2015-06-09 22:38:13 +01:00
Peter Boyle 6403e3021f Debugged finally. A silly mistake in permute cost me a day of debug. 2015-06-09 22:37:21 +01:00
Peter Boyle a5b75a095c Debugged finally. A silly mistake in permute cost me a day of debug. 2015-06-09 22:37:21 +01:00
Peter Boyle 2e6986892a Debugged finally. A silly mistake in permute cost me a day of debug. 2015-06-09 22:37:21 +01:00
Peter Boyle 4d11fc0330 silly change 2015-06-09 22:36:48 +01:00
Peter Boyle f0530e9f52 silly change 2015-06-09 22:36:48 +01:00
Peter Boyle eeeaac7147 silly change 2015-06-09 22:36:48 +01:00
neo f8eb862073 Merge remote-tracking branch 'upstream/master' 2015-06-09 19:01:07 +09:00
neo 61b85a0670 Merge remote-tracking branch 'upstream/master' 2015-06-09 19:01:07 +09:00
neo ecf3bae150 Merge remote-tracking branch 'upstream/master' 2015-06-09 19:01:07 +09:00
neo 99ace0a89c Adding support for iMatrix exponentiation 2015-06-09 18:59:45 +09:00
neo d60cfe31a7 Adding support for iMatrix exponentiation 2015-06-09 18:59:45 +09:00
neo e80012896a Adding support for iMatrix exponentiation 2015-06-09 18:59:45 +09:00
Peter Boyle 64e2f36d40 Merge pull request #14 from mspraggs/master
Removed std::string calls from NerscIO map indexing
2015-06-09 10:31:52 +01:00
Peter Boyle e87554296c Merge pull request #14 from mspraggs/master
Removed std::string calls from NerscIO map indexing
2015-06-09 10:31:52 +01:00
Peter Boyle 645120a400 Merge pull request #14 from mspraggs/master
Removed std::string calls from NerscIO map indexing
2015-06-09 10:31:52 +01:00
Peter Boyle e8b43944e7 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
2015-06-09 10:27:10 +01:00
Peter Boyle d8ddec86f7 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
2015-06-09 10:27:10 +01:00
Peter Boyle a73a1c1bc1 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
2015-06-09 10:27:10 +01:00
Peter Boyle 1048304f30 Some unary ops and coarse grid support 2015-06-09 10:26:19 +01:00
Peter Boyle 506dfd1517 Some unary ops and coarse grid support 2015-06-09 10:26:19 +01:00
Peter Boyle 1e5b015ee3 Some unary ops and coarse grid support 2015-06-09 10:26:19 +01:00
Peter Boyle f19518d564 Unary ops and coarse grid support 2015-06-09 10:25:29 +01:00
Peter Boyle 9269126fba Unary ops and coarse grid support 2015-06-09 10:25:29 +01:00
Peter Boyle 21e41638e5 Unary ops and coarse grid support 2015-06-09 10:25:29 +01:00
neo 744ac33e8b Experimental support for ARM 2015-06-09 15:46:21 +09:00
neo 6b8fe04054 Experimental support for ARM 2015-06-09 15:46:21 +09:00
neo 48bf4878c1 Experimental support for ARM 2015-06-09 15:46:21 +09:00
Peter Boyle a6ac2abb64 No compile fix after merge 2015-06-08 12:12:13 +01:00
Peter Boyle 78607950ac No compile fix after merge 2015-06-08 12:12:13 +01:00
Peter Boyle 4ae47a529e No compile fix after merge 2015-06-08 12:12:13 +01:00
Peter Boyle 98b10f587e Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
	tests/Make.inc
	tests/Test_remez.cc
2015-06-08 12:08:09 +01:00
Peter Boyle 2f4a4489ce Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
	tests/Make.inc
	tests/Test_remez.cc
2015-06-08 12:08:09 +01:00
Peter Boyle 3111f50f2f Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Make.inc
	tests/Make.inc
	tests/Test_remez.cc
2015-06-08 12:08:09 +01:00
Peter Boyle b0873e7ed2 Conjugate residual algorithm; some more unary functions 2015-06-08 12:04:59 +01:00
Peter Boyle 9e7035f5dc Conjugate residual algorithm; some more unary functions 2015-06-08 12:04:59 +01:00
Peter Boyle d6f1ddf99c Conjugate residual algorithm; some more unary functions 2015-06-08 12:04:59 +01:00
Peter Boyle 769ef7b0f5 sqrt 2015-06-08 12:03:36 +01:00
Peter Boyle 690397e7c6 sqrt 2015-06-08 12:03:36 +01:00
Peter Boyle 0cf2037ae1 sqrt 2015-06-08 12:03:36 +01:00
Peter Boyle 42c22d4cae Prep for multigrid 2015-06-08 12:02:53 +01:00
Peter Boyle 5bdf89e3f0 Prep for multigrid 2015-06-08 12:02:53 +01:00
Peter Boyle 5a3bc5250e Prep for multigrid 2015-06-08 12:02:53 +01:00
Peter Boyle aad51ffe3a Prep for mgrid 2015-06-08 12:02:26 +01:00
Peter Boyle ea583e2e53 Prep for mgrid 2015-06-08 12:02:26 +01:00
Peter Boyle 680abafe5d Prep for mgrid 2015-06-08 12:02:26 +01:00
Azusa Yamaguchi a8b9109cc8 multishift conjugate gradient added and a strong test: take a diagonal
but non-identity matrix
l1 0  0  0 ....
0  l2 0  0 ....
0  0  l3 0 ...
.  .   .
.  .   .
.  .   .

And apply the multishift CG to it. Sum the poles and residues.
Insist that this be the same as the exactly taken square root
where l1,l2,l3 >= 0.
2015-06-08 11:52:44 +01:00
Azusa Yamaguchi 54aec05989 multishift conjugate gradient added and a strong test: take a diagonal
but non-identity matrix
l1 0  0  0 ....
0  l2 0  0 ....
0  0  l3 0 ...
.  .   .
.  .   .
.  .   .

And apply the multishift CG to it. Sum the poles and residues.
Insist that this be the same as the exactly taken square root
where l1,l2,l3 >= 0.
2015-06-08 11:52:44 +01:00
Azusa Yamaguchi 8688ff8b3a multishift conjugate gradient added and a strong test: take a diagonal
but non-identity matrix
l1 0  0  0 ....
0  l2 0  0 ....
0  0  l3 0 ...
.  .   .
.  .   .
.  .   .

And apply the multishift CG to it. Sum the poles and residues.
Insist that this be the same as the exactly taken square root
where l1,l2,l3 >= 0.
2015-06-08 11:52:44 +01:00
Matt Spraggs e2e076d307 Removed std::string calls from NerscIO map indexing 2015-06-07 17:06:25 +01:00
Matt Spraggs 7537a2751d Removed std::string calls from NerscIO map indexing 2015-06-07 17:06:25 +01:00
Matt Spraggs cff84f09ba Removed std::string calls from NerscIO map indexing 2015-06-07 17:06:25 +01:00
Peter Boyle a263e78f8d Conjugate residual added 2015-06-05 18:16:25 +01:00
Peter Boyle 50e8b2160e Conjugate residual added 2015-06-05 18:16:25 +01:00
Peter Boyle 1a05882d7c Conjugate residual added 2015-06-05 18:16:25 +01:00
Azusa Yamaguchi 5f33cc3a95 Compile fix 2015-06-05 10:29:42 +01:00
Azusa Yamaguchi ad18df92d0 Compile fix 2015-06-05 10:29:42 +01:00
Azusa Yamaguchi 351c2905f5 Compile fix 2015-06-05 10:29:42 +01:00
Azusa Yamaguchi bb36139fc2 Fix 2015-06-05 10:21:28 +01:00
Azusa Yamaguchi d86c248d05 Fix 2015-06-05 10:21:28 +01:00
Azusa Yamaguchi 33803a3dee Fix 2015-06-05 10:21:28 +01:00
Azusa Yamaguchi cc5f518b21 Endif terminated 2015-06-05 10:19:42 +01:00
Azusa Yamaguchi 1d7f9567ee Endif terminated 2015-06-05 10:19:42 +01:00
Azusa Yamaguchi ee3031c914 Endif terminated 2015-06-05 10:19:42 +01:00
Peter Boyle 337b6e83af Rework the linop support to get different forms of red black schur solver
Moo on diag, or MooInv Moe MeeInv Meo
2015-06-05 10:17:10 +01:00
Peter Boyle f3e60a9feb Rework the linop support to get different forms of red black schur solver
Moo on diag, or MooInv Moe MeeInv Meo
2015-06-05 10:17:10 +01:00
Peter Boyle 7f6304fac3 Rework the linop support to get different forms of red black schur solver
Moo on diag, or MooInv Moe MeeInv Meo
2015-06-05 10:17:10 +01:00
Azusa Yamaguchi 8f9627520b merge to the head 2015-06-05 10:15:31 +01:00
Azusa Yamaguchi a8b86e747b merge to the head 2015-06-05 10:15:31 +01:00
Azusa Yamaguchi 58a4f32298 merge to the head 2015-06-05 10:15:31 +01:00
Azusa Yamaguchi db84b19443 Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-05 10:04:46 +01:00
Azusa Yamaguchi c05fe2706c Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-05 10:04:46 +01:00
Azusa Yamaguchi ac504bea6c Merge branch 'master' of https://github.com/paboyle/Grid 2015-06-05 10:04:46 +01:00
Azusa Yamaguchi 7d984b9547 Adding some wilson loop support 2015-06-05 10:02:36 +01:00
Azusa Yamaguchi 58cdcbb5e4 Adding some wilson loop support 2015-06-05 10:02:36 +01:00
Azusa Yamaguchi 94ea84d83f Adding some wilson loop support 2015-06-05 10:02:36 +01:00
Peter Boyle f22170ad49 comment improvement 2015-06-05 05:31:27 +01:00
Peter Boyle cadd4310f6 comment improvement 2015-06-05 05:31:27 +01:00
Peter Boyle b1b412f63c comment improvement 2015-06-05 05:31:27 +01:00
Peter Boyle 7678fbd30d PartialFraction Hw with Zolo and Tanh approx converged under CG and passed EO breakdown
and hermiticity tests.
2015-06-04 13:28:37 +01:00
Peter Boyle b9e9777912 PartialFraction Hw with Zolo and Tanh approx converged under CG and passed EO breakdown
and hermiticity tests.
2015-06-04 13:28:37 +01:00
Peter Boyle 63a61fcc2a PartialFraction Hw with Zolo and Tanh approx converged under CG and passed EO breakdown
and hermiticity tests.
2015-06-04 13:28:37 +01:00
Peter Boyle 1e4eca8321 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/tensors/Tensor_trace.h
2015-06-04 12:17:00 +01:00
Peter Boyle 5b1ba66604 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/tensors/Tensor_trace.h
2015-06-04 12:17:00 +01:00
Peter Boyle 21d193b1c8 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/tensors/Tensor_trace.h
2015-06-04 12:17:00 +01:00
Peter Boyle 5aa8bf77db Mistaken commit that prevented compile ; fixing 2015-06-04 12:01:51 +01:00
Peter Boyle 51ec6b722e Mistaken commit that prevented compile ; fixing 2015-06-04 12:01:51 +01:00
Peter Boyle f6dc74501b Mistaken commit that prevented compile ; fixing 2015-06-04 12:01:51 +01:00
neo 7e47b0c6eb Corrected small compilation bug in traceIndex for iVectors 2015-06-04 19:01:43 +09:00
neo 769b27b7f2 Corrected small compilation bug in traceIndex for iVectors 2015-06-04 19:01:43 +09:00
neo b306730a57 Corrected small compilation bug in traceIndex for iVectors 2015-06-04 19:01:43 +09:00
neo 41e88c232b Merge remote-tracking branch 'upstream/master' 2015-06-04 18:30:29 +09:00
neo 4dcc5dab93 Merge remote-tracking branch 'upstream/master' 2015-06-04 18:30:29 +09:00
neo b3f871717f Merge remote-tracking branch 'upstream/master' 2015-06-04 18:30:29 +09:00
neo 949b6a7afa Added support for Ta to Lattice types 2015-06-04 18:29:55 +09:00
neo 7fc54fc904 Added support for Ta to Lattice types 2015-06-04 18:29:55 +09:00
neo 4b114fce3d Added support for Ta to Lattice types 2015-06-04 18:29:55 +09:00
neo bb73569fd6 Addedd Ta functionality to the tensor types
Merge remote-tracking branch 'upstream/master'

Conflicts:
	configure
2015-06-04 18:11:32 +09:00
neo b9edadc53e Addedd Ta functionality to the tensor types
Merge remote-tracking branch 'upstream/master'

Conflicts:
	configure
2015-06-04 18:11:32 +09:00
neo 3055d2cf2c Addedd Ta functionality to the tensor types
Merge remote-tracking branch 'upstream/master'

Conflicts:
	configure
2015-06-04 18:11:32 +09:00
Peter Boyle 54c082dc35 Allow traceIndex on a different index to distribute replicated across a vector index 2015-06-04 09:41:16 +01:00
Peter Boyle 201d6d097d Allow traceIndex on a different index to distribute replicated across a vector index 2015-06-04 09:41:16 +01:00
Peter Boyle 4a03054ef4 Allow traceIndex on a different index to distribute replicated across a vector index 2015-06-04 09:41:16 +01:00
neo c6f2ee91f6 Small modification to the configure files 2015-06-04 14:17:58 +09:00
neo ff9340d4d5 Small modification to the configure files 2015-06-04 14:17:58 +09:00
neo 5a5ee83d28 Small modification to the configure files 2015-06-04 14:17:58 +09:00
Peter Boyle 9c1ab656d4 CG Tests work for wilson kernel cont frac zolo and tanh 2015-06-04 06:02:00 +01:00
Peter Boyle 37aa74dfd2 CG Tests work for wilson kernel cont frac zolo and tanh 2015-06-04 06:02:00 +01:00
Peter Boyle dd1f5dd966 CG Tests work for wilson kernel cont frac zolo and tanh 2015-06-04 06:02:00 +01:00
Peter Boyle 1ad689e4d5 Implementing the Hw kernel continued fraction 5d overlap cases 2015-06-04 00:23:16 +01:00
Peter Boyle c327019574 Implementing the Hw kernel continued fraction 5d overlap cases 2015-06-04 00:23:16 +01:00
Peter Boyle a088a65656 Implementing the Hw kernel continued fraction 5d overlap cases 2015-06-04 00:23:16 +01:00
Peter Boyle 802e94e9ca First pass at continued fraction; solver and even odd decomposition tests pass.
Have to make ContFrac class virtual and derive end non-abstract actions for the particular
cases.
2015-06-04 00:00:45 +01:00
Peter Boyle 50bd293527 First pass at continued fraction; solver and even odd decomposition tests pass.
Have to make ContFrac class virtual and derive end non-abstract actions for the particular
cases.
2015-06-04 00:00:45 +01:00
Peter Boyle 03f4fde468 First pass at continued fraction; solver and even odd decomposition tests pass.
Have to make ContFrac class virtual and derive end non-abstract actions for the particular
cases.
2015-06-04 00:00:45 +01:00
Peter Boyle e68d087010 Assist for generating file lists contained in Make.inc files for convenience when things are added 2015-06-03 13:07:00 +01:00
Peter Boyle eaa3e6aaf6 Assist for generating file lists contained in Make.inc files for convenience when things are added 2015-06-03 13:07:00 +01:00
Peter Boyle f07a17ba2c Assist for generating file lists contained in Make.inc files for convenience when things are added 2015-06-03 13:07:00 +01:00
Peter Boyle 3254bb2c8e Make.inc needed in repo 2015-06-03 12:49:36 +01:00
Peter Boyle 4ef11d96e9 Make.inc needed in repo 2015-06-03 12:49:36 +01:00
Peter Boyle 3cfea5a09f Make.inc needed in repo 2015-06-03 12:49:36 +01:00
Peter Boyle 54b56959f5 Convenience script to build the list of headers and .cc files in the library 2015-06-03 12:47:46 +01:00
Peter Boyle 98dcb6831b Convenience script to build the list of headers and .cc files in the library 2015-06-03 12:47:46 +01:00
Peter Boyle a97954230d Convenience script to build the list of headers and .cc files in the library 2015-06-03 12:47:46 +01:00
Peter Boyle f9b070d64d Reorganise of file naming 2015-06-03 12:47:05 +01:00
Peter Boyle 4bcc319e11 Reorganise of file naming 2015-06-03 12:47:05 +01:00
Peter Boyle 1d0df449e8 Reorganise of file naming 2015-06-03 12:47:05 +01:00
Peter Boyle 6cb38dc5dc Overlap Wilson Cayley tanh & zolo 2015-06-03 11:26:54 +01:00
Peter Boyle 8fe3d4f971 Overlap Wilson Cayley tanh & zolo 2015-06-03 11:26:54 +01:00
Peter Boyle a3b599ae30 Overlap Wilson Cayley tanh & zolo 2015-06-03 11:26:54 +01:00
Peter Boyle 2b083ca987 CG test written and passes i.e. converges with small true residual
in RedBlack MpcDagMpc, Unprec MdagM and Schur red black solver for
each of.

DomainWallFermion
MobiusFermion
MobiusZolotarevFermion
ScaledShamirFermion
ScaledShamirZolotarevFermion
2015-06-03 10:54:03 +01:00
Peter Boyle 26e9b04fab CG test written and passes i.e. converges with small true residual
in RedBlack MpcDagMpc, Unprec MdagM and Schur red black solver for
each of.

DomainWallFermion
MobiusFermion
MobiusZolotarevFermion
ScaledShamirFermion
ScaledShamirZolotarevFermion
2015-06-03 10:54:03 +01:00
Peter Boyle 84b5c7217d CG test written and passes i.e. converges with small true residual
in RedBlack MpcDagMpc, Unprec MdagM and Schur red black solver for
each of.

DomainWallFermion
MobiusFermion
MobiusZolotarevFermion
ScaledShamirFermion
ScaledShamirZolotarevFermion
2015-06-03 10:54:03 +01:00
Peter Boyle c659c76053 Scaled Shamir and Scaled Shamir Zolotarev aliases for special cases of Mobius. 2015-06-03 09:51:06 +01:00
Peter Boyle 343d039b37 Scaled Shamir and Scaled Shamir Zolotarev aliases for special cases of Mobius. 2015-06-03 09:51:06 +01:00
Peter Boyle 260011670e Scaled Shamir and Scaled Shamir Zolotarev aliases for special cases of Mobius. 2015-06-03 09:51:06 +01:00
Peter Boyle 68e26140ee Mobius Caley form, Mobius Zolotarev operators. Pass Even Odd vs unprec test and hermiticity checks
in tests/Grid_any_evenodd.cc; will work on inversion tests shortly.
2015-06-03 09:36:26 +01:00
Peter Boyle 5916386242 Mobius Caley form, Mobius Zolotarev operators. Pass Even Odd vs unprec test and hermiticity checks
in tests/Grid_any_evenodd.cc; will work on inversion tests shortly.
2015-06-03 09:36:26 +01:00
Peter Boyle 1fcacef239 Mobius Caley form, Mobius Zolotarev operators. Pass Even Odd vs unprec test and hermiticity checks
in tests/Grid_any_evenodd.cc; will work on inversion tests shortly.
2015-06-03 09:36:26 +01:00
Peter Boyle 494d2b8b61 Reorg; moving prec/unprec/schur CG for Wilson and DWF into tests as these are really tests and not benchmarks
(no performance reports, only convergence test).
2015-06-02 17:25:26 +01:00
Peter Boyle 35fdba81dd Reorg; moving prec/unprec/schur CG for Wilson and DWF into tests as these are really tests and not benchmarks
(no performance reports, only convergence test).
2015-06-02 17:25:26 +01:00
Peter Boyle 69f4d58381 Reorg; moving prec/unprec/schur CG for Wilson and DWF into tests as these are really tests and not benchmarks
(no performance reports, only convergence test).
2015-06-02 17:25:26 +01:00
Peter Boyle 0bc004de7c Domain wall fermions now invert ; have the basis set up for
Tanh/Zolo * (Cayley/PartFrac/ContFrac) * (Mobius/Shamir/Wilson)
Approx        Representation               Kernel.

All are done with space-time taking part in checkerboarding, Ls uncheckerboarded

Have only so far tested the Domain Wall limit of mobius, and at that only checked
that it
i)  Inverts
ii) 5dim DW == Ls copies of 4dim D2
iii) MeeInv Mee == 1
iv) Meo+Mee+Moe+Moo == M unprec.
v) MpcDagMpc is hermitan
vi) Mdag is the adjoint of M between stochastic vectors.

That said, the RB schur solve, RB MpcDagMpc solve, Unprec solve
all converge and the true residual becomes small; so pretty good tests.
2015-06-02 16:57:12 +01:00
Peter Boyle 2583570e17 Domain wall fermions now invert ; have the basis set up for
Tanh/Zolo * (Cayley/PartFrac/ContFrac) * (Mobius/Shamir/Wilson)
Approx        Representation               Kernel.

All are done with space-time taking part in checkerboarding, Ls uncheckerboarded

Have only so far tested the Domain Wall limit of mobius, and at that only checked
that it
i)  Inverts
ii) 5dim DW == Ls copies of 4dim D2
iii) MeeInv Mee == 1
iv) Meo+Mee+Moe+Moo == M unprec.
v) MpcDagMpc is hermitan
vi) Mdag is the adjoint of M between stochastic vectors.

That said, the RB schur solve, RB MpcDagMpc solve, Unprec solve
all converge and the true residual becomes small; so pretty good tests.
2015-06-02 16:57:12 +01:00
Peter Boyle 3845f267cb Domain wall fermions now invert ; have the basis set up for
Tanh/Zolo * (Cayley/PartFrac/ContFrac) * (Mobius/Shamir/Wilson)
Approx        Representation               Kernel.

All are done with space-time taking part in checkerboarding, Ls uncheckerboarded

Have only so far tested the Domain Wall limit of mobius, and at that only checked
that it
i)  Inverts
ii) 5dim DW == Ls copies of 4dim D2
iii) MeeInv Mee == 1
iv) Meo+Mee+Moe+Moo == M unprec.
v) MpcDagMpc is hermitan
vi) Mdag is the adjoint of M between stochastic vectors.

That said, the RB schur solve, RB MpcDagMpc solve, Unprec solve
all converge and the true residual becomes small; so pretty good tests.
2015-06-02 16:57:12 +01:00
Azusa Yamaguchi 8f87950dc1 FIx miistake 2015-06-01 12:26:20 +01:00
Azusa Yamaguchi 8bd9fb4427 FIx miistake 2015-06-01 12:26:20 +01:00
Azusa Yamaguchi c851d0e705 FIx miistake 2015-06-01 12:26:20 +01:00
Azusa Yamaguchi 00bf7f4d42 Const safety 2015-06-01 12:25:59 +01:00
Azusa Yamaguchi 4c617c3643 Const safety 2015-06-01 12:25:59 +01:00
Azusa Yamaguchi b00a40dd65 Const safety 2015-06-01 12:25:59 +01:00
Azusa Yamaguchi eb28a64c3c No compile fix on mpi target 2015-05-31 22:50:03 +01:00
Azusa Yamaguchi 9ea64767b0 No compile fix on mpi target 2015-05-31 22:50:03 +01:00
Azusa Yamaguchi 12c2562b96 No compile fix on mpi target 2015-05-31 22:50:03 +01:00
azusayamaguchi 328aa9ae49 Bug in Makefile.am fixed 2015-05-31 18:50:08 +01:00
azusayamaguchi ce8c7a77b6 Bug in Makefile.am fixed 2015-05-31 18:50:08 +01:00
azusayamaguchi f2c70804ca Bug in Makefile.am fixed 2015-05-31 18:50:08 +01:00
Peter Boyle 6f725748ed Updated line counter 2015-05-31 15:11:09 +01:00
Peter Boyle 8272e15bd6 Updated line counter 2015-05-31 15:11:09 +01:00
Peter Boyle 46d1bae46a Updated line counter 2015-05-31 15:11:09 +01:00
Peter Boyle 66d997e031 Large scale change to support 5d fermion formulations.
Have 5d replicated wilson with 4d gauge working and matrix regressing
to Ls copies of wilson.
2015-05-31 15:09:02 +01:00
Peter Boyle a75b6f6e78 Large scale change to support 5d fermion formulations.
Have 5d replicated wilson with 4d gauge working and matrix regressing
to Ls copies of wilson.
2015-05-31 15:09:02 +01:00
Peter Boyle 5644ab1e19 Large scale change to support 5d fermion formulations.
Have 5d replicated wilson with 4d gauge working and matrix regressing
to Ls copies of wilson.
2015-05-31 15:09:02 +01:00
Peter Boyle 8c357dca8b Integer wrap problem fixed. 2015-05-29 14:11:34 +01:00
Peter Boyle 9cfc180334 Integer wrap problem fixed. 2015-05-29 14:11:34 +01:00
Peter Boyle 59db857ad1 Integer wrap problem fixed. 2015-05-29 14:11:34 +01:00
neo 661c7e3e37 Merge remote-tracking branch 'upstream/master' 2015-05-29 11:41:39 +09:00
neo 575e6001f3 Merge remote-tracking branch 'upstream/master' 2015-05-29 11:41:39 +09:00
neo 727bc32150 Merge remote-tracking branch 'upstream/master' 2015-05-29 11:41:39 +09:00
neo 96ad352741 Some modifications to the configure to check SIMD support 2015-05-29 11:41:02 +09:00
neo 4403e117a7 Some modifications to the configure to check SIMD support 2015-05-29 11:41:02 +09:00
neo f41e4e8b1b Some modifications to the configure to check SIMD support 2015-05-29 11:41:02 +09:00
Peter Boyle 62dccb3247 Weak scale the benchmarks automatically. 2015-05-28 13:47:01 +01:00
Peter Boyle 445e38acf6 Weak scale the benchmarks automatically. 2015-05-28 13:47:01 +01:00
Peter Boyle 67fa5691e5 Weak scale the benchmarks automatically. 2015-05-28 13:47:01 +01:00
Peter Boyle c0c1ebe757 Works now with Clang-avx, Clang-sse and ICPC-avx, ICPC-sse 2015-05-28 11:35:43 +01:00
Peter Boyle a5c3424cfb Works now with Clang-avx, Clang-sse and ICPC-avx, ICPC-sse 2015-05-28 11:35:43 +01:00
Peter Boyle 62a7ca462f Works now with Clang-avx, Clang-sse and ICPC-avx, ICPC-sse 2015-05-28 11:35:43 +01:00
Peter Boyle bd81ac0f17 Improving the reduction to go through our on permute.
Must also do this for avx512
2015-05-27 16:07:17 +01:00
Peter Boyle e8be96bfe7 Improving the reduction to go through our on permute.
Must also do this for avx512
2015-05-27 16:07:17 +01:00
Peter Boyle b72ca15bd2 Improving the reduction to go through our on permute.
Must also do this for avx512
2015-05-27 16:07:17 +01:00
neo d8b05e001d Check at configure time if CPU supports the requested SIMD optimization 2015-05-27 18:30:11 +09:00
neo be66fdcfab Check at configure time if CPU supports the requested SIMD optimization 2015-05-27 18:30:11 +09:00
neo 19bd6f103a Check at configure time if CPU supports the requested SIMD optimization 2015-05-27 18:30:11 +09:00
neo 9fd6506d1f Included Gpermute in the new Grid_simd.h file style.
Now tested for SSE4. OK
2015-05-27 12:11:44 +09:00
neo 28ac219d81 Included Gpermute in the new Grid_simd.h file style.
Now tested for SSE4. OK
2015-05-27 12:11:44 +09:00
neo 64753ea633 Included Gpermute in the new Grid_simd.h file style.
Now tested for SSE4. OK
2015-05-27 12:11:44 +09:00
neo 75442e48ce Added a .gitignore file to eliminate autoconf files from commits 2015-05-27 11:10:51 +09:00
neo 4e3f4104ab Added a .gitignore file to eliminate autoconf files from commits 2015-05-27 11:10:51 +09:00
neo 3cb34af82c Added a .gitignore file to eliminate autoconf files from commits 2015-05-27 11:10:51 +09:00
Guido Cossu 26ec41288d Corrected AVX regression error. Tested. 2015-05-27 10:49:33 +09:00
Guido Cossu 2ccbff6c6c Corrected AVX regression error. Tested. 2015-05-27 10:49:33 +09:00
Guido Cossu 8abf6403d5 Corrected AVX regression error. Tested. 2015-05-27 10:49:33 +09:00
neo 13707e0808 Merge remote-tracking branch 'upstream/master'
Conflicts:
	Makefile.in
2015-05-27 10:41:33 +09:00
neo 9344d41ac5 Merge remote-tracking branch 'upstream/master'
Conflicts:
	Makefile.in
2015-05-27 10:41:33 +09:00
neo b99f2279c3 Merge remote-tracking branch 'upstream/master'
Conflicts:
	Makefile.in
2015-05-27 10:41:33 +09:00
neo 12ae11ef62 Adding support for doxygen generation 2015-05-27 10:34:56 +09:00
neo 538bc41bbb Adding support for doxygen generation 2015-05-27 10:34:56 +09:00
neo da46b56e85 Adding support for doxygen generation 2015-05-27 10:34:56 +09:00
Peter Boyle e468d75286 Auto gen files should never have been committed, but making everyone run
aclocal, automake, autoconf is a pain in the ass.
2015-05-26 22:20:40 +01:00
Peter Boyle b6a28f1de7 Auto gen files should never have been committed, but making everyone run
aclocal, automake, autoconf is a pain in the ass.
2015-05-26 22:20:40 +01:00
Peter Boyle 74f138c5e8 Auto gen files should never have been committed, but making everyone run
aclocal, automake, autoconf is a pain in the ass.
2015-05-26 22:20:40 +01:00
Peter Boyle 22d073eb2b Simd revert to Guido's commit. I edited concurrently and things went bad. 2015-05-26 22:20:09 +01:00
Peter Boyle 6d2e056187 Simd revert to Guido's commit. I edited concurrently and things went bad. 2015-05-26 22:20:09 +01:00
Peter Boyle ccd47011b9 Simd revert to Guido's commit. I edited concurrently and things went bad. 2015-05-26 22:20:09 +01:00
Peter Boyle ccf10a973a Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Grid_simd.h
2015-05-26 20:04:08 +01:00
Peter Boyle fb37b57c2d Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Grid_simd.h
2015-05-26 20:04:08 +01:00
Peter Boyle 48bb3ab4e7 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/Grid_simd.h
2015-05-26 20:04:08 +01:00
Peter Boyle 6ef0096dc9 Strip out the dslash kernel implementation 2015-05-26 19:55:18 +01:00
Peter Boyle 5e72e4c0d9 Strip out the dslash kernel implementation 2015-05-26 19:55:18 +01:00
Peter Boyle bfb1cd36e2 Strip out the dslash kernel implementation 2015-05-26 19:55:18 +01:00
Peter Boyle 20100d0a40 Hand unrolled version of dslash in a separate class.
Useful to compare; raises Intel compiler from 9GFlop/s to 17.5 Gflops.
                   on ivybridge core. Raises Clang form 14.5 to 17.5
2015-05-26 19:54:03 +01:00
Peter Boyle a32ac287bb Hand unrolled version of dslash in a separate class.
Useful to compare; raises Intel compiler from 9GFlop/s to 17.5 Gflops.
                   on ivybridge core. Raises Clang form 14.5 to 17.5
2015-05-26 19:54:03 +01:00
Peter Boyle 840754dd42 Hand unrolled version of dslash in a separate class.
Useful to compare; raises Intel compiler from 9GFlop/s to 17.5 Gflops.
                   on ivybridge core. Raises Clang form 14.5 to 17.5
2015-05-26 19:54:03 +01:00
neo c04cad92ac More cleanup of Grid_simd.h 2015-05-26 13:54:34 +09:00
neo fb5d72973e More cleanup of Grid_simd.h 2015-05-26 13:54:34 +09:00
neo 500f6ed0c5 More cleanup of Grid_simd.h 2015-05-26 13:54:34 +09:00
neo aff978f60a Cleaning up simd files 2015-05-26 13:31:10 +09:00
neo 3f576830f9 Cleaning up simd files 2015-05-26 13:31:10 +09:00
neo 4dbaa389c8 Cleaning up simd files 2015-05-26 13:31:10 +09:00
neo 9ad6d0c65f Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/math/Grid_math_tensors.h
	lib/simd/Grid_vector_types.h
2015-05-26 13:14:06 +09:00
neo 257aa92421 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/math/Grid_math_tensors.h
	lib/simd/Grid_vector_types.h
2015-05-26 13:14:06 +09:00
neo 48cc816136 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/math/Grid_math_tensors.h
	lib/simd/Grid_vector_types.h
2015-05-26 13:14:06 +09:00
neo 377083e6ae checked performance of new vector libaries.
Added check for c++11 support on the configure.ac
2015-05-26 12:02:54 +09:00
neo ece86f717b checked performance of new vector libaries.
Added check for c++11 support on the configure.ac
2015-05-26 12:02:54 +09:00
neo 1a24801246 checked performance of new vector libaries.
Added check for c++11 support on the configure.ac
2015-05-26 12:02:54 +09:00
Peter Boyle c2ffb1a098 Makefile update 2015-05-25 14:43:08 +01:00
Peter Boyle 3a6ff2d7b8 Makefile update 2015-05-25 14:43:08 +01:00
Peter Boyle 37721572e7 Makefile update 2015-05-25 14:43:08 +01:00
Peter Boyle d7f5172860 Schur complement based red-black inversion working 2015-05-25 13:47:12 +01:00
Peter Boyle 2ae6214104 Schur complement based red-black inversion working 2015-05-25 13:47:12 +01:00
Peter Boyle 489b1b9633 Schur complement based red-black inversion working 2015-05-25 13:47:12 +01:00
Peter Boyle 201a110c51 Better EO support letting Schur solver work 2015-05-25 13:46:28 +01:00
Peter Boyle 1a9841a0f1 Better EO support letting Schur solver work 2015-05-25 13:46:28 +01:00
Peter Boyle ea3240ad55 Better EO support letting Schur solver work 2015-05-25 13:46:28 +01:00
Peter Boyle 1d4b1c48cc Most cosmetic 2015-05-25 13:45:32 +01:00
Peter Boyle 55685b7cf5 Most cosmetic 2015-05-25 13:45:32 +01:00
Peter Boyle 956e728b40 Most cosmetic 2015-05-25 13:45:32 +01:00
Peter Boyle f6cade41b4 Better checkerboard tracking. 2015-05-25 13:45:08 +01:00
Peter Boyle 3358a77c7a Better checkerboard tracking. 2015-05-25 13:45:08 +01:00
Peter Boyle 94d679c4e6 Better checkerboard tracking. 2015-05-25 13:45:08 +01:00
Peter Boyle 6e76f0c6cd move constants into red black 2015-05-25 13:44:35 +01:00
Peter Boyle bc947477f3 move constants into red black 2015-05-25 13:44:35 +01:00
Peter Boyle 616f871735 move constants into red black 2015-05-25 13:44:35 +01:00
Peter Boyle 55ad54e0ff Updates now schur red black solver working 2015-05-25 13:43:58 +01:00
Peter Boyle 29f72292ba Updates now schur red black solver working 2015-05-25 13:43:58 +01:00
Peter Boyle 624c0ac3ef Updates now schur red black solver working 2015-05-25 13:43:58 +01:00
Peter Boyle 00ee531005 Herm op 2015-05-25 13:42:36 +01:00
Peter Boyle 9b5633ff4f Herm op 2015-05-25 13:42:36 +01:00
Peter Boyle ac99832d21 Herm op 2015-05-25 13:42:36 +01:00
Peter Boyle ca30116144 red black fix 2015-05-25 13:42:12 +01:00
Peter Boyle 17a06af1ff red black fix 2015-05-25 13:42:12 +01:00
Peter Boyle d30c013721 red black fix 2015-05-25 13:42:12 +01:00
Peter Boyle 41ba13f951 Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-23 09:36:08 +01:00
Peter Boyle c25016030c Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-23 09:36:08 +01:00
Peter Boyle 5cf285bce9 Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-23 09:36:08 +01:00
Peter Boyle 31a40fa37f Added 2015-05-23 09:36:01 +01:00
Peter Boyle 2806273340 Added 2015-05-23 09:36:01 +01:00
Peter Boyle 613a73b1b6 Added 2015-05-23 09:36:01 +01:00
Peter Boyle 602248d5fe Extra targets 2015-05-23 09:35:37 +01:00
Peter Boyle 73ee36c48d Extra targets 2015-05-23 09:35:37 +01:00
Peter Boyle f681baa9cd Extra targets 2015-05-23 09:35:37 +01:00
Peter Boyle 2ba641b25e More targets 2015-05-23 09:34:50 +01:00
Peter Boyle b8fdb65fbf More targets 2015-05-23 09:34:50 +01:00
Peter Boyle d21411ead9 More targets 2015-05-23 09:34:50 +01:00
Peter Boyle 2d30e82dcb Improving even odd sector; lot of work and through required cleaning this 2015-05-23 09:34:16 +01:00
Peter Boyle 65f2e6b269 Improving even odd sector; lot of work and through required cleaning this 2015-05-23 09:34:16 +01:00
Peter Boyle 64fcbd0387 Improving even odd sector; lot of work and through required cleaning this 2015-05-23 09:34:16 +01:00
Peter Boyle 0b165afd9e Rely on default constructors 2015-05-23 09:33:42 +01:00
Peter Boyle d07a5c084d Rely on default constructors 2015-05-23 09:33:42 +01:00
Peter Boyle bef9bf0d38 Rely on default constructors 2015-05-23 09:33:42 +01:00
Peter Boyle 3954792f37 Better pragma use 2015-05-23 09:32:37 +01:00
Peter Boyle a2928321b6 Better pragma use 2015-05-23 09:32:37 +01:00
Peter Boyle eadfb5be67 Better pragma use 2015-05-23 09:32:37 +01:00
Peter Boyle 8c7b5f5d3b Cosmetic 2015-05-23 09:31:15 +01:00
Peter Boyle 764732944f Cosmetic 2015-05-23 09:31:15 +01:00
Peter Boyle 33737ef57a Cosmetic 2015-05-23 09:31:15 +01:00
Peter Boyle be8b4f89d6 Iterator required 2015-05-23 09:30:28 +01:00
Peter Boyle ae58a9ada2 Iterator required 2015-05-23 09:30:28 +01:00
Peter Boyle 32c3f16f95 Iterator required 2015-05-23 09:30:28 +01:00
neo 57feda4328 Completed implementation of new Grid_simd classes
Tested performance for SSE4, Ok.
AVX1/2, AVX512 yet untested
2015-05-22 17:33:15 +09:00
neo 1c862dc15b Completed implementation of new Grid_simd classes
Tested performance for SSE4, Ok.
AVX1/2, AVX512 yet untested
2015-05-22 17:33:15 +09:00
neo 9e29ac6549 Completed implementation of new Grid_simd classes
Tested performance for SSE4, Ok.
AVX1/2, AVX512 yet untested
2015-05-22 17:33:15 +09:00
Peter Boyle a11850d2fb Merge pull request #7 from coppolachan/master
Added full support for SSE4
2015-05-22 05:58:59 +01:00
Peter Boyle 96e5c5c6ca Merge pull request #7 from coppolachan/master
Added full support for SSE4
2015-05-22 05:58:59 +01:00
Peter Boyle 24c68a697b Merge pull request #7 from coppolachan/master
Added full support for SSE4
2015-05-22 05:58:59 +01:00
Peter Boyle e0cc5ba920 Streaming store option ifdef 2015-05-21 06:47:05 +01:00
Peter Boyle d8061afe24 Streaming store option ifdef 2015-05-21 06:47:05 +01:00
Peter Boyle 9601890549 Streaming store option ifdef 2015-05-21 06:47:05 +01:00
Peter Boyle 1b9ecbac3b Compile time select if we do the streaming store copy. Relies on Clang++ eliminating object copies,
and other compliers do not necessarily cope.
2015-05-21 06:39:00 +01:00
Peter Boyle 874b2eb32d Compile time select if we do the streaming store copy. Relies on Clang++ eliminating object copies,
and other compliers do not necessarily cope.
2015-05-21 06:39:00 +01:00
Peter Boyle 1559dd4adc Compile time select if we do the streaming store copy. Relies on Clang++ eliminating object copies,
and other compliers do not necessarily cope.
2015-05-21 06:39:00 +01:00
Peter Boyle ac0941be9a adding two routines containing only a single operation so I can easily see the assembly dump 2015-05-21 06:37:46 +01:00
Peter Boyle f1fb92fd01 adding two routines containing only a single operation so I can easily see the assembly dump 2015-05-21 06:37:46 +01:00
Peter Boyle 22bfbd0f8d adding two routines containing only a single operation so I can easily see the assembly dump 2015-05-21 06:37:46 +01:00
Peter Boyle fb159e1cff Minor change 2015-05-21 06:37:20 +01:00
Peter Boyle 3e1d1aff18 Minor change 2015-05-21 06:37:20 +01:00
Peter Boyle 3a441c3e94 Minor change 2015-05-21 06:37:20 +01:00
Peter Boyle 8bc0033326 useful to dump assembler 2015-05-21 06:36:47 +01:00
Peter Boyle c96af471ee useful to dump assembler 2015-05-21 06:36:47 +01:00
Peter Boyle d4ca8647dc useful to dump assembler 2015-05-21 06:36:47 +01:00
Peter Boyle db786fac13 Didn't like a print statement 2015-05-21 06:36:15 +01:00
Peter Boyle 57a01e6bbb Didn't like a print statement 2015-05-21 06:36:15 +01:00
Peter Boyle d0d41b8bce Didn't like a print statement 2015-05-21 06:36:15 +01:00
Peter Boyle 046485a7bb better comms benchmarking 2015-05-21 06:35:46 +01:00
Peter Boyle d806581666 better comms benchmarking 2015-05-21 06:35:46 +01:00
Peter Boyle 341096dce8 better comms benchmarking 2015-05-21 06:35:46 +01:00
Peter Boyle 9058135da0 Unroll pragma abstraction 2015-05-21 06:34:33 +01:00
Peter Boyle 35055ed5c1 Unroll pragma abstraction 2015-05-21 06:34:33 +01:00
Peter Boyle 34960ca50c Unroll pragma abstraction 2015-05-21 06:34:33 +01:00
neo f8d8958884 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/simd/Grid_vector_types.h
	tests/Makefile.am
2015-05-20 17:32:46 +09:00
neo 9098d7d0a3 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/simd/Grid_vector_types.h
	tests/Makefile.am
2015-05-20 17:32:46 +09:00
neo d03c4e5901 Merge remote-tracking branch 'upstream/master'
Conflicts:
	lib/simd/Grid_vector_types.h
	tests/Makefile.am
2015-05-20 17:32:46 +09:00
neo e529210f43 Implemented all SSE4 functions.
A test code Grid_simd_new.cc has been created to test the new class.
Tests are all OK.
2015-05-20 17:22:40 +09:00
neo 3a3f54932a Implemented all SSE4 functions.
A test code Grid_simd_new.cc has been created to test the new class.
Tests are all OK.
2015-05-20 17:22:40 +09:00
neo cf7be0e461 Implemented all SSE4 functions.
A test code Grid_simd_new.cc has been created to test the new class.
Tests are all OK.
2015-05-20 17:22:40 +09:00
Peter Boyle 8fdff33b3a Merging in
Merge branch 'master' of https://github.com/paboyle/Grid
2015-05-19 21:30:13 +01:00
Peter Boyle dc4014668d Merging in
Merge branch 'master' of https://github.com/paboyle/Grid
2015-05-19 21:30:13 +01:00
Peter Boyle 221902a882 Merging in
Merge branch 'master' of https://github.com/paboyle/Grid
2015-05-19 21:30:13 +01:00
Peter Boyle 91ed085ca4 Build a simple kernel to compare intel compiler and clang in simple environment 2015-05-19 21:29:40 +01:00
Peter Boyle 3f57662cd0 Build a simple kernel to compare intel compiler and clang in simple environment 2015-05-19 21:29:40 +01:00
Peter Boyle d3931111fb Build a simple kernel to compare intel compiler and clang in simple environment 2015-05-19 21:29:40 +01:00
Peter Boyle efc0d1e0b9 Reworking to keep intel compiler happy 2015-05-19 21:29:07 +01:00
Peter Boyle b562b50196 Reworking to keep intel compiler happy 2015-05-19 21:29:07 +01:00
Peter Boyle a21036e69a Reworking to keep intel compiler happy 2015-05-19 21:29:07 +01:00
Peter Boyle 2d8b5a8191 Optimisation... 2015-05-19 15:50:47 +01:00
Peter Boyle 46ab8edf30 Optimisation... 2015-05-19 15:50:47 +01:00
Peter Boyle 8220794c44 Optimisation... 2015-05-19 15:50:47 +01:00
Peter Boyle b520694b00 Merge branch 'coppolachan-master' 2015-05-19 15:05:32 +01:00
Peter Boyle 5f0530b68a Merge branch 'coppolachan-master' 2015-05-19 15:05:32 +01:00
Peter Boyle 7571a6b021 Merge branch 'coppolachan-master' 2015-05-19 15:05:32 +01:00
Peter Boyle 3fe7275332 Merged
Merge branch 'master' of https://github.com/coppolachan/Grid into coppolachan-master

Conflicts:
	lib/simd/Grid_vector_types.h
2015-05-19 15:05:07 +01:00
Peter Boyle 3d66d00313 Merged
Merge branch 'master' of https://github.com/coppolachan/Grid into coppolachan-master

Conflicts:
	lib/simd/Grid_vector_types.h
2015-05-19 15:05:07 +01:00
Peter Boyle fde7f8d6b9 Merged
Merge branch 'master' of https://github.com/coppolachan/Grid into coppolachan-master

Conflicts:
	lib/simd/Grid_vector_types.h
2015-05-19 15:05:07 +01:00
azusayamaguchi ee8cf77071 Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-19 14:55:26 +01:00
azusayamaguchi a4b3bc7714 Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-19 14:55:26 +01:00
azusayamaguchi 2d2da8364f Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-19 14:55:26 +01:00
azusayamaguchi c8c74e591f Add messages to get the number of threads for openmp 2015-05-19 14:54:42 +01:00
azusayamaguchi 592cec72e2 Add messages to get the number of threads for openmp 2015-05-19 14:54:42 +01:00
azusayamaguchi 91f29d4a68 Add messages to get the number of threads for openmp 2015-05-19 14:54:42 +01:00
Peter Boyle a6e1ea216d Got unpreconditioned conjugate gradient to run and converge on a random (uniform random,
not even SU(3) for now) gauge field. Convergence history is correctly indepdendent of decomposition
on 1,2,4,8,16 mpi tasks.
Found a couple of simd bugs which required fixed and enhanced the Grid_simd.cc test suite.
Implemented the Mdag, M, MdagM, Meooe Mooee schur type stuff in the wilson dop.
2015-05-19 13:57:35 +01:00
Peter Boyle ffc00caea3 Got unpreconditioned conjugate gradient to run and converge on a random (uniform random,
not even SU(3) for now) gauge field. Convergence history is correctly indepdendent of decomposition
on 1,2,4,8,16 mpi tasks.
Found a couple of simd bugs which required fixed and enhanced the Grid_simd.cc test suite.
Implemented the Mdag, M, MdagM, Meooe Mooee schur type stuff in the wilson dop.
2015-05-19 13:57:35 +01:00
Peter Boyle 4dba8522a1 Got unpreconditioned conjugate gradient to run and converge on a random (uniform random,
not even SU(3) for now) gauge field. Convergence history is correctly indepdendent of decomposition
on 1,2,4,8,16 mpi tasks.
Found a couple of simd bugs which required fixed and enhanced the Grid_simd.cc test suite.
Implemented the Mdag, M, MdagM, Meooe Mooee schur type stuff in the wilson dop.
2015-05-19 13:57:35 +01:00
neo 7fb3221d47 Partial implementation of the vector types SIMD
Implementing SSE4 now
A systematic series of tests must be written.
2015-05-19 17:21:17 +09:00
neo b29caead32 Partial implementation of the vector types SIMD
Implementing SSE4 now
A systematic series of tests must be written.
2015-05-19 17:21:17 +09:00
neo 74e91cd925 Partial implementation of the vector types SIMD
Implementing SSE4 now
A systematic series of tests must be written.
2015-05-19 17:21:17 +09:00
neo 639fd05239 Added check of mpfr and gmp at configure time
It generates automatically the linker flags or complains if not found.
2015-05-19 13:54:55 +09:00
neo 4cadf11d1d Added check of mpfr and gmp at configure time
It generates automatically the linker flags or complains if not found.
2015-05-19 13:54:55 +09:00
neo baa382f055 Added check of mpfr and gmp at configure time
It generates automatically the linker flags or complains if not found.
2015-05-19 13:54:55 +09:00
neo d6887beead Merging with upstream 2015-05-19 13:36:03 +09:00
neo b5af3fbe45 Merging with upstream 2015-05-19 13:36:03 +09:00
neo 7ad705066d Merging with upstream 2015-05-19 13:36:03 +09:00
Peter Boyle 6f387b4916 Merge branch 'coppolachan-master' 2015-05-18 16:36:58 +01:00
Peter Boyle c7314e526e Merge branch 'coppolachan-master' 2015-05-18 16:36:58 +01:00
Peter Boyle 05d862782f Merge branch 'coppolachan-master' 2015-05-18 16:36:58 +01:00
Peter Boyle 9bfe0e63f4 lib/algorithms/approx/bigfloat.h 2015-05-18 16:35:48 +01:00
Peter Boyle f9a8377fe6 lib/algorithms/approx/bigfloat.h 2015-05-18 16:35:48 +01:00
Peter Boyle 3f17423d36 lib/algorithms/approx/bigfloat.h 2015-05-18 16:35:48 +01:00
Peter Boyle 30494bd96d Merge branch 'master' of https://github.com/coppolachan/Grid into coppolachan-master
Conflicts:
	lib/algorithms/approx/bigfloat.h
2015-05-18 16:34:21 +01:00
Peter Boyle cf9bbee256 Merge branch 'master' of https://github.com/coppolachan/Grid into coppolachan-master
Conflicts:
	lib/algorithms/approx/bigfloat.h
2015-05-18 16:34:21 +01:00
Peter Boyle 05f1419df4 Merge branch 'master' of https://github.com/coppolachan/Grid into coppolachan-master
Conflicts:
	lib/algorithms/approx/bigfloat.h
2015-05-18 16:34:21 +01:00
Peter Boyle 6f038a7f6d Convience function 2015-05-18 16:28:29 +01:00
Peter Boyle a19deba26c Convience function 2015-05-18 16:28:29 +01:00
Peter Boyle 0b3721502e Convience function 2015-05-18 16:28:29 +01:00
Peter Boyle 193fd5532f Remez tested 2015-05-18 12:09:25 +01:00
Peter Boyle 2843264bd8 Remez tested 2015-05-18 12:09:25 +01:00
Peter Boyle 17835c6f42 Remez tested 2015-05-18 12:09:25 +01:00
neo fa1dc5e448 Minor modification to the configure.ac
Enables silent rules (use make V=1 to override)
Prints a summary after configure is completed
2015-05-18 17:15:14 +09:00
neo 17e4e478cd Minor modification to the configure.ac
Enables silent rules (use make V=1 to override)
Prints a summary after configure is completed
2015-05-18 17:15:14 +09:00
neo 99aecf1f2e Minor modification to the configure.ac
Enables silent rules (use make V=1 to override)
Prints a summary after configure is completed
2015-05-18 17:15:14 +09:00
neo 6d2accba7b Corrected some compilation errors (zolotarev.h) and SSE4 vsplat and conj to make cshift test pass. 2015-05-18 16:48:14 +09:00
neo cee363e28c Corrected some compilation errors (zolotarev.h) and SSE4 vsplat and conj to make cshift test pass. 2015-05-18 16:48:14 +09:00
neo b4cd37276b Corrected some compilation errors (zolotarev.h) and SSE4 vsplat and conj to make cshift test pass. 2015-05-18 16:48:14 +09:00
Peter Boyle 1887c77498 Getting closer to having a wilson solver... introducing a first and untested
cut at Conjugate gradient. Also copied in Remez, Zolotarev, Chebyshev from
Mike Clark, Tony Kennedy and my BFM package respectively since we know we will
need these. I wanted the structure of

algorithms/approx
algorithms/iterative

etc.. to start taking shape.
2015-05-18 07:47:05 +01:00
Peter Boyle d0e4673a3f Getting closer to having a wilson solver... introducing a first and untested
cut at Conjugate gradient. Also copied in Remez, Zolotarev, Chebyshev from
Mike Clark, Tony Kennedy and my BFM package respectively since we know we will
need these. I wanted the structure of

algorithms/approx
algorithms/iterative

etc.. to start taking shape.
2015-05-18 07:47:05 +01:00
Peter Boyle 11cb3e9a01 Getting closer to having a wilson solver... introducing a first and untested
cut at Conjugate gradient. Also copied in Remez, Zolotarev, Chebyshev from
Mike Clark, Tony Kennedy and my BFM package respectively since we know we will
need these. I wanted the structure of

algorithms/approx
algorithms/iterative

etc.. to start taking shape.
2015-05-18 07:47:05 +01:00
Peter Boyle 6eb8dfd902 Working towards solvers 2015-05-17 00:19:03 +01:00
Peter Boyle 8e99e4671f Working towards solvers 2015-05-17 00:19:03 +01:00
Peter Boyle 7992346190 Working towards solvers 2015-05-17 00:19:03 +01:00
Peter Boyle e841395dfd Updating preparing for solvers etc.. 2015-05-16 23:35:08 +01:00
Peter Boyle dc6b6bdc96 Updating preparing for solvers etc.. 2015-05-16 23:35:08 +01:00
Peter Boyle bf7ab0da7a Updating preparing for solvers etc.. 2015-05-16 23:35:08 +01:00
Peter Boyle cf99a1f37d Better build automation 2015-05-16 07:16:45 +01:00
Peter Boyle 9b0aae665f Better build automation 2015-05-16 07:16:45 +01:00
Peter Boyle 1f4e7bbdce Better build automation 2015-05-16 07:16:45 +01:00
Peter Boyle deac65a92d Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-16 06:42:03 +01:00
Peter Boyle 4a0da933f0 Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-16 06:42:03 +01:00
Peter Boyle 1f765e5b59 Merge branch 'master' of https://github.com/paboyle/Grid 2015-05-16 06:42:03 +01:00
Peter Boyle f6e54a7bd4 Moved things around 2015-05-16 06:40:10 +01:00
Peter Boyle e2f6745a0e Moved things around 2015-05-16 06:40:10 +01:00
Peter Boyle 462bafdd2c Moved things around 2015-05-16 06:40:10 +01:00
Peter Boyle 53260e7a39 Typoo xifed 2015-05-16 05:49:32 +01:00
Peter Boyle 39e7ef1243 Typoo xifed 2015-05-16 05:49:32 +01:00
Peter Boyle e9ed288b00 Typoo xifed 2015-05-16 05:49:32 +01:00
Peter Boyle a900790b44 Update Grid_lattice_trace.h 2015-05-16 04:40:28 +01:00
Peter Boyle 9c38a52bad Update Grid_lattice_trace.h 2015-05-16 04:40:28 +01:00
Peter Boyle dda3da45fb Update Grid_lattice_trace.h 2015-05-16 04:40:28 +01:00
Peter Boyle b731bf6976 Pretty syntax 2015-05-16 04:37:26 +01:00
Peter Boyle 1247d7aea8 Pretty syntax 2015-05-16 04:37:26 +01:00
Peter Boyle 2e4ba02443 Pretty syntax 2015-05-16 04:37:26 +01:00
Peter Boyle 5f8b82b90c Optimisation and syntax pretty 2015-05-16 04:36:22 +01:00
Peter Boyle 9f0e990b40 Optimisation and syntax pretty 2015-05-16 04:36:22 +01:00
Peter Boyle a19aa9627d Optimisation and syntax pretty 2015-05-16 04:36:22 +01:00
Peter Boyle 25bfa7e830 more digits 2015-05-16 04:33:40 +01:00
Peter Boyle 56667e9d32 more digits 2015-05-16 04:33:40 +01:00
Peter Boyle aff5254208 more digits 2015-05-16 04:33:40 +01:00
Peter Boyle afda459886 strong inline 2015-05-16 04:33:10 +01:00
Peter Boyle 49f56a25d1 strong inline 2015-05-16 04:33:10 +01:00
Peter Boyle 9e29fb2c6a strong inline 2015-05-16 04:33:10 +01:00
Peter Boyle c43869a83a Extra compile targs 2015-05-15 14:41:59 +01:00
Peter Boyle c2ca396353 Extra compile targs 2015-05-15 14:41:59 +01:00
Peter Boyle bc5ed9acaf Extra compile targs 2015-05-15 14:41:59 +01:00
Peter Boyle 87bc17831d Added su3 matrix benchmark. 2015-05-15 14:41:19 +01:00
Peter Boyle 7a63bdbd72 Added su3 matrix benchmark. 2015-05-15 14:41:19 +01:00
Peter Boyle b4b70702fd Added su3 matrix benchmark. 2015-05-15 14:41:19 +01:00
Peter Boyle 76cbcff2f1 Log the bug report code into the git repo. 2015-05-15 12:39:53 +01:00
Peter Boyle 516aac6518 Log the bug report code into the git repo. 2015-05-15 12:39:53 +01:00
Peter Boyle 8e1b5dda4b Log the bug report code into the git repo. 2015-05-15 12:39:53 +01:00
Peter Boyle f43589369a Compile options tweak 2015-05-15 12:33:18 +01:00
Peter Boyle 675fd1a065 Compile options tweak 2015-05-15 12:33:18 +01:00
Peter Boyle 9386522543 Compile options tweak 2015-05-15 12:33:18 +01:00
Peter Boyle c99922b591 Out of source compile now working 2015-05-15 12:21:40 +01:00
Peter Boyle a98f3e0f5e Out of source compile now working 2015-05-15 12:21:40 +01:00
Peter Boyle 331f832c34 Out of source compile now working 2015-05-15 12:21:40 +01:00
Peter Boyle de0c199604 Convenience multi-compiler build with out of source compile 2015-05-15 12:21:10 +01:00
Peter Boyle f92fda0cfd Convenience multi-compiler build with out of source compile 2015-05-15 12:21:10 +01:00
Peter Boyle 022c12b8e4 Convenience multi-compiler build with out of source compile 2015-05-15 12:21:10 +01:00
Peter Boyle 3ed30169ea clang++ 3.4/5/7 compile happy for AVX and SSE
icpc compiles happy on MacOSX both with -xCOMMON-AV512 and native AVX

gcc-5 does not compile happy; can work around by renaming lattice peek/poke/transpose/trace templates
relative to tensor ones, but gcc goes into a recursive template instantiation due to
matching error. I think this is a gcc bug and have filed a report https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66153
2015-05-15 11:52:11 +01:00
Peter Boyle 100323ab4d clang++ 3.4/5/7 compile happy for AVX and SSE
icpc compiles happy on MacOSX both with -xCOMMON-AV512 and native AVX

gcc-5 does not compile happy; can work around by renaming lattice peek/poke/transpose/trace templates
relative to tensor ones, but gcc goes into a recursive template instantiation due to
matching error. I think this is a gcc bug and have filed a report https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66153
2015-05-15 11:52:11 +01:00
Peter Boyle 0b4d3544b9 clang++ 3.4/5/7 compile happy for AVX and SSE
icpc compiles happy on MacOSX both with -xCOMMON-AV512 and native AVX

gcc-5 does not compile happy; can work around by renaming lattice peek/poke/transpose/trace templates
relative to tensor ones, but gcc goes into a recursive template instantiation due to
matching error. I think this is a gcc bug and have filed a report https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66153
2015-05-15 11:52:11 +01:00
Peter Boyle bc3889ffa1 Remove debug masking 2015-05-15 11:51:15 +01:00
Peter Boyle 6965a136a0 Remove debug masking 2015-05-15 11:51:15 +01:00
Peter Boyle ed8e3b676f Remove debug masking 2015-05-15 11:51:15 +01:00
Peter Boyle 180b06d7e3 GCC and ICPC complained on more careful typeing 2015-05-15 11:50:44 +01:00
Peter Boyle 254dee6ac7 GCC and ICPC complained on more careful typeing 2015-05-15 11:50:44 +01:00
Peter Boyle 882fa27ff5 GCC and ICPC complained on more careful typeing 2015-05-15 11:50:44 +01:00
Peter Boyle 3bd376853c Move platform dependent out to Grid_simd.h 2015-05-15 11:50:00 +01:00
Peter Boyle 264850bc16 Move platform dependent out to Grid_simd.h 2015-05-15 11:50:00 +01:00
Peter Boyle 3346b68ccd Move platform dependent out to Grid_simd.h 2015-05-15 11:50:00 +01:00
Peter Boyle 6bba16ccf7 ngo store 2015-05-15 11:49:39 +01:00
Peter Boyle 9a120cf5ec ngo store 2015-05-15 11:49:39 +01:00
Peter Boyle 0afb64bf24 ngo store 2015-05-15 11:49:39 +01:00
Peter Boyle e8efa6320e Parallel for replace 2015-05-15 11:48:04 +01:00
Peter Boyle 8d77d758c3 Parallel for replace 2015-05-15 11:48:04 +01:00
Peter Boyle 537f47404b Parallel for replace 2015-05-15 11:48:04 +01:00
Peter Boyle e3b61bdfce Forces inlining upon icpc 2015-05-15 11:43:49 +01:00
Peter Boyle 0e7945fe54 Forces inlining upon icpc 2015-05-15 11:43:49 +01:00
Peter Boyle a0d041b522 Forces inlining upon icpc 2015-05-15 11:43:49 +01:00
Peter Boyle 86b9d24b62 Force inlining upon icpc 2015-05-15 11:43:20 +01:00
Peter Boyle bd721ce1c8 Force inlining upon icpc 2015-05-15 11:43:20 +01:00
Peter Boyle 8c57bcaece Force inlining upon icpc 2015-05-15 11:43:20 +01:00
Peter Boyle 3e3a8dc0c0 More elegant enable_if 2015-05-15 11:42:51 +01:00
Peter Boyle a852d13f03 More elegant enable_if 2015-05-15 11:42:51 +01:00
Peter Boyle 519eab8ff0 More elegant enable_if 2015-05-15 11:42:51 +01:00
Peter Boyle 4350c1e0f7 More elegant to do boolean logic inside the enable_if construct
Should have done that from the beginning and should move this into
a global edit
2015-05-15 11:42:03 +01:00
Peter Boyle a26fdab719 More elegant to do boolean logic inside the enable_if construct
Should have done that from the beginning and should move this into
a global edit
2015-05-15 11:42:03 +01:00
Peter Boyle f986e123d2 More elegant to do boolean logic inside the enable_if construct
Should have done that from the beginning and should move this into
a global edit
2015-05-15 11:42:03 +01:00
Peter Boyle 8c59605e05 Force inlining on ICPC because inline apparently is not enoguh 2015-05-15 11:41:31 +01:00
Peter Boyle af6e8f7829 Force inlining on ICPC because inline apparently is not enoguh 2015-05-15 11:41:31 +01:00
Peter Boyle 70638bf1f1 Force inlining on ICPC because inline apparently is not enoguh 2015-05-15 11:41:31 +01:00
Peter Boyle e59b6a805c strong_inline forces ICPC to do it. 2015-05-15 11:40:59 +01:00
Peter Boyle cbfa4097b4 strong_inline forces ICPC to do it. 2015-05-15 11:40:59 +01:00
Peter Boyle 54d8972753 strong_inline forces ICPC to do it. 2015-05-15 11:40:59 +01:00
Peter Boyle 5d8303e94d Force strong_inline to force ipcc's hand 2015-05-15 11:40:31 +01:00
Peter Boyle 8c40dd9c4f Force strong_inline to force ipcc's hand 2015-05-15 11:40:31 +01:00
Peter Boyle 5159b26261 Force strong_inline to force ipcc's hand 2015-05-15 11:40:31 +01:00
Peter Boyle 1339a7f8b0 Switch to strong_inline macro to force icpc's hand 2015-05-15 11:40:00 +01:00
Peter Boyle b38bf82d48 Switch to strong_inline macro to force icpc's hand 2015-05-15 11:40:00 +01:00
Peter Boyle c33ec96fc8 Switch to strong_inline macro to force icpc's hand 2015-05-15 11:40:00 +01:00
Peter Boyle e58cc72fe5 Promote to strong inline to force ICPC's hand. Annoying. 2015-05-15 11:39:25 +01:00
Peter Boyle adc4f86020 Promote to strong inline to force ICPC's hand. Annoying. 2015-05-15 11:39:25 +01:00
Peter Boyle 577325cb7a Promote to strong inline to force ICPC's hand. Annoying. 2015-05-15 11:39:25 +01:00
Peter Boyle 074430af0d Formatting change 2015-05-15 11:38:54 +01:00
Peter Boyle 5b46992a15 Formatting change 2015-05-15 11:38:54 +01:00
Peter Boyle 46c4379592 Formatting change 2015-05-15 11:38:54 +01:00
Peter Boyle 873110d482 Filed bug report Bug 66153 on GCC-5.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66153
2015-05-15 11:38:04 +01:00
Peter Boyle e7d25647e6 Filed bug report Bug 66153 on GCC-5.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66153
2015-05-15 11:38:04 +01:00
Peter Boyle f761ab0f50 Filed bug report Bug 66153 on GCC-5.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66153
2015-05-15 11:38:04 +01:00
Peter Boyle 4cee0e8653 Silly formatting change 2015-05-15 11:37:07 +01:00
Peter Boyle c28551f40f Silly formatting change 2015-05-15 11:37:07 +01:00
Peter Boyle 2a28cfb3a3 Silly formatting change 2015-05-15 11:37:07 +01:00
Peter Boyle 6b2a786779 gcc doesn't like collapse(2) for some reason I can't figure 2015-05-15 11:36:22 +01:00
Peter Boyle 6c7eb60d6f gcc doesn't like collapse(2) for some reason I can't figure 2015-05-15 11:36:22 +01:00
Peter Boyle b00622302b gcc doesn't like collapse(2) for some reason I can't figure 2015-05-15 11:36:22 +01:00
Peter Boyle cf27f22dc0 ICPC and GCC5 fixes 2015-05-15 11:35:02 +01:00
Peter Boyle 051b23fe10 ICPC and GCC5 fixes 2015-05-15 11:35:02 +01:00
Peter Boyle 3057b2762a ICPC and GCC5 fixes 2015-05-15 11:35:02 +01:00
Peter Boyle 40192841a4 Using boolean logic inside enable_if is more elegant 2015-05-15 11:32:45 +01:00
Peter Boyle 4e462209c7 Using boolean logic inside enable_if is more elegant 2015-05-15 11:32:45 +01:00
Peter Boyle 151a6f4e14 Using boolean logic inside enable_if is more elegant 2015-05-15 11:32:45 +01:00
Peter Boyle 1771f97551 Key of mm_malloc.h 2015-05-15 11:32:11 +01:00
Peter Boyle 8d1b26dd4b Key of mm_malloc.h 2015-05-15 11:32:11 +01:00
Peter Boyle a36c974f26 Key of mm_malloc.h 2015-05-15 11:32:11 +01:00
Peter Boyle 2eaf73e8b3 strong inline required to force icpc 2015-05-15 11:31:41 +01:00
Peter Boyle cc6218a692 strong inline required to force icpc 2015-05-15 11:31:41 +01:00
Peter Boyle c0977dcfaa strong inline required to force icpc 2015-05-15 11:31:41 +01:00
Peter Boyle 43bdbb5080 Linear op added 2015-05-13 11:25:34 +01:00
Peter Boyle 5166888c0a Linear op added 2015-05-13 11:25:34 +01:00
Peter Boyle f1255197c2 Linear op added 2015-05-13 11:25:34 +01:00
Peter Boyle 7f3ae64a31 OMP dslash working 2015-05-13 10:59:22 +01:00
Peter Boyle 0097b81778 OMP dslash working 2015-05-13 10:59:22 +01:00
Peter Boyle e179828662 OMP dslash working 2015-05-13 10:59:22 +01:00
Peter Boyle 457cc0d5a3 RNG test 2015-05-13 09:24:30 +01:00
Peter Boyle e6e72d23df RNG test 2015-05-13 09:24:30 +01:00
Peter Boyle 680f4e3636 RNG test 2015-05-13 09:24:30 +01:00
Peter Boyle d388b831b4 cout IO for all types 2015-05-13 09:24:10 +01:00
Peter Boyle add4495a4a cout IO for all types 2015-05-13 09:24:10 +01:00
Peter Boyle a108d5d3b0 cout IO for all types 2015-05-13 09:24:10 +01:00
Peter Boyle b4a570477c I have made the Cshift work successfully with open mp threading in
every routine. Collapse(2) is now working under clang-omp++.
2015-05-13 00:31:00 +01:00
Peter Boyle 541d52ab97 I have made the Cshift work successfully with open mp threading in
every routine. Collapse(2) is now working under clang-omp++.
2015-05-13 00:31:00 +01:00
Peter Boyle 48f425d31c I have made the Cshift work successfully with open mp threading in
every routine. Collapse(2) is now working under clang-omp++.
2015-05-13 00:31:00 +01:00
Peter Boyle 52174da232 Enhanced SIMD interfacing 2015-05-12 20:41:44 +01:00
Peter Boyle 556befaaaa Enhanced SIMD interfacing 2015-05-12 20:41:44 +01:00
Peter Boyle 6cec662ac5 Enhanced SIMD interfacing 2015-05-12 20:41:44 +01:00
Peter Boyle 65c91eae64 Threading support rework.
Placed parallel pragmas as macros; implemented deterministic thread reduction in style of
BFM.
2015-05-12 07:51:41 +01:00
Peter Boyle c6baa3e657 Threading support rework.
Placed parallel pragmas as macros; implemented deterministic thread reduction in style of
BFM.
2015-05-12 07:51:41 +01:00
Peter Boyle 6103c29ee3 Threading support rework.
Placed parallel pragmas as macros; implemented deterministic thread reduction in style of
BFM.
2015-05-12 07:51:41 +01:00
Peter Boyle 8b765be2b1 Moving some things around for pretty 2015-05-11 19:09:49 +01:00
Peter Boyle 6e6843ac69 Moving some things around for pretty 2015-05-11 19:09:49 +01:00
Peter Boyle b1d2c60d07 Moving some things around for pretty 2015-05-11 19:09:49 +01:00
Peter Boyle a411b48a91 Adding a better controlled threading class, preparing to
force in deterministic reduction.
2015-05-11 18:59:03 +01:00
Peter Boyle c8dc8ff891 Adding a better controlled threading class, preparing to
force in deterministic reduction.
2015-05-11 18:59:03 +01:00
Peter Boyle 22d384b07d Adding a better controlled threading class, preparing to
force in deterministic reduction.
2015-05-11 18:59:03 +01:00
Peter Boyle ebcb87abe1 Got command line args working 2015-05-11 14:36:48 +01:00
Peter Boyle b613ed0bb8 Got command line args working 2015-05-11 14:36:48 +01:00
Peter Boyle f5dcca7b1b Got command line args working 2015-05-11 14:36:48 +01:00
paboyle 1576b7837a CML parse 2015-05-11 12:56:27 +01:00
paboyle 4eb08ac9de CML parse 2015-05-11 12:56:27 +01:00
paboyle 43e71ff28c CML parse 2015-05-11 12:56:27 +01:00
paboyle fa5779537c Command line args and a general clean up 2015-05-11 12:43:10 +01:00
paboyle b42453d1fd Command line args and a general clean up 2015-05-11 12:43:10 +01:00
paboyle 379943abf5 Command line args and a general clean up 2015-05-11 12:43:10 +01:00
paboyle 5548fd6928 Updated to do list 2015-05-11 09:44:50 +01:00
paboyle 06dcbed6b1 Updated to do list 2015-05-11 09:44:50 +01:00
paboyle 9f9796b888 Updated to do list 2015-05-11 09:44:50 +01:00
Peter Boyle 242e447bc5 Lots of changes required to compile for MIC under ICPC 2015-05-10 23:29:21 +01:00
Peter Boyle 2203c6e597 Lots of changes required to compile for MIC under ICPC 2015-05-10 23:29:21 +01:00
Peter Boyle 5555a852be Lots of changes required to compile for MIC under ICPC 2015-05-10 23:29:21 +01:00
Peter Boyle 352bccf6ca Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/qcd/Grid_qcd_wilson_dop.cc
2015-05-10 15:37:47 +01:00
Peter Boyle 4da2c2ea00 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/qcd/Grid_qcd_wilson_dop.cc
2015-05-10 15:37:47 +01:00
Peter Boyle 48b9692845 Merge branch 'master' of https://github.com/paboyle/Grid
Conflicts:
	lib/qcd/Grid_qcd_wilson_dop.cc
2015-05-10 15:37:47 +01:00
Peter Boyle c946e77143 Expression template hack 2015-05-10 15:35:30 +01:00
Peter Boyle 1ec1b4ee44 Expression template hack 2015-05-10 15:35:30 +01:00
Peter Boyle b802abc83f Expression template hack 2015-05-10 15:35:30 +01:00
Peter Boyle 015fbee772 Expression template engin 2015-05-10 15:34:20 +01:00
Peter Boyle 1ab92563b9 Expression template engin 2015-05-10 15:34:20 +01:00
Peter Boyle 14591c72d6 Expression template engin 2015-05-10 15:34:20 +01:00
Peter Boyle 8215893152 Updated TODO list 2015-05-10 15:32:56 +01:00
Peter Boyle 5a7751d9df Updated TODO list 2015-05-10 15:32:56 +01:00
Peter Boyle 933ccfdc4f Updated TODO list 2015-05-10 15:32:56 +01:00
Peter Boyle 5fcf42cb30 Hack; must bring norm2 into the unary operator list.
ET's are still incomplete.
2015-05-10 15:30:29 +01:00
Peter Boyle 79c51ac51f Hack; must bring norm2 into the unary operator list.
ET's are still incomplete.
2015-05-10 15:30:29 +01:00
Peter Boyle 4e596da589 Hack; must bring norm2 into the unary operator list.
ET's are still incomplete.
2015-05-10 15:30:29 +01:00
Peter Boyle e647cf0459 Default to single node. Move to command line args. 2015-05-10 15:27:38 +01:00
Peter Boyle 7119bce9f3 Default to single node. Move to command line args. 2015-05-10 15:27:38 +01:00
Peter Boyle 41c9785f3b Default to single node. Move to command line args. 2015-05-10 15:27:38 +01:00
Peter Boyle 8919bf9e0a Single node default. Should expose this as command line args, but haven't sorted out
Grid_initialize to handle this. Should put this on the TODO list.
2015-05-10 15:26:06 +01:00
Peter Boyle cd90f55536 Single node default. Should expose this as command line args, but haven't sorted out
Grid_initialize to handle this. Should put this on the TODO list.
2015-05-10 15:26:06 +01:00
Peter Boyle 443efd875e Single node default. Should expose this as command line args, but haven't sorted out
Grid_initialize to handle this. Should put this on the TODO list.
2015-05-10 15:26:06 +01:00
Peter Boyle 133493dc79 Small tweak to enable benchmarking to suppress gauge field bandwidth as a test.
This is a short term hack while I benchmark.
2015-05-10 15:25:23 +01:00
Peter Boyle dc7132af71 Small tweak to enable benchmarking to suppress gauge field bandwidth as a test.
This is a short term hack while I benchmark.
2015-05-10 15:25:23 +01:00
Peter Boyle 02ae26d091 Small tweak to enable benchmarking to suppress gauge field bandwidth as a test.
This is a short term hack while I benchmark.
2015-05-10 15:25:23 +01:00
Peter Boyle 58d32a4d0e Assertion should never hit, but did due to a bug 2015-05-10 15:24:37 +01:00
Peter Boyle 961fbb2718 Assertion should never hit, but did due to a bug 2015-05-10 15:24:37 +01:00
Peter Boyle 2ffd941d67 Assertion should never hit, but did due to a bug 2015-05-10 15:24:37 +01:00
Peter Boyle 6bb17502f9 Moving operator stuff into separate file so that we can switch on/off replacement with
expression templates
2015-05-10 15:23:49 +01:00
Peter Boyle 4a8fd55f52 Moving operator stuff into separate file so that we can switch on/off replacement with
expression templates
2015-05-10 15:23:49 +01:00
Peter Boyle ca554f661b Moving operator stuff into separate file so that we can switch on/off replacement with
expression templates
2015-05-10 15:23:49 +01:00
Peter Boyle 8299bc39ea Fixing breakage in the Comms non compile 2015-05-10 15:23:09 +01:00
Peter Boyle e02cbaa016 Fixing breakage in the Comms non compile 2015-05-10 15:23:09 +01:00
Peter Boyle 29be76f958 Fixing breakage in the Comms non compile 2015-05-10 15:23:09 +01:00
Peter Boyle 7f04b85368 Bringing expression templates for faster vector loops 2015-05-10 15:22:31 +01:00
Peter Boyle 463c31ae09 Bringing expression templates for faster vector loops 2015-05-10 15:22:31 +01:00
Peter Boyle e3acb36de6 Bringing expression templates for faster vector loops 2015-05-10 15:22:31 +01:00
Peter Boyle a115f3b086 ET ready benchmark with bytes counted assuming loop interchange 2015-05-10 15:18:04 +01:00
Peter Boyle 3657f2303d ET ready benchmark with bytes counted assuming loop interchange 2015-05-10 15:18:04 +01:00
Peter Boyle b2e0f72a7e ET ready benchmark with bytes counted assuming loop interchange 2015-05-10 15:18:04 +01:00
Peter Boyle 27c2d13968 Updated todo list 2015-05-10 15:13:50 +01:00
Peter Boyle 9ed1fb45e1 Updated todo list 2015-05-10 15:13:50 +01:00
Peter Boyle ebed239e49 Updated todo list 2015-05-10 15:13:50 +01:00
Peter Boyle 5415180676 Wilson perf improvements with Gauge prefetching 2015-05-06 06:37:21 +01:00
Peter Boyle 52403d587c Wilson perf improvements with Gauge prefetching 2015-05-06 06:37:21 +01:00
Peter Boyle 55ccb8ccf4 Wilson perf improvements with Gauge prefetching 2015-05-06 06:37:21 +01:00
Peter Boyle 7b0dd6c5d6 Cleaned up for Linux 2015-05-05 22:09:22 +01:00
Peter Boyle cdd5cdeda2 Cleaned up for Linux 2015-05-05 22:09:22 +01:00
Peter Boyle 35d949cc17 Cleaned up for Linux 2015-05-05 22:09:22 +01:00
Peter Boyle cb4b82b09f streaming store cases 2015-05-05 18:14:09 +01:00
Peter Boyle b9d16a7191 streaming store cases 2015-05-05 18:14:09 +01:00
Peter Boyle cd990ba13d Streaming store option 2015-05-05 18:13:06 +01:00
Peter Boyle 07d57b6d55 Streaming store option 2015-05-05 18:13:06 +01:00
Peter Boyle 249165d1b2 Added streaming stores 2015-05-05 18:09:28 +01:00
Peter Boyle 5ebc7a1756 Added streaming stores 2015-05-05 18:09:28 +01:00
Peter Boyle b720222d98 Updated bandwidth test 2015-05-05 18:08:53 +01:00
Peter Boyle bf60764e4b Updated bandwidth test 2015-05-05 18:08:53 +01:00
Peter Boyle 0e8415de1b Added a makefile 2015-05-05 17:56:42 +01:00
Peter Boyle 890b13dd5b Added a makefile 2015-05-05 17:56:42 +01:00
Peter Boyle 2b46ad38e2 Back to vector for now; cost of init loop is clear in the a*x + y
loop in memory benchmark and must move to better container class.
2015-05-03 09:48:13 +01:00
Peter Boyle aeda7b923d Back to vector for now; cost of init loop is clear in the a*x + y
loop in memory benchmark and must move to better container class.
2015-05-03 09:48:13 +01:00
Peter Boyle 9d93d1e6d4 Comms and memory benchmarks added 2015-05-03 09:44:47 +01:00
Peter Boyle 193860dbc8 Comms and memory benchmarks added 2015-05-03 09:44:47 +01:00
Peter Boyle 253362f978 Added a comms benchmark 2015-05-02 23:51:43 +01:00
Peter Boyle 99a1ff423d Added a comms benchmark 2015-05-02 23:51:43 +01:00
Peter Boyle ea52562527 Added a comms benchmark 2015-05-02 23:42:30 +01:00
Peter Boyle f663be2a6c Added a comms benchmark 2015-05-02 23:42:30 +01:00
Peter Boyle 6a39089a43 Starting a benchmarking sub dir 2015-05-02 17:52:36 +01:00
Peter Boyle 4a1d4f1b3c Starting a benchmarking sub dir 2015-05-02 17:52:36 +01:00
Peter Boyle bdf18941a2 Improving the byte swap support for portability 2015-05-01 10:57:33 +01:00
Peter Boyle 31fd146cc0 Improving the byte swap support for portability 2015-05-01 10:57:33 +01:00
Peter Boyle d904e2b9ac Merge branch 'master' of https://github.com/paboyle/Grid 2015-04-30 16:40:13 +01:00
Peter Boyle c770f96be7 Merge branch 'master' of https://github.com/paboyle/Grid 2015-04-30 16:40:13 +01:00
Peter Boyle c0ead94791 Integrated Lebesgue code and been playing with alternate implementations of the wilson dop without
any particular success in increasing the performance.
2015-04-30 16:39:06 +01:00
Peter Boyle a98c01c86a Integrated Lebesgue code and been playing with alternate implementations of the wilson dop without
any particular success in increasing the performance.
2015-04-30 16:39:06 +01:00
Peter Boyle 7ac997bd58 Merge pull request #1 from mspraggs/patch-1
Added <map> include to GridNerscIO.h
2015-04-30 09:46:48 +01:00
Peter Boyle d5b1bfb4bb Merge pull request #1 from mspraggs/patch-1
Added <map> include to GridNerscIO.h
2015-04-30 09:46:48 +01:00
mspraggs 24fc71b2e9 Added <map> include to GridNerscIO.h
Adding this allows clang to compile Grid to completion.
2015-04-29 23:44:03 +01:00
mspraggs 6f05404cb8 Added <map> include to GridNerscIO.h
Adding this allows clang to compile Grid to completion.
2015-04-29 23:44:03 +01:00
Peter Boyle d8ffa09e3b Benchmark wilson dhop now; 14.6GF on one core, not as fast as SU(3)xSU(3) [23GF] but still not too shabby.
Disassembling output shows ugly sequences in the permute sector. Could comparatively benchmark with and without
the if-else structure to see how much I'm losing.

Drops to 9GF as it falls out of cache. Moving to Lebesgue ordering should help there. Substantive progress.
2015-04-29 06:50:18 +01:00
Peter Boyle b7090ebba4 Benchmark wilson dhop now; 14.6GF on one core, not as fast as SU(3)xSU(3) [23GF] but still not too shabby.
Disassembling output shows ugly sequences in the permute sector. Could comparatively benchmark with and without
the if-else structure to see how much I'm losing.

Drops to 9GF as it falls out of cache. Moving to Lebesgue ordering should help there. Substantive progress.
2015-04-29 06:50:18 +01:00
Peter Boyle dcc23faa4a Fixed the stencil sector and Wilson now agrees between stencil based implementation
and the cshift based implementation. Managed to reduce the volume of code in this
sector a little, but consolidation would be good, perhaps taking common
logic out into simple helper functions
2015-04-29 06:23:56 +01:00
Peter Boyle c72db6c6f6 Fixed the stencil sector and Wilson now agrees between stencil based implementation
and the cshift based implementation. Managed to reduce the volume of code in this
sector a little, but consolidation would be good, perhaps taking common
logic out into simple helper functions
2015-04-29 06:23:56 +01:00
Peter Boyle b0485894b3 Shaken out stencil to the point where I think wilson dslash is correct.
Need to audit code carefully, consolidate between stencil and cshift,
and then benchmark and optimise.
2015-04-28 08:11:59 +01:00
Peter Boyle 25d523c0f4 Shaken out stencil to the point where I think wilson dslash is correct.
Need to audit code carefully, consolidate between stencil and cshift,
and then benchmark and optimise.
2015-04-28 08:11:59 +01:00
Peter Boyle 0b7d389258 Reworking CSHIFT and Stencil. Implementing Wilson and discovered rework is required 2015-04-27 13:45:07 +01:00
Peter Boyle f159495a9d Reworking CSHIFT and Stencil. Implementing Wilson and discovered rework is required 2015-04-27 13:45:07 +01:00
Peter Boyle 35cfef2129 Big updates with progress towards wilson matrix 2015-04-26 15:51:09 +01:00
Peter Boyle 94f728bee4 Big updates with progress towards wilson matrix 2015-04-26 15:51:09 +01:00
Peter Boyle c678f2d255 Starting the implementation of wilson; incomplete and committing non-functional code which
is not yet included from elsewhere or linked to the build system.
2015-04-25 14:33:02 +01:00
Peter Boyle 51f0da7b93 Starting the implementation of wilson; incomplete and committing non-functional code which
is not yet included from elsewhere or linked to the build system.
2015-04-25 14:33:02 +01:00
Peter Boyle d5fd34b6e8 Update to TODO list 2015-04-25 13:04:26 +01:00
Peter Boyle 9dacdc947d Update to TODO list 2015-04-25 13:04:26 +01:00
Peter Boyle 2d8cf9e456 Added two spinor functionality required to support the Wilson hopping term. 2015-04-25 12:54:06 +01:00
Peter Boyle c5fa18eb20 Added two spinor functionality required to support the Wilson hopping term. 2015-04-25 12:54:06 +01:00
Peter Boyle dc970c6442 Dirac done ; remove from TODO 2015-04-24 22:56:37 +01:00
Peter Boyle 8b4073d84c Dirac done ; remove from TODO 2015-04-24 22:56:37 +01:00
Peter Boyle fc32450360 Improved the gamma quite a bit.
Serial rng's which are set on node zero and broadcaste
2015-04-24 20:21:40 +01:00
Peter Boyle 9ec3529864 Improved the gamma quite a bit.
Serial rng's which are set on node zero and broadcaste
2015-04-24 20:21:40 +01:00
Peter Boyle 2a67214f9d static names and enum list 2015-04-24 19:12:14 +01:00
Peter Boyle 42eac283e2 static names and enum list 2015-04-24 19:12:14 +01:00
Peter Boyle 71d5927a66 Vectors now too and right multiple of matrix with gamma 2015-04-24 19:08:29 +01:00
Peter Boyle 38598190c3 Vectors now too and right multiple of matrix with gamma 2015-04-24 19:08:29 +01:00
Peter Boyle f2ac20e7ab Removed summation 2015-04-24 18:42:44 +01:00
Peter Boyle 2e275e1e65 Removed summation 2015-04-24 18:42:44 +01:00
Peter Boyle 750dd5f5fd Cleared the code out from Grid_summation to lattice/Grid_lattice_transfer.h 2015-04-24 18:41:34 +01:00
Peter Boyle 80463ecaea Cleared the code out from Grid_summation to lattice/Grid_lattice_transfer.h 2015-04-24 18:41:34 +01:00
Peter Boyle 74432432b6 Moved code from summation into transfer and reduction 2015-04-24 18:40:44 +01:00
Peter Boyle 128ad0999f Moved code from summation into transfer and reduction 2015-04-24 18:40:44 +01:00
Peter Boyle b8eef54fa7 First implementation of Dirac matrices as a Gamma class. 2015-04-24 18:20:03 +01:00
Peter Boyle d707c4e0a3 First implementation of Dirac matrices as a Gamma class. 2015-04-24 18:20:03 +01:00
Peter Boyle e2e3ea5742 Reorganised the TODO. Really getting somewhere 2015-04-23 20:42:30 +01:00
Peter Boyle b9939e3974 Reorganised the TODO. Really getting somewhere 2015-04-23 20:42:30 +01:00
Peter Boyle 4b4dcc4c13 Rename Grid_QCD 2015-04-23 20:42:09 +01:00
Peter Boyle 3083d2e908 Rename Grid_QCD 2015-04-23 20:42:09 +01:00
Peter Boyle afe6c4f64f move 2015-04-23 20:41:22 +01:00
Peter Boyle 898f64cdd7 move 2015-04-23 20:41:22 +01:00
Peter Boyle 62e8d2d127 Slice summation working. May move this into lattice/Grid_lattice_reduction however 2015-04-23 15:13:00 +01:00
Peter Boyle 52a6ba9767 Slice summation working. May move this into lattice/Grid_lattice_reduction however 2015-04-23 15:13:00 +01:00
Peter Boyle b7416d79e3 Begginings of slice summation and subblocking 2015-04-23 11:04:59 +01:00
Peter Boyle 4d2198ea56 Begginings of slice summation and subblocking 2015-04-23 11:04:59 +01:00
Peter Boyle 2f8431ab03 Consolidate index to coor in a single routine 2015-04-23 11:04:19 +01:00
Peter Boyle 7007d6a176 Consolidate index to coor in a single routine 2015-04-23 11:04:19 +01:00
Peter Boyle a9e574dd27 Snippets from Guido to optimise Reduce 2015-04-23 08:31:40 +01:00
Peter Boyle a37a9789c9 Snippets from Guido to optimise Reduce 2015-04-23 08:31:40 +01:00
Peter Boyle 73c0db82d5 Better description of Intel's many ISA targets 2015-04-23 08:02:51 +01:00
Peter Boyle 5c8858f31b Better description of Intel's many ISA targets 2015-04-23 08:02:51 +01:00
Peter Boyle eb58297a43 Fixing endian on linux I hope 2015-04-23 07:51:15 +01:00
Peter Boyle 47292de769 Fixing endian on linux I hope 2015-04-23 07:51:15 +01:00
Peter Boyle 1851327d19 Got the NERSC IO working and fixed a bug in cshift. 2015-04-22 22:46:48 +01:00
Peter Boyle b32c14b433 Got the NERSC IO working and fixed a bug in cshift. 2015-04-22 22:46:48 +01:00
Peter Boyle a5b0c492d7 Rework of RNG to use C++11 random. Should work correctly maintaining parallel RNG across
a machine. If a "fixedSeed" is used, randoms should be reproducible across different machine
decomposition since the generators are physically indexed and assigned in lexico ordering.
2015-04-19 14:55:58 +01:00
Peter Boyle 42f167ea37 Rework of RNG to use C++11 random. Should work correctly maintaining parallel RNG across
a machine. If a "fixedSeed" is used, randoms should be reproducible across different machine
decomposition since the generators are physically indexed and assigned in lexico ordering.
2015-04-19 14:55:58 +01:00
Peter Boyle 650410cb2f Update to task list 2015-04-19 14:55:16 +01:00
Peter Boyle f6ab726cef Update to task list 2015-04-19 14:55:16 +01:00
Peter Boyle f64d39ab57 Split all OMP directives into lattice subdir for easy maintainance of
parallelism and future OMP 4.0 offload.
2015-04-18 22:17:01 +01:00
Peter Boyle 5483ed641e Split all OMP directives into lattice subdir for easy maintainance of
parallelism and future OMP 4.0 offload.
2015-04-18 22:17:01 +01:00
Peter Boyle 4e1a3aee82 Update 2015-04-18 22:16:31 +01:00
Peter Boyle d929f88421 Update 2015-04-18 22:16:31 +01:00
Peter Boyle 1556c2ba3f Finishing the reorg 2015-04-18 21:24:10 +01:00
Peter Boyle 6bd11d920a Finishing the reorg 2015-04-18 21:24:10 +01:00
Peter Boyle 62fec04419 Reorganisation 2015-04-18 21:23:32 +01:00
Peter Boyle 8ddfa7e6b0 Reorganisation 2015-04-18 21:23:32 +01:00
Peter Boyle aee6669d0b Build reorg with which I am a bit happier 2015-04-18 21:22:50 +01:00
Peter Boyle e5a25dfcb1 Build reorg with which I am a bit happier 2015-04-18 21:22:50 +01:00
Peter Boyle a17ce0695b Clean up 2015-04-18 20:52:40 +01:00
Peter Boyle c94b7cc43c Clean up 2015-04-18 20:52:40 +01:00
Peter Boyle e6ec92d0e4 More files, shorter each. 2015-04-18 20:45:00 +01:00
Peter Boyle 25a8266638 More files, shorter each. 2015-04-18 20:45:00 +01:00
Peter Boyle d964d01d6a Shrinking and organising the files 2015-04-18 20:44:19 +01:00
Peter Boyle 6eae2c1083 Shrinking and organising the files 2015-04-18 20:44:19 +01:00
Peter Boyle 0fce523792 Split up into multiple files 2015-04-18 18:54:30 +01:00
Peter Boyle 354347ce91 Split up into multiple files 2015-04-18 18:54:30 +01:00
Peter Boyle 520af214af splitting into smaller, multiple files for readability and easy find. 2015-04-18 18:47:43 +01:00
Peter Boyle 2eb5ab26bf splitting into smaller, multiple files for readability and easy find. 2015-04-18 18:47:43 +01:00
Peter Boyle 62ee8e1cb3 Cleanup 2015-04-18 18:37:56 +01:00
Peter Boyle af72ade26a Cleanup 2015-04-18 18:37:56 +01:00
Peter Boyle 3931ad65c8 Reorg 2015-04-18 18:37:22 +01:00
Peter Boyle e7661d3b12 Reorg 2015-04-18 18:37:22 +01:00
Peter Boyle 8195d302dc Reorganise to keep files smaller 2015-04-18 18:36:48 +01:00
Peter Boyle cffad66894 Reorganise to keep files smaller 2015-04-18 18:36:48 +01:00
Peter Boyle f7d80aac7f Rename 2015-04-18 17:10:45 +01:00
Peter Boyle df9056eb4b Rename 2015-04-18 17:10:45 +01:00
Peter Boyle 08f20da103 Clean up caps. 2015-04-18 17:09:48 +01:00
Peter Boyle 2ee9322a8f Clean up caps. 2015-04-18 17:09:48 +01:00
Peter Boyle 2c9e5aa054 Clean up capitalisation 2015-04-18 17:09:24 +01:00
Peter Boyle b0ce9e3934 Clean up capitalisation 2015-04-18 17:09:24 +01:00
Peter Boyle ac181abc95 Rename 2015-04-18 17:07:37 +01:00
Peter Boyle 5e9a82b72b Rename 2015-04-18 17:07:37 +01:00
Peter Boyle 18a885d195 Renaming 2015-04-18 17:07:09 +01:00
Peter Boyle b5356935e9 Renaming 2015-04-18 17:07:09 +01:00
Peter Boyle 1674f899e0 Cleaing up 2015-04-18 16:42:47 +01:00
Peter Boyle eb0925d702 Cleaing up 2015-04-18 16:42:47 +01:00
Peter Boyle f678be5f94 Shaken out the peekIndex support.
Hardwire constants "SpinIndex, ColourIndex" and LorentzIndex in Grid_QCD.h
2015-04-18 16:17:41 +01:00
Peter Boyle b47d33c4f1 Shaken out the peekIndex support.
Hardwire constants "SpinIndex, ColourIndex" and LorentzIndex in Grid_QCD.h
2015-04-18 16:17:41 +01:00
Peter Boyle 388b735fd0 Build reorg 2015-04-18 14:56:05 +01:00
Peter Boyle 26148c3323 Build reorg 2015-04-18 14:56:05 +01:00
Peter Boyle 3e3df092bb Reorg of build structure 2015-04-18 14:55:00 +01:00
Peter Boyle c656164015 Reorg of build structure 2015-04-18 14:55:00 +01:00
Peter Boyle e25f10566c peekIndex update 2015-04-18 14:36:01 +01:00
Peter Boyle 57586c8e05 peekIndex update 2015-04-18 14:36:01 +01:00
Peter Boyle 5d1b866e7a typo 2015-04-18 12:40:55 +01:00
Peter Boyle d6c02e72d6 typo 2015-04-18 12:40:55 +01:00
paboyle 56b3631187 Update README.md 2015-04-18 12:21:37 +01:00
paboyle d4aa37112d Update README.md 2015-04-18 12:21:37 +01:00
Peter Boyle 1408a3c0f9 Got traceIndex, transposeIndex fully working.
Need to think about peekIndex interface and () based indexing.
2015-04-18 12:17:13 +01:00
Peter Boyle 81367eaa12 Got traceIndex, transposeIndex fully working.
Need to think about peekIndex interface and () based indexing.
2015-04-18 12:17:13 +01:00
Peter Boyle 3b9110b5db SSE flag changed 2015-04-16 17:22:52 +01:00
Peter Boyle 23df6cf18e SSE flag changed 2015-04-16 17:22:52 +01:00
Peter Boyle 6b04dd4a5d Better code 2015-04-16 15:20:19 +01:00
Peter Boyle 3e41cfecf1 Better code 2015-04-16 15:20:19 +01:00
Peter Boyle 1972eea128 spin trace type work 2015-04-16 14:48:21 +01:00
Peter Boyle 5aac6dc85b spin trace type work 2015-04-16 14:48:21 +01:00
Peter Boyle 933c54d9c4 Improving the trace support to support any index tracing and simplifying
implmentation in some ways
2015-04-16 14:47:28 +01:00
Peter Boyle 6d71ff98e5 Improving the trace support to support any index tracing and simplifying
implmentation in some ways
2015-04-16 14:47:28 +01:00
Peter Boyle fddb904b4c Typo in capital 2015-04-15 12:03:38 +01:00
Peter Boyle 3cb04f555d Typo in capital 2015-04-15 12:03:38 +01:00
Peter Boyle cab7ef9bc2 Some bug fixes 2015-04-14 23:20:16 +01:00
Peter Boyle b59553bd65 Some bug fixes 2015-04-14 23:20:16 +01:00
Peter Boyle ab9a764bb1 Reduce now going through MPI. 2015-04-14 22:40:40 +01:00
Peter Boyle 94f9e781f4 Reduce now going through MPI. 2015-04-14 22:40:40 +01:00
Peter Boyle f1876b7e95 Modified 2015-04-14 20:25:51 +01:00
Peter Boyle 2ae42c40a8 Modified 2015-04-14 20:25:51 +01:00
Peter Boyle 2d54ef2a52 Stencil code pretty much shaken out.
Beginning of inner product and norm2.
2015-04-14 20:22:04 +01:00
Peter Boyle 1eee664092 Stencil code pretty much shaken out.
Beginning of inner product and norm2.
2015-04-14 20:22:04 +01:00
Peter Boyle 977c7721d5 where switched back on 2015-04-10 05:54:02 +02:00
Peter Boyle eb2dd37e3c where switched back on 2015-04-10 05:54:02 +02:00
Peter Boyle 5267658748 Fixing the comms=none compile 2015-04-10 05:53:09 +02:00
Peter Boyle 69d578478a Fixing the comms=none compile 2015-04-10 05:53:09 +02:00
Peter Boyle 6e90038bf6 Fixing nocompile 2015-04-10 05:24:01 +02:00
Peter Boyle d9a454bc9f Fixing nocompile 2015-04-10 05:24:01 +02:00
Peter Boyle 993419d9fb MPI exposed incorrectly in main 2015-04-10 05:22:36 +02:00
Peter Boyle 516bc0c666 MPI exposed incorrectly in main 2015-04-10 05:22:36 +02:00
Peter Boyle 927c62d8a3 Patch for comms none nocompile 2015-04-10 05:21:48 +02:00
Peter Boyle f373517d2e Patch for comms none nocompile 2015-04-10 05:21:48 +02:00
Peter Boyle 31f4f4f1e1 "where" and integer comparisons logic implemented for conditional
assignment. LatticeCoordinate helper to get global (reduced) coordinate.

Some more work of similar type perhaps needed, but the bulk of the required
structure for masked array assignment is now in place.
2015-04-09 08:06:03 +02:00
Peter Boyle 8f5281563e "where" and integer comparisons logic implemented for conditional
assignment. LatticeCoordinate helper to get global (reduced) coordinate.

Some more work of similar type perhaps needed, but the bulk of the required
structure for masked array assignment is now in place.
2015-04-09 08:06:03 +02:00
Peter Boyle 81d5eabf6c Remove stub files 2015-04-06 11:29:55 +01:00
Peter Boyle 4666acfbb0 Remove stub files 2015-04-06 11:29:55 +01:00
Peter Boyle ce6a3a8ed4 Some popular configure commands 2015-04-06 11:28:00 +01:00
Peter Boyle 4cd678ddb4 Some popular configure commands 2015-04-06 11:28:00 +01:00
Peter Boyle 982274e5a0 Major rework of extract/merge/permute processing debugged and working. 2015-04-06 11:26:24 +01:00
Peter Boyle 48a38ef4fd Major rework of extract/merge/permute processing debugged and working. 2015-04-06 11:26:24 +01:00
Peter Boyle 9e597ac50a Removing older file 2015-04-06 09:27:17 +01:00
Peter Boyle 57cd8d87f5 Removing older file 2015-04-06 09:27:17 +01:00
Peter Boyle 02262b0019 Bringing in LatticeInteger with the idea of implemented predicated
assignment, subsets etc.
c.f the QDP++ "where" syntax
2015-04-06 06:30:48 +01:00
Peter Boyle e06a11ee5e Bringing in LatticeInteger with the idea of implemented predicated
assignment, subsets etc.
c.f the QDP++ "where" syntax
2015-04-06 06:30:48 +01:00
Peter Boyle ad31cd0c23 Clean up but no major changes 2015-04-03 22:54:13 +01:00
Peter Boyle d5eee231e0 Clean up but no major changes 2015-04-03 22:54:13 +01:00
Peter Boyle 15dda435e6 TODO list for preparing this for real use and QDP++ replacement. 2015-04-03 09:28:58 +01:00
Peter Boyle d081715504 TODO list for preparing this for real use and QDP++ replacement. 2015-04-03 09:28:58 +01:00
Peter Boyle 0c1f8b70e9 Reorg 2015-04-03 05:51:05 +01:00
Peter Boyle d066450a24 Reorg 2015-04-03 05:51:05 +01:00
Peter Boyle 18b26a7a70 MPI added 2015-04-03 05:34:51 +01:00
Peter Boyle b47314f726 MPI added 2015-04-03 05:34:51 +01:00
Peter Boyle d29733069f Patch 2015-04-03 05:33:13 +01:00
Peter Boyle 2de009d994 Patch 2015-04-03 05:33:13 +01:00
Peter Boyle 48581e8e8b Merge branch 'master' of https://github.com/paboyle/Grid 2015-04-03 05:32:12 +01:00
Peter Boyle cebf90195c Merge branch 'master' of https://github.com/paboyle/Grid 2015-04-03 05:32:12 +01:00
Peter Boyle 154a8700f4 Removing the Xcode project 2015-04-03 05:30:58 +01:00
Peter Boyle cc21f0a709 Removing the Xcode project 2015-04-03 05:30:58 +01:00
Peter Boyle 0c5c974e6d Renamed the namespace to Grid 2015-04-03 05:29:54 +01:00
Peter Boyle d198fcbc1c Renamed the namespace to Grid 2015-04-03 05:29:54 +01:00
Peter Boyle 06843d4574 Rename some files to make naming consistent 2015-04-03 04:58:03 +01:00
Peter Boyle c86f79c4be Rename some files to make naming consistent 2015-04-03 04:58:03 +01:00
Peter Boyle 7b97e50b7b MPI is now working and passing basic tests. Will start to construct a more sensible test suite shortly
since testing requirements now go beyond what a single Grid_main.cc can do.

Will need a more organised src tree for this and will require substantial reorg of build system.
2015-04-03 04:52:53 +01:00
Peter Boyle 9ba89e64dc MPI is now working and passing basic tests. Will start to construct a more sensible test suite shortly
since testing requirements now go beyond what a single Grid_main.cc can do.

Will need a more organised src tree for this and will require substantial reorg of build system.
2015-04-03 04:52:53 +01:00
azusayamaguchi 19372bf5ca COnfig file 2015-03-29 22:16:13 +01:00
azusayamaguchi 98be168396 COnfig file 2015-03-29 22:16:13 +01:00
Peter Boyle 19b9069453 Merge branch 'master' of https://github.com/paboyle/Grid 2015-03-29 22:05:16 +01:00
Peter Boyle 1a9d4d3655 Merge branch 'master' of https://github.com/paboyle/Grid 2015-03-29 22:05:16 +01:00
Peter Boyle e0af0e658d Commit 2015-03-29 22:04:49 +01:00
Peter Boyle 73aaec2df8 Commit 2015-03-29 22:04:49 +01:00
azusayamaguchi 4f57ccc66c No compile fix 2015-03-29 21:50:20 +01:00
azusayamaguchi d46e6adb8f No compile fix 2015-03-29 21:50:20 +01:00
Peter Boyle 9bea4e25ee Make file and configure 2015-03-29 21:44:22 +01:00
Peter Boyle 7f1af07fb3 Make file and configure 2015-03-29 21:44:22 +01:00
Peter Boyle 5560a84705 Merge branch 'master' of https://github.com/paboyle/Grid 2015-03-29 21:38:53 +01:00
Peter Boyle 8801c59cce Merge branch 'master' of https://github.com/paboyle/Grid 2015-03-29 21:38:53 +01:00
Peter Boyle 196fd203e2 Fixing the Checkerboarding cshift.
Implemented "fake" communications in preparation for the leap to MPI.
2015-03-29 20:35:37 +01:00
Peter Boyle 98f14f1030 Fixing the Checkerboarding cshift.
Implemented "fake" communications in preparation for the leap to MPI.
2015-03-29 20:35:37 +01:00
paboyle 886df6ed1e Update README.md 2015-03-07 07:20:12 +00:00
paboyle af0220a046 Update README.md 2015-03-07 07:20:12 +00:00
paboyle f04b6312c8 Update README 2015-03-07 07:19:01 +00:00
paboyle aef11025aa Update README 2015-03-07 07:19:01 +00:00
paboyle 1e08841fa5 Update INSTALL 2015-03-07 07:09:09 +00:00
paboyle 37a3b39a61 Update INSTALL 2015-03-07 07:09:09 +00:00
paboyle 483cab34ab Update AUTHORS 2015-03-07 07:00:39 +00:00
paboyle dd36baf3ce Update AUTHORS 2015-03-07 07:00:39 +00:00
Peter Boyle 82eeb9d07e Improving 2015-03-04 13:44:33 +00:00
Peter Boyle 613706dca2 Improving 2015-03-04 13:44:33 +00:00
Peter Boyle d9054f67fd remove 2015-03-04 13:43:48 +00:00
Peter Boyle e6e396b3f7 remove 2015-03-04 13:43:48 +00:00
Peter Boyle a8238d0b25 Move to better name 2015-03-04 13:43:19 +00:00
Peter Boyle b234865d77 Move to better name 2015-03-04 13:43:19 +00:00
Azusa Yamaguchi 4e8b9c6928 Changes for MIC 2015-03-04 13:25:23 +00:00
Azusa Yamaguchi 83f0dc19ff Changes for MIC 2015-03-04 13:25:23 +00:00
Peter Boyle 59eff71fc5 Extra files 2015-03-04 12:03:07 +00:00
Peter Boyle 2734107d5c Extra files 2015-03-04 12:03:07 +00:00
Peter Boyle d4a93ec7b4 missing 2015-03-04 11:58:45 +00:00
Peter Boyle b16e70dabc missing 2015-03-04 11:58:45 +00:00
Peter Boyle 96260b60b0 files 2015-03-04 11:57:14 +00:00
Peter Boyle a0b1e3afc9 files 2015-03-04 11:57:14 +00:00
Peter Boyle 63c7eb262e file 2015-03-04 11:55:44 +00:00
Peter Boyle 3ffaedce8e file 2015-03-04 11:55:44 +00:00
Peter Boyle 110ddd1900 install-sh distro 2015-03-04 11:54:46 +00:00
Peter Boyle e6df221165 install-sh distro 2015-03-04 11:54:46 +00:00
Peter Boyle 523abad40f Place them in to avoid forced autoreconf on user 2015-03-04 11:53:59 +00:00
Peter Boyle 3901b7d77a Place them in to avoid forced autoreconf on user 2015-03-04 11:53:59 +00:00
Peter Boyle d9cff588c5 Better openMP for Cshift 2015-03-04 11:50:59 +00:00
Peter Boyle 808066fdf1 Better openMP for Cshift 2015-03-04 11:50:59 +00:00
Peter Boyle 9e200b9d7a Merge branch 'master' of https://github.com/paboyle/Grid 2015-03-04 11:44:18 +00:00
Peter Boyle 3530000ea6 Merge branch 'master' of https://github.com/paboyle/Grid 2015-03-04 11:44:18 +00:00
Peter Boyle 09582509e5 Improving benchmark to include Cshift 2015-03-04 11:44:05 +00:00
Peter Boyle b01fa51db0 Improving benchmark to include Cshift 2015-03-04 11:44:05 +00:00
Azusa Yamaguchi eb15a8dacb AVX2 fix 2015-03-04 11:38:10 +00:00
Azusa Yamaguchi d7f1aa522e AVX2 fix 2015-03-04 11:38:10 +00:00
Peter Boyle 5aefa56e5c Better organisation 2015-03-04 05:34:15 +00:00
Peter Boyle 4ba6d36ad6 Better organisation 2015-03-04 05:34:15 +00:00
Peter Boyle b1cb3f255d Update organisation 2015-03-04 05:33:26 +00:00
Peter Boyle 0021b72da9 Update organisation 2015-03-04 05:33:26 +00:00
Peter Boyle 1a1474b323 Better organisation 2015-03-04 05:31:44 +00:00
Peter Boyle fdb886fe1a Better organisation 2015-03-04 05:31:44 +00:00
Peter Boyle ad1b9b6ccf Cleaning
Merge branch 'master' of https://github.com/paboyle/Grid
2015-03-04 05:12:51 +00:00
Peter Boyle 3916caf7c4 Cleaning
Merge branch 'master' of https://github.com/paboyle/Grid
2015-03-04 05:12:51 +00:00
Peter Boyle b7e2881014 Better organisation 2015-03-04 05:12:19 +00:00
paboyle b0c9282fe9 Delete COPYING 2015-03-04 04:55:04 +00:00
paboyle 3cb295ece1 Delete COPYING 2015-03-04 04:55:04 +00:00
paboyle c802a03e07 Delete INSTALL 2015-03-04 04:54:50 +00:00
paboyle 46b66c933e Delete INSTALL 2015-03-04 04:54:50 +00:00
Peter Boyle c80c881db0 Updating build system 2015-03-04 04:53:40 +00:00
Peter Boyle 74f28edbe5 Build progressing 2015-03-04 04:34:51 +00:00
Peter Boyle 3c5f08a1d6 Build system progressing 2015-03-04 04:13:07 +00:00
Peter Boyle 523e3bd8d5 Autoconf starting 2015-03-04 03:42:59 +00:00
Peter Boyle 8b17cbf9d7 Initial commit of Grid to GitHub 2015-03-04 03:12:19 +00:00
paboyle 8144438023 Initial commit 2015-03-04 02:30:11 +00:00
769 changed files with 73127 additions and 25131 deletions
+100 -6
View File
@@ -1,8 +1,102 @@
# Exclude directories
_site
.sass-cache
.jekyll-metadata
pdf
# Compiled Object files #
#########################
*.slo
*.lo
*.o
*.obj
# Exclude backup files
# Editor files #
################
*~
*#
# Precompiled Headers #
#######################
*.gch
*.pch
# Compiled Dynamic libraries #
##############################
*.so
*.dylib
*.dll
# Fortran module files #
########################
*.mod
# Compiled Static libraries #
#############################
*.lai
*.la
*.a
*.lib
# Executables #
###############
*.exe
*.out
*.app
# http://www.gnu.org/software/automake #
########################################
Makefile.in
Makefile
Config.h
Config.h.in
config.log
config.status
.deps
# http://www.gnu.org/software/autoconf #
########################################
autom4te.cache
aclocal.m4
compile
configure
depcomp
install-sh
missing
stamp-h1
config.sub
config.guess
INSTALL
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# build directory #
###################
build/*
# IDE related files #
#####################
*.xcodeproj/*
build.sh
+5
View File
@@ -0,0 +1,5 @@
Peter Boyle
Azusa Yamaguchi
Intel Parallel Computing Centre @ Higgs Centre for Theoretical Physics
University of Edinburgh
Scotland, UK
-571
View File
@@ -1,571 +0,0 @@
## [3.4.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.8)
### Enhancements
- Improve type readability for larger viewports by bumping up base `font-size`. [#533](https://github.com/mmistakes/minimal-mistakes/issues/533)
- Update Portuguese localized UI text. [#541](https://github.com/mmistakes/minimal-mistakes/pull/541)
- Add `page.title` and via parameter to Twitter share link. [#538](https://github.com/mmistakes/minimal-mistakes/pull/538)
### Bug Fixes
- Fix Last.fm author profile URL. [#540](https://github.com/mmistakes/minimal-mistakes/pull/540)
### Maintenance
- Move Brazilian Portuguese localized text under `pt-BR` key.
## [3.4.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.7)
### Enhancements
- Add `layout` based and user-defined class names to `<body>` element for added CSS hooks. [#526](https://github.com/mmistakes/minimal-mistakes/pull/526)
- Add simplified Chinese localized UI text. [#532](https://github.com/mmistakes/minimal-mistakes/pull/532)
### Bug Fixes
- Remove duplicate include of `base_path` in category-list.html [#522](https://github.com/mmistakes/minimal-mistakes/pull/522)
## [3.4.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.6)
### Enhancements
- Add Italian "comments" related localized UI text. [#514](https://github.com/mmistakes/minimal-mistakes/pull/514)
### Bug Fixes
- Disable `compress` HTML layout by default. To enable add `layout: compress` to `_layouts/default.html`.
## [3.4.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.5)
### Enhancements
- Improve line numbered code block styling when using `{% highlight linenos %}` tag. [#513](https://github.com/mmistakes/minimal-mistakes/issues/513)
- Add English fallback to "Follow" button label. [#496](https://github.com/mmistakes/minimal-mistakes/pull/496)
### Bug Fixes
- Fix Firefox alignment issues with code blocks generated with the `{% highlight %}` tag. [#512](https://github.com/mmistakes/minimal-mistakes/issues/512)
### Maintenance
- Clarified comment for `author.stackoverflow` value used in author sidebar links. [#487](https://github.com/mmistakes/minimal-mistakes/pull/487)
- Add list of localized text strings. [#488](https://github.com/mmistakes/minimal-mistakes/pull/488)
- Add `{% highlight %}` code block examples to demo site.
- Add documentation for using custom sidebar navigation menus. [#476](https://github.com/mmistakes/minimal-mistakes/issues/476)
## [3.4.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.4)
### Enhancements
- Add French "comments" related localized UI text. [#472](https://github.com/mmistakes/minimal-mistakes/pull/472)
### Bug Fixes
- Exclude `vendor` in Jekyll config file.
- Fix Liquid syntax error for offending parenthesis. [#479](https://github.com/mmistakes/minimal-mistakes/issues/479)
### Maintenance
- Update gems: `colorator` (1.1.0), `forwardable-extended` (2.6.0), `github-pages` (93), `jekyll` (= 3.2.1), `minima` (= 1.0.1).
## [3.4.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.3)
### Enhancements
- Make ["honeypot" `input`](https://github.com/mmistakes/minimal-mistakes/commit/06a8249a69a37dddda7e2a5bfbe32056c1a9a607) in Staticman comment form less obvious to spam bots
- Add padding to `.highlight` code blocks to better [align `overflow` scrollbar](https://github.com/mmistakes/minimal-mistakes/commit/e4abec0a6f7f8cff72505ca0754615df294fd5b3) to the bottom.
- Add additional image options for Twitter card social sharing meta tags. [#466](https://github.com/mmistakes/minimal-mistakes/pull/466)
- Add structured data markup for Staticman comments. [#458](https://github.com/mmistakes/minimal-mistakes/issues/458)
### Bug Fixes
- Format `og:locale` tag with `_` instead of `-`. [#462](https://github.com/mmistakes/minimal-mistakes/issues/462)
### Maintenance
- Add note to docs about using `url: http://localhost:4000` when working locally.
## [3.4.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.2)
### Enhancements
- Improve UX of static comment forms. [#448](https://github.com/mmistakes/minimal-mistakes/issues/448)
## [3.4.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.1)
### Enhancements
- Add `staticman.filename` configuration with UNIX timestamp for sorting data files. example ~> `comment-1470943149`.
### Bug Fixes
- Don't add `<a>` to author name if URL is blank.
## [3.4.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.4.0)
### Enhancements
- Support static-based commenting via [Staticman](https://staticman.net/) for sites hosted with GitHub Pages. [#424](https://github.com/mmistakes/minimal-mistakes/issues/424)
## [3.3.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.7)
### Bug Fixes
- Re-enabled Jekyll plugins in `_config.yml` in case they aren't autoloaded in `Gemfile`. [#417](https://github.com/mmistakes/minimal-mistakes/issues/417)
### Enhancements
- Fallback to `site.github.url` for use in `{{ base_path }}` when `site.url` is `nil`.
- Replace Sass and Autoprefixer `npm` build scripts with [Jekyll's built-in asset support](https://jekyllrb.com/docs/assets/). [#333](https://github.com/mmistakes/minimal-mistakes/issues/333)
### Maintenance
- Document `site.repository` and its role with [`github-metadata`](https://github.com/jekyll/github-metadata) gem.
- Add sample [archive page with content](https://mmistakes.github.io/minimal-mistakes/archive-layout-with-content/) for testing styles on demo site.
## [3.3.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.6)
### Bug Fixes
- Fix blank `site.teaser` bug. [#412](https://github.com/mmistakes/minimal-mistakes/issues/412)
## [3.3.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.5)
### Enhancements
- Add English default text `site.locale` strings. [#407](https://github.com/mmistakes/minimal-mistakes/issues/407)
- Add Portuguese localized UI text. [#411](https://github.com/mmistakes/minimal-mistakes/pull/411)
- Add Italian localized UI text. [#409](https://github.com/mmistakes/minimal-mistakes/pull/409)
### Maintenance
- Remove unused Google AdSense variables in `_config.yml`. [#404](https://github.com/mmistakes/minimal-mistakes/issues/404)
- Update `Gemfile` instructions for using `github-pages` vs. native `jekyll` gems.
- Disable `gems:` in `_config.yml` and enable plugins with Bundler instead.
- Add `repository` to `_config.yml` to suppress GitHub Pages error `Liquid Exception: No repo name found.`
## [3.3.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.4)
### Enhancements
- Add support for configurable feed URL to use a service like FeedBurner instead of linking directly to `feed.xml` in `<head>` and the site footer. [#378](https://github.com/mmistakes/minimal-mistakes/issues/378), [#379](https://github.com/mmistakes/minimal-mistakes/pull/379), [#406](https://github.com/mmistakes/minimal-mistakes/pull/406)
- Add Turkish localized UI text. [#403](https://github.com/mmistakes/minimal-mistakes/pull/403)
### Maintenance
- Update gems: `activesupport` (4.2.7), `ffi` (1.9.14), `github-pages` (88), `jekyll-redirect-from` (0.11.0), `jekyll-watch` (1.5.0).
## [3.3.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.3)
### Enhancements
- Make footer stick to the bottom of the page.
### Bug Fixes
- Fix `gallery` size bug [#402](https://github.com/mmistakes/minimal-mistakes/issues/402)
### Maintenance
- Set default `lang` to `en`.
## [3.3.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.2)
### Bug Fixes
- Fix JavaScript that triggers "sticky" sidebar to avoid layout issues on screen sizes < `1024px`. [#396](https://github.com/mmistakes/minimal-mistakes/issues/396)
## [3.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.3.1)
### Enhancements
- Enable image popup on < 500px wide screens. [#385](https://github.com/mmistakes/minimal-mistakes/issues/385)
- Indicate the relationship between component URLs in a paginated series by applying `rel="prev"` and `rel="next"` to pages that use `site.paginator`. [#253](https://github.com/mmistakes/minimal-mistakes/issues/253)
- Improve link posts in archive listings. [#276](https://github.com/mmistakes/minimal-mistakes/issues/276)
### Maintenance
- Update gems: `github-pages` (86), `ffi` 1.9.13, `jekyll-mentions` 1.1.3, and `rouge` 1.11.1
- Fix note about custom sidebar content appearing below author profile. [#388](https://github.com/mmistakes/minimal-mistakes/issues/388)
## [3.2.13](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.13)
### Enhancements
- Add English default UI text for Canada, Great Britain, and Australia. [#377](https://github.com/mmistakes/minimal-mistakes/issues/377)
- Switch default locale from `en-US` to `en`.
## [3.2.12](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.12)
### Enhancements
- Remove window width "magic number" from sticky sidebar check in `main.js` for improved flexibility. [#375](https://github.com/mmistakes/minimal-mistakes/pull/375)
### Bug Fixes
- Fix author override conditional where a missing `authors.yml` would show broken sidebar content. Defaults to `site.author`. [#376](https://github.com/mmistakes/minimal-mistakes/pull/376)
## [3.2.11](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.11)
### Bug Fixes
- Fix disappearing author sidebar links [#372](https://github.com/mmistakes/minimal-mistakes/issues/372)
### Maintenance
- Update gems: `github-pages` (84), `jekyll-github-metadata` 2.0.2, and `kramdown` 1.11.1
- Update vendor JavaScript: jQuery 1.12.4, Stickyfill.js 1.1.4
- Update Font Awesome 4.6.3
## [3.2.10](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.10)
### Maintenance
- Add `CONTRIBUTING.md`
## [3.2.9](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.9)
### Enhancements
- Add support for [header overlay images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#header-overlay) for Open Graph images. [#358](https://github.com/mmistakes/minimal-mistakes/pull/358)
### Bug Fixes
- Fix `Person` typo Schema.org type [#358](https://github.com/mmistakes/minimal-mistakes/pull/358)
### Maintenance
- Update `github-pages` gem and dependencies.
- Remove `minutes_read` to avoid awkward reading time wording [#356](https://github.com/mmistakes/minimal-mistakes/issues/356)
## [3.2.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.8)
### Bug Fixes
- Remove `cursor: pointer` that appears on white-space surrounding author side list items and links. [#354](https://github.com/mmistakes/minimal-mistakes/pull/354)
### Maintenance
- Add contributing information to `README.md`. [#357](https://github.com/mmistakes/minimal-mistakes/issues/357)
## [3.2.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.7)
### Enhancements
- Add French localized UI text. [#346](https://github.com/mmistakes/minimal-mistakes/pull/346)
### Bug Fixes
- Fix branch logic for Yandex and Alexa in `seo.html`. [#348](https://github.com/mmistakes/minimal-mistakes/pull/348)
## [3.2.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.6)
### Bug Fixes
- Fix error `Liquid Exception: divided by 0 in _includes/archive-single.html, included in _layouts/single.html` caused by null `words_per_minute` in `_config.yml`. [#345](https://github.com/mmistakes/minimal-mistakes/pull/345)
## [3.2.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.5)
### Bug Fixes
- Fix link color in hero overlay to be white.
- Remove underlines from archive item titles.
## [3.2.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.4)
### Enhancements
- Improve text alignment of masthead, hero overlay, page footer to be flush left and remove awkward white-space gaps. [#342](https://github.com/mmistakes/minimal-mistakes/issues/342)
- Add Spanish localized UI text. [#338](https://github.com/mmistakes/minimal-mistakes/pull/338)
### Bug Fixes
- Fix alignment of icons in author sidebar [#341](https://github.com/mmistakes/minimal-mistakes/issues/341)
### Maintenance
- Add background color to page footer to set it apart from main content. [#342](https://github.com/mmistakes/minimal-mistakes/issues/342)
- Add terms and privacy policy to theme's demo site. [#343](https://github.com/mmistakes/minimal-mistakes/issues/343)
- Update screenshots found in theme documentation.
## [3.2.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.3)
### Enhancements
- Add [Discourse](https://www.discourse.org/) as a commenting provider. [#335](https://github.com/mmistakes/minimal-mistakes/pull/335)
## [3.2.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.2)
### Enhancements
- Add support for image captions in Magnific Popup overlays via the [`gallery`](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery) helper. [#334](https://github.com/mmistakes/minimal-mistakes/issues/334)
## [3.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.1)
### Bug Fixes
- Remove need for "double tapping" masthead menu links on iOS devices. [#315](https://github.com/mmistakes/minimal-mistakes/issues/315)
### Maintenance
- Add `ISSUE_TEMPLATE.md` for improve issue submission process.
## [3.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.2.0)
### Bug Fixes
- Fix missing category/tag links in post footer due to possible conflict with `site.tags` and `site.categories`. [#329](https://github.com/mmistakes/minimal-mistakes/issues/329#issuecomment-222375568)
## [3.1.8](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.8)
### Bug Fixes
- Fix `Liquid Exception: undefined method 'gsub' for nil:NilClass in _layouts/single.html` error when `page.title` is null. `<h1>` element is now conditional if `title: ` is not set for a `page` or collection item. [#312](https://github.com/mmistakes/minimal-mistakes/issues/312)
### Maintenance
- Remove duplicate `fa-twitter` and `fa-twitter-square` classes from `_utilities.scss`. [#302](https://github.com/mmistakes/minimal-mistakes/issues/302)
- Document installing additional Jekyll gem dependencies when using `gem "jekyll"` instead of `gem "github-pages"` to avoid any errors on run. [#305](https://github.com/mmistakes/minimal-mistakes/issues/305)
## [3.1.7](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.7)
### Enhancements
- Add translation key for "Recent Posts" used in home page `index.html`. [#316](https://github.com/mmistakes/minimal-mistakes/pull/316)
### Maintenance
- Small fix to avoid underlying the whitespace between icons and related text when hovering. [#303](https://github.com/mmistakes/minimal-mistakes/pull/303)
## [3.1.6](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.6)
### Maintenance
- Update gem dependencies. Run `bundle` to update `Gemfile.lock`.
## [3.1.5](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.5)
### Maintenance
- Fix `www` and `https` links in author profile include [#293](https://github.com/mmistakes/minimal-mistakes/pull/293)
## [3.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.4)
### Enhancements
- Add overlay_filter param to hero headers [#298](https://github.com/mmistakes/minimal-mistakes/pull/298)
## [3.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.3)
### Enhancements
- Improve `site.locale` documentation [#284](https://github.com/mmistakes/minimal-mistakes/issues/284)
- Remove ProTip note about protocol-less `site.url` as it is an anti-pattern [#288](https://github.com/mmistakes/minimal-mistakes/issues/288)
### Bug Fixes
- Fix `og_image` URL in seo.html [#277](https://github.com/mmistakes/minimal-mistakes/issues/277)
- Fix `author_profile` toggle when assigned in a `_layout` [#285](https://github.com/mmistakes/minimal-mistakes/issues/285)
- Fix typo in `build:all` npm script [#283](https://github.com/mmistakes/minimal-mistakes/pull/283)
- Fix URL typo documentation [#287](https://github.com/mmistakes/minimal-mistakes/issues/287)
- SEO author bug. If `twitter.username` is set and `author.twitter` is `nil` bad things happen. [#289](https://github.com/mmistakes/minimal-mistakes/issues/289)
## [3.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.2)
### Enhancements
- Explain how to use `nav_list` helper in [documentation](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list).
- Reduce left/right padding on smaller screens to increase width of main content column.
### Bug Fixes
- Fix alignment issues with related posts [#273](https://github.com/mmistakes/minimal-mistakes/issues/273) and "Follow" button in author profile [#274](https://github.com/mmistakes/minimal-mistakes/issues/274).
## [3.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.1)
### Bug Fix
- Fixed reading time bug when `words_per_minute` wasn't set in `_config.yml` [#271](https://github.com/mmistakes/minimal-mistakes/issues/271)
## [3.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.1.0)
### Enhancements
- Updated [Font Awesome](https://fortawesome.github.io/Font-Awesome/whats-new/) to version 4.6.1
- Added optional GitHub and Bitbucket links to footer if set on `site.author` in `_config.yml`.
### Bug Fixes
- Fixed Bitbucket URL typo in author sidebar.
## [3.0.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/3.0.3)
### Enhancements
- Rebuilt the entire theme: layouts, includes, stylesheets, scripts, you name it.
- Refreshed the look and feel while staying true to the original design of the theme (author sidebar/main content).
- Replaced grid system with [Susy](http://susy.oddbird.net/).
- Replaced Grunt tasks with `npm` scripts.
- Removed Google Fonts and replaced with system fonts to improve performance (they can be [added back](https://mmistakes.github.io/minimal-mistakes/docs/stylesheets/) if desired)
- Greatly improved [theme documentation](https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/).
- Increased the amount of sample posts, sample pages, and sample collections to throughly test the theme and edge-cases.
- Moved all sample content and assets out of `master` to keep it as clean as possible for forking.
- Added new layouts for `splash` pages, archives for [`jekyll-archives`](https://github.com/jekyll/jekyll-archives) if enabled, and [`compress.html`](https://github.com/penibelst/jekyll-compress-html) to improve performance.
- Added taxonomy links to posts (tags and categories).
- Added optional "reading time" meta data.
- Improved Liquid used for Twitter Cards and Open Graph data in `<head>`.
- Improved `gallery` include helper and added `feature_row` for use with splash page layout.
- Added Keybase.io, author web URI, and Bitbucket optional links to sidebar.
- Add `feed.xml` link to footer.
- Added a [UI text data file](https://mmistakes.github.io/minimal-mistakes/docs/ui-text/) to easily change all text found in the theme.
- Added LinkedIn to optional social share buttons.
- Added Facebook, Google+, and custom commenting options in addition to Disqus.
- Added optional breadcrumb links.
## [2.2.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.1)
## [2.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.2.0)
### Enhancements
- Add support for Jekyll 3.0
- Minor updates to syntax highlighting CSS and theme documentation
## [2.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.3)
### Enhancements
- Cleaner print styles that remove the top navigation, social sharing buttons, and other elements not needed when printed.
## [2.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.2)
### Enhancements
- Add optional CodePen icon/url to author side bar [#156](https://github.com/mmistakes/minimal-mistakes/pull/156)
- Documented Stackoverflow username explanation in `_config.yml` [#157](https://github.com/mmistakes/minimal-mistakes/pull/157)
- Simplified Liquid in `post-index.html` to better handle year listings [#166](https://github.com/mmistakes/minimal-mistakes/pull/166)
### Bug Fixes
- Cleanup Facebook related Open Graph meta tags [#149](https://github.com/mmistakes/minimal-mistakes/issues/149)
- Corrected minor typos [#158](https://github.com/mmistakes/minimal-mistakes/pull/158) [#175](https://github.com/mmistakes/minimal-mistakes/issues/175)
## [2.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.1)
### Enhancements
- Add optional XING profile link to author sidebar
- Include open graph meta tags for feature image (if assigned) [#149](https://github.com/mmistakes/minimal-mistakes/issues/149)
- Create an include for feed footer
### Bug Fixes
- Remove http protocol from Google search form on sample 404 page
- Only show related posts if there are one or more available
- Fix alignment of email address link in author sidebar
## [2.1.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/2.1.0)
### Enhancements
- Add optional social sharing buttons ([#42](https://github.com/mmistakes/minimal-mistakes/issues/42))
![social sharing buttons](https://cloud.githubusercontent.com/assets/1376749/5860522/d9f28a96-a22f-11e4-9b83-940a3a9a766a.png)
- Add Soundcloud, YouTube ([#95](https://github.com/mmistakes/minimal-mistakes/pull/95)), Flickr ([#119](https://github.com/mmistakes/minimal-mistakes/pull/119)), and Weibo ([#116](https://github.com/mmistakes/minimal-mistakes/pull/116)) icons for use in author sidebar.
- Fix typos in posts and documentation and remove references to Less
- Include note about Octopress gem being optional
- Post author override support extended to the Atom feed ([#71](https://github.com/mmistakes/minimal-mistakes/pull/71))
- Only include email address in feed if specified in `_config.yml` or author `_data`
- Wrap all page content in `#main` to harmonize article and post index styles ([#86](https://github.com/mmistakes/minimal-mistakes/issues/86))
- Include new sample feature images for posts and pages
- Table of contents improvements: fix collapse toggle, indent nested elements, show on small screens, and create an `_include` for reusing in posts and pages.
- Include note about running Jekyll with `bundle exec` when using Bundler
- Fix home page path in top navigation
- Remove Google Authorship ([#120](https://github.com/mmistakes/minimal-mistakes/issues/120))
- Remove duplicate author content that displayed in `div.article-author-bottom`
- Removed unused `_sass/print.scss` styles
- Improve comments in `.scss` files
## [2.0.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/v2.0)
## [1.3.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.3.3)
### Enhancements
- Added new icons and profile links for Stackoverflow, Dribbble, Pinterest, Foursquare, and Steam to the author bio sidebar.
- Cleaned up the Kramdown auto table of contents styling to be more readable
- Removed page width specific .less stylesheets and created mixins for easier updating
- Removed Modernizr since it wasn't being used
- Added pages to sitemap.xml
- Added category: to rake new_post task
- Minor typographic changes
### Bug Fixes
- Corrected various broken links in README and Theme Setup.
## [1.3.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.3.1)
### Enhancements
- Cleaned up table of contents styling
- Reworked top navigation to be a better experience on small screens. Nav items now display vertically when the menu button is tapped, revealing links with larger touch targets.
![menu animation](https://camo.githubusercontent.com/3fbd8c1326485f4b1ab32c0005c0fca7660b5d31/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313337363734392f323136343037352f31653366303663322d393465372d313165332d383961612d6436623636376562306564662e676966)
## [1.2.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.2.0)
### Bug Fixes
- Table weren't filling the entire width of the content container. They now scale at 100%. Thanks [@dhruvbhatia](https://github.com/dhruvbhatia)
### Enhancements
- Decreased spacing between Markdown footnotes
- Removed dark background on footer
- Removed UPPERCASE styling on post titles in the index listing
## [1.1.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.4)
### Bug Fixes
- Fix top navigation bug issue ([#10](https://github.com/mmistakes/minimal-mistakes/issues/10)) for real this time. Remember to clear your floats kids.
## [1.1.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.3)
### Bug Fixes
- Fix top navigation links that weren't click able on small viewports (Issue [#10](https://github.com/mmistakes/minimal-mistakes/issues/10)).
- Remove line wrap from top navigation links that may span multiple lines.
## [1.1.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.2)
### Enhancements
- Added Grunt build script for compiling Less/JavaScript and optimizing image assets.
- Added support for large image summary Twitter card.
- Stylesheet adjustments
## [1.1.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/1.1.1)
### Bug Fixes
- Removed [Typeplate](http://typeplate.com/) styles. Was [causing issues with newer versions of Less](https://github.com/typeplate/typeplate.github.io/issues/108) and is no longer maintained.
### Enhancements
- Added [image attribution](http://mmistakes.github.io/minimal-mistakes/theme-setup/#feature-images) for post and page feature images.
- Added [404 page](http://mmistakes.github.io/minimal-mistakes/404.html).
- Cleaned up various Less variables to better align with naming conventions used in other MM Jekyll themes.
- Removed Chrome Frame references.
- Added global CSS3 transitions to text and block elements.
- Improved typography in a few places.
## [1.0.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.2)
### Enhancements
- Google Analytics, Google Authorship, webmaster verifies, and Twitter card meta are now optional.
## [1.0.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/v1.0.1)
+674
View File
@@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
View File
-27
View File
@@ -1,27 +0,0 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem "github-pages", group: :jekyll_plugins
# If you want to use Jekyll native, uncomment the line below.
# To upgrade, run `bundle update`.
# gem "jekyll"
gem "wdm", "~> 0.1.0" if Gem.win_platform?
# If you have any plugins, put them here!
group :jekyll_plugins do
# gem "jekyll-archives"
gem 'jekyll-octicons'
end
-155
View File
@@ -1,155 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (4.2.7)
i18n (~> 0.7)
json (~> 1.7, >= 1.7.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
addressable (2.4.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.10.0)
colorator (1.1.0)
ethon (0.9.1)
ffi (>= 1.3.0)
execjs (2.7.0)
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
ffi (1.9.14)
ffi (1.9.14-x64-mingw32)
forwardable-extended (2.6.0)
gemoji (2.1.0)
github-pages (104)
activesupport (= 4.2.7)
github-pages-health-check (= 1.2.0)
jekyll (= 3.3.0)
jekyll-avatar (= 0.4.2)
jekyll-coffeescript (= 1.0.1)
jekyll-feed (= 0.8.0)
jekyll-gist (= 1.4.0)
jekyll-github-metadata (= 2.2.0)
jekyll-mentions (= 1.2.0)
jekyll-paginate (= 1.1.0)
jekyll-redirect-from (= 0.11.0)
jekyll-sass-converter (= 1.3.0)
jekyll-seo-tag (= 2.1.0)
jekyll-sitemap (= 0.12.0)
jekyll-swiss (= 0.4.0)
jemoji (= 0.7.0)
kramdown (= 1.11.1)
liquid (= 3.0.6)
listen (= 3.0.6)
mercenary (~> 0.3)
minima (= 2.0.0)
rouge (= 1.11.1)
terminal-table (~> 1.4)
github-pages-health-check (1.2.0)
addressable (~> 2.3)
net-dns (~> 0.8)
octokit (~> 4.0)
public_suffix (~> 1.4)
typhoeus (~> 0.7)
html-pipeline (2.4.2)
activesupport (>= 2)
nokogiri (>= 1.4)
i18n (0.7.0)
jekyll (3.3.0)
addressable (~> 2.4)
colorator (~> 1.0)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 3.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (~> 1.7)
safe_yaml (~> 1.0)
jekyll-avatar (0.4.2)
jekyll (~> 3.0)
jekyll-coffeescript (1.0.1)
coffee-script (~> 2.2)
jekyll-feed (0.8.0)
jekyll (~> 3.3)
jekyll-gist (1.4.0)
octokit (~> 4.2)
jekyll-github-metadata (2.2.0)
jekyll (~> 3.1)
octokit (~> 4.0, != 4.4.0)
jekyll-mentions (1.2.0)
activesupport (~> 4.0)
html-pipeline (~> 2.3)
jekyll (~> 3.0)
jekyll-octicons (3.0.1)
jekyll (~> 3.1)
octicons (~> 3.0)
jekyll-paginate (1.1.0)
jekyll-redirect-from (0.11.0)
jekyll (>= 2.0)
jekyll-sass-converter (1.3.0)
sass (~> 3.2)
jekyll-seo-tag (2.1.0)
jekyll (~> 3.3)
jekyll-sitemap (0.12.0)
jekyll (~> 3.3)
jekyll-swiss (0.4.0)
jekyll-watch (1.5.0)
listen (~> 3.0, < 3.1)
jemoji (0.7.0)
activesupport (~> 4.0)
gemoji (~> 2.0)
html-pipeline (~> 2.2)
jekyll (>= 3.0)
json (1.8.3)
kramdown (1.11.1)
liquid (3.0.6)
listen (3.0.6)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9.7)
mercenary (0.3.6)
mini_portile2 (2.1.0)
minima (2.0.0)
minitest (5.9.1)
multipart-post (2.0.0)
net-dns (0.8.0)
nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0)
nokogiri (1.6.8.1-x64-mingw32)
mini_portile2 (~> 2.1.0)
octicons (3.0.1)
nokogiri (>= 1.6.3.1)
octokit (4.4.1)
sawyer (~> 0.7.0, >= 0.5.3)
pathutil (0.14.0)
forwardable-extended (~> 2.6)
public_suffix (1.5.3)
rb-fsevent (0.9.8)
rb-inotify (0.9.7)
ffi (>= 0.5.0)
rouge (1.11.1)
safe_yaml (1.0.4)
sass (3.4.22)
sawyer (0.7.0)
addressable (>= 2.3.5, < 2.5)
faraday (~> 0.8, < 0.10)
terminal-table (1.7.3)
unicode-display_width (~> 1.1.1)
thread_safe (0.3.5)
typhoeus (0.8.0)
ethon (>= 0.8.0)
tzinfo (1.2.2)
thread_safe (~> 0.1)
unicode-display_width (1.1.1)
PLATFORMS
ruby
x64-mingw32
DEPENDENCIES
github-pages
jekyll-octicons
BUNDLED WITH
1.13.3
+336 -17
View File
@@ -1,21 +1,340 @@
The MIT License (MIT)
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (c) 2016 Michael Rose
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Preamble
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+5
View File
@@ -0,0 +1,5 @@
# additional include paths necessary to compile the C++ library
AM_CXXFLAGS = -I$(top_srcdir)/
SUBDIRS = lib tests benchmarks
filelist: $(SUBDIRS)
View File
+44
View File
@@ -0,0 +1,44 @@
This library provides data parallel C++ container classes with internal memory layout
that is transformed to map efficiently to SIMD architectures. CSHIFT facilities
are provided, similar to HPF and cmfortran, and user control is given over the mapping of
array indices to both MPI tasks and SIMD processing elements.
* Identically shaped arrays then be processed with perfect data parallelisation.
* Such identically shapped arrays are called conformable arrays.
The transformation is based on the observation that Cartesian array processing involves
identical processing to be performed on different regions of the Cartesian array.
The library will (eventually) both geometrically decompose into MPI tasks and across SIMD lanes.
Data parallel array operations can then be specified with a SINGLE data parallel paradigm, but
optimally use MPI, OpenMP and SIMD parallelism under the hood. This is a significant simplification
for most programmers.
The layout transformations are parametrised by the SIMD vector length. This adapts according to the architecture.
Presently SSE2 (128 bit) AVX, AVX2 (256 bit) and IMCI and AVX512 (512 bit) targets are supported.
These are presented as
vRealF, vRealD, vComplexF, vComplexD
internal vector data types. These may be useful in themselves for other programmers.
The corresponding scalar types are named
RealF, RealD, ComplexF, ComplexD
MPI parallelism is UNIMPLEMENTED and for now only OpenMP and SIMD parallelism is present in the library.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is are examples:
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -msse4" --enable-simd=SSE4
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -mavx" --enable-simd=AVX1
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -mavx2" --enable-simd=AVX2
./configure CXX=icpc CXXFLAGS="-std=c++11 -O3 -mmic" --enable-simd=AVX512 --host=none
+43 -19
View File
@@ -1,26 +1,50 @@
GRID github pages.
# Grid
Data parallel C++ mathematical object library
This library provides data parallel C++ container classes with internal memory layout
that is transformed to map efficiently to SIMD architectures. CSHIFT facilities
are provided, similar to HPF and cmfortran, and user control is given over the mapping of
array indices to both MPI tasks and SIMD processing elements.
## License
* Identically shaped arrays then be processed with perfect data parallelisation.
* Such identically shapped arrays are called conformable arrays.
The MIT License (MIT)
The transformation is based on the observation that Cartesian array processing involves
identical processing to be performed on different regions of the Cartesian array.
Copyright (c) 2016 Michael Rose
The library will both geometrically decompose into MPI tasks and across SIMD lanes.
Local vector loops are parallelised with OpenMP pragmas.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Data parallel array operations can then be specified with a SINGLE data parallel paradigm, but
optimally use MPI, OpenMP and SIMD parallelism under the hood. This is a significant simplification
for most programmers.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The layout transformations are parametrised by the SIMD vector length. This adapts according to the architecture.
Presently SSE4 (128 bit) AVX, AVX2 (256 bit) and IMCI and AVX512 (512 bit) targets are supported.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
These are presented as
vRealF, vRealD, vComplexF, vComplexD
internal vector data types. These may be useful in themselves for other programmers.
The corresponding scalar types are named
RealF, RealD, ComplexF, ComplexD
MPI, OpenMP, and SIMD parallelism are present in the library.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
are examples:
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -msse4" --enable-simd=SSE4
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -mavx" --enable-simd=AVX1
./configure CXX=clang++ CXXFLAGS="-std=c++11 -O3 -mavx2" --enable-simd=AVX2
./configure CXX=icpc CXXFLAGS="-std=c++11 -O3 -mmic" --enable-simd=AVX512 --host=none
For developers:
Use reconfigure_script in the scripts/ directory to create the autotools environment
+248
View File
@@ -0,0 +1,248 @@
TODO:
---------------
Policies:
* Link smearing/boundary conds; Policy class based implementation ; framework more in place
* Support different boundary conditions (finite temp, chem. potential ... )
* Support different fermion representations?
- contained entirely within the integrator presently
- Sign of force term.
- Reversibility test.
- Rename "Ta" as too unclear
- Lanczos
- Audit oIndex usage for cb behaviour
- Rectangle gauge actions.
Iwasaki,
Symanzik,
... etc...
- Prepare multigrid for HMC. - Alternate setup schemes.
- Support for ILDG --- ugly, not done
- Flavour matrices?
- FFTnD ?
- Gparity; hand opt use template specialisation elegance to enable the optimised paths ?
- Gparity force term; Gparity (R)HMC.
- Random number state save restore
- Mobius implementation clean up to rmove #if 0 stale code sequences
- CG -- profile carefully, kernel fusion, whole CG performance measurements.
================================================================
* Hacks and bug fixes to clean up and Audits
================================================================
* Extract/merge/set cleanup ; too many variants; rationalise and call simpler ones
* Rewrite core tensor arithmetic support to be more systematic
= Use #define repetitive sequences to minimise code, decrease line count by thousands possible,
with more robust and maintainable implementation.
* Ensure we ET as much as possible; move unop functions into ET framework.
- tests with expression args to all functions
* FIXME audit
* const audit
Insert/Extract
* Replace vset with a call to merge.;
* care in Gmerge,Gextract over vset .
* extract / merge extra implementation removal
* Optimise the extract/merge SIMD routines; Azusa??
- I have collated into single location at least.
- Need to use _mm_*insert/extract routines.
* Thread scaling tests Xeon, XeonPhi
Not sure of status of this -- reverify. Things are working nicely now though.
* Make the Tensor types and Complex etc... play more nicely.
- TensorRemove is a hack, come up with a long term rationalised approach to Complex vs. Scalar<Scalar<Scalar<Complex > > >
QDP forces use of "toDouble" to get back to non tensor scalar. This role is presently taken TensorRemove, but I
want to introduce a syntax that does not require this.
- Reductions that contract indices on a site should always demote the tensor structure.
norm2(), innerProduct.
- Result of Sum(), SliceSum // spatial sums
trace, traceIndex etc.. do not.
- problem arises because "trace" returns Lattice<TComplex> moving everything down to Scalar,
and then Sum and SliceSum to not remove the Scalars. This would be fixed if we
template specialize the scalar scalar scalar sum and SliceSum, on the basis of being
pure scalar.
======================================================================
======================================================================
======================================================================
======================================================================
RECENT
---------------
- Clean up HMC -- DONE
- LorentzScalar<GaugeField> gets Gauge link type (cleaner). -- DONE
- Simplified the integrators a bit. -- DONE
- Multi-timescale looks broken and operating on single timescale for now. -- DONE
- pass GaugeField as template param. -- DONE
- Reunitarise -- DONE
- Force Gradient -- DONE
- Prefer "RefreshInternal" or such like to "init" in naming -- DONE
- Parallel io improvements -- DONE
- Plaquette and link trace checks into nersc reader from the Grid_nersc_io.cc test. -- DONE
Done: Cayley, Partial , ContFrac force terms.
DONE
- PseudoFermions
=> generalise to non-const EE ; likely defer (??) (NOT DONE)
Done:
- TwoFlavour
- TwoFlavourEvenOdd
- TwoFlavourRatio
- TwoFlavourRatioEvenOdd
Done:
- OneFlavourRationalEvenOdd
- OneFlavourRationalRatioEvenOdd
- OneFlavourRationalRatio
Done
=> Test DWF HMC
- Fix a threading bug that has been introduced and prevents HMC running hybrid OMP mode
Done:
- RNG filling from sparser grid, lower dim grid.
DONE
- MacroMagic -> virtual reader class.
*** Expression template engine: -- DONE
[ -- Norm2(expression) problem: introduce norm2 unary op, or Introduce conversion automatic from expression to Lattice<vobj>
* Strong test for norm2, conj and all primitive types. -- tests/Grid_simd.cc is almost there
* Implement where within expression template scheme.
* Check for missing functionality - partially audited against QDP++ layout
// Unary functions
// cos,sin, tan, acos, asin, cosh, acosh, tanh, sinh, // Scalar<vReal> only arg
// exp, log, sqrt, fabs
// transposeColor, transposeSpin,
// adjColor, adjSpin,
// copyMask.
// localMaxAbs
// Fourier transform equivalent.]
* CovariantShift support -----Use a class to store gauge field? (parallel transport?)
-- coherent framework for implementing actions and their forces.
Actions
DONE
* Fermion
- Wilson
- Clover
- DomainWall
- Mobius
- z-Mobius
Algorithms (lots of reuse/port from BFM)
* LinearOperator
* LinearSolver
* Polynomial
* Eigen
* CG
* Pcg
* Adef2
* DeflCG
* fPcg
* MCR
* HDCG
* HMC,
* Heatbath
* Integrators, leapfrog, omelyan, force gradient etc...
* etc..
Done
* Pauli, SU subgroup, etc..
* su3 exponentiation & log etc.. [Jamie's code?]
======================================================================================================
FUNCTIONALITY: it pleases me to keep track of things I have done (keeps me arguably sane)
======================================================================================================
* Command line args for geometry, simd, etc. layout. Is it necessary to have -- DONE
user pass these? Is this a QCD specific?
* Stencil -- DONE
* Test infrastructure -- DONE
* Fourspin, two spin project --- DONE
* Dirac Gamma/Dirac structures ---- DONE
* Conditional execution, where etc... -----DONE, simple test
* Integer relational support -----DONE
* Coordinate information, integers etc... -----DONE
* Integer type padding/union to vector. -----DONE
* LatticeCoordinate[mu] -----DONE
* expose traceIndex, peekIndex, transposeIndex etc at the Lattice Level -- DONE
* TraceColor, TraceSpin. ----- DONE (traceIndex<1>,traceIndex<2>, transposeIndex<1>,transposeIndex<2>)
----- Implement mapping between traceColour and traceSpin and traceIndex<1/2>.
* How to do U[mu] ... lorentz part of type structure or not. more like chroma if not. -- DONE
* Twospin/Fourspin/Gamma/Proj/Recon ----- DONE
* norm2l is a hack. figure out syntax error and make this norm2 c.f. tests/Grid_gamma.cc -- DONE
* subdirs lib, tests ?? ----- DONE
- lib/math
- lib/cartesian
- lib/cshift
- lib/stencil
- lib/communicator
- lib/algorithms
- lib/qcd
- lib/io/ -- GridLog, GridIn, GridErr, GridDebug, GridMessage
- lib/qcd/actions
- lib/qcd/measurements
* Subset support, slice sums etc... -----DONE
sliceSum(orthog)
sum
innerProduct
norm2
* Subgrid Transferral -----DONE
subBlock (coarseLattice,fineLattice)
projectBlockBasis
promoteBlockBasis
* random number generation ----- DONE
* Broadcast, reduction tests. innerProduct, localInnerProduct --- DONE
* I/O support
* NERSC Lattice loading, plaquette test ------- DONE single node
* Controling std::cout ------- DONE
* Had to hack assignment to 1.0 in the tests/Grid_gamma test -- DONE
* Reduce implemention is poor ; need threaded reductions; OMP isn't able to do it for generic objects. -- DONE
* Bug in RNG with complex numbers ; only filling real values; need helper function -- DONE
* Conformable test in Cshift routines. -- none needed ; there is only one
* Conformable testing in expression templates -- DONE (recursive)
* Bug in SeedFixedIntegers gave same output on each site. -- DONE
Implement and use lattice IO to verify this. -- cout for lattice types DONE
-244
View File
@@ -1,244 +0,0 @@
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your entire site, values
# which you are expected to set up once and rarely need to edit after that.
# For technical reasons, this file is *NOT* reloaded automatically when you use
# `jekyll serve`. If you change this file, please restart the server process.
# Site Settings
locale : "en"
title : "GRID"
title_separator : "|"
name : "University of Edinburgh"
authors : "Peter Boyle, Guido Cossu, Antonin Portelli, Azusa Yamaguchi"
description : "Data parallel C++ mathematical object library."
url : 'https://paboyle.github.io' # the base hostname & protocol for your site e.g. "https://mmistakes.github.io"
baseurl : '/Grid' # the subpath of your site, e.g. "/blog"
repository : "paboyle/Grid"
teaser : # filename of teaser fallback teaser image placed in /images/, .e.g. "500x300.png"
# breadcrumbs : false # true, false (default)
words_per_minute : 200
comments:
provider : # false (default), "disqus", "discourse", "facebook", "google-plus", "staticman", "custom"
disqus:
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
discourse:
server : # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org
facebook:
# https://developers.facebook.com/docs/plugins/comments
appid :
num_posts : # 5 (default)
colorscheme : # "light" (default), "dark"
staticman:
allowedFields : ['name', 'email', 'url', 'message']
branch : # "master", "gh-pages"
commitMessage : "New comment."
filename : comment-{@timestamp}
format : "yml"
moderation : true
path : "_data/comments/{options.slug}"
requiredFields : ['name', 'email', 'message']
transforms:
email : "md5"
generatedFields:
date:
type : "date"
options:
format : "iso8601" # "iso8601" (default), "timestamp-seconds", "timestamp-milliseconds"
atom_feed:
path : # blank (default) uses feed.xml
# SEO Related
google_site_verification :
bing_site_verification :
alexa_site_verification :
yandex_site_verification :
# Social Sharing
twitter:
username :
facebook:
username :
app_id :
publisher :
og_image : # Open Graph/Twitter default site image
# For specifying social profiles
# - https://developers.google.com/structured-data/customize/social-profiles
social:
type : # Person or Organization (defaults to Person)
name : # If the user or organization name differs from the site's name
links: # An array of links to social media profiles
# Analytics
analytics:
provider : false # false (default), "google", "google-universal", "custom"
google:
tracking_id :
# Site Author
author:
name : "PPT Group"
avatar : "bio-photo.jpg"
bio : "Some info"
location : "Edinburgh"
email : "guido.cossu@ed.ac.uk"
uri :
bitbucket :
codepen :
dribbble :
flickr :
facebook :
foursquare :
github :
google_plus :
keybase :
instagram :
lastfm :
linkedin :
pinterest :
soundcloud :
stackoverflow : # "123456/username" (the last part of your profile url, e.g. http://stackoverflow.com/users/123456/username)
steam :
tumblr :
twitter :
vine :
weibo :
xing :
youtube :
# Reading Files
include:
- .htaccess
- _pages
exclude:
- "*.sublime-project"
- "*.sublime-workspace"
- vendor
- .asset-cache
- .bundle
- .jekyll-assets-cache
- .sass-cache
- assets/js/plugins
- assets/js/_main.js
- assets/js/vendor
- Capfile
- CHANGELOG
- config
- Gemfile
- Gruntfile.js
- gulpfile.js
- LICENSE
- log
- node_modules
- package.json
- Rakefile
- README
- tmp
keep_files:
- .git
- .svn
encoding: "utf-8"
markdown_ext: "markdown,mkdown,mkdn,mkd,md"
# Conversion
markdown: kramdown
highlighter: rouge
lsi: false
excerpt_separator: "\n\n"
incremental: false
# Markdown Processing
kramdown:
input: GFM
hard_wrap: false
auto_ids: true
footnote_nr: 1
entity_output: as_char
toc_levels: 1..6
smart_quotes: lsquo,rsquo,ldquo,rdquo
enable_coderay: false
# Sass/SCSS
sass:
sass_dir: _sass
style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style
# Outputting
permalink: /:categories/:title/
paginate: 5 # amount of posts to show
paginate_path: /page:num/
timezone: # http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# Plugins
gems:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
- jekyll-feed
- jekyll-octicons
- jemoji
# mimic GitHub Pages with --safe
whitelist:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
- jekyll-feed
- jekyll-octicons
- jemoji
# Archives
# Type
# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
# - Jekyll Archives plugin archive pages ~> type: jekyll-archives
# Path (examples)
# - Archive page should exist at path when using Liquid method or you can
# expect broken links (especially with breadcrumbs enabled)
# - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/
# - <base_path/my-awesome-category/index.html ~> path: /
category_archive:
type: liquid
path: /categories/
tag_archive:
type: liquid
path: /tags/
# https://github.com/jekyll/jekyll-archives
# jekyll-archives:
# enabled:
# - categories
# - tags
# layouts:
# category: archive-taxonomy
# tag: archive-taxonomy
# permalinks:
# category: /categories/:name/
# tag: /tags/:name/
# HTML Compression
# - http://jch.penibelst.de/
compress_html:
clippings: all
ignore:
envs: development
output: web
defaults:
-
scope:
path: ""
type: "pages"
values:
layout: "single"
comments: false
search: true
-231
View File
@@ -1,231 +0,0 @@
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your entire site, values
# which you are expected to set up once and rarely need to edit after that.
# For technical reasons, this file is *NOT* reloaded automatically when you use
# `jekyll serve`. If you change this file, please restart the server process.
# Site Settings
locale : "en"
title : "GRID"
title_separator : "|"
name : "Our team"
description : "Data parallel C++ mathematical object library."
url : 'http://127.0.0.1:4000' # the base hostname & protocol for your site e.g. "https://mmistakes.github.io"
baseurl : '/Grid' # the subpath of your site, e.g. "/blog"
repository : "paboyle/Grid"
teaser : # filename of teaser fallback teaser image placed in /images/, .e.g. "500x300.png"
# breadcrumbs : false # true, false (default)
words_per_minute : 200
comments:
provider : # false (default), "disqus", "discourse", "facebook", "google-plus", "staticman", "custom"
disqus:
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
discourse:
server : # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org
facebook:
# https://developers.facebook.com/docs/plugins/comments
appid :
num_posts : # 5 (default)
colorscheme : # "light" (default), "dark"
staticman:
allowedFields : ['name', 'email', 'url', 'message']
branch : # "master", "gh-pages"
commitMessage : "New comment."
filename : comment-{@timestamp}
format : "yml"
moderation : true
path : "_data/comments/{options.slug}"
requiredFields : ['name', 'email', 'message']
transforms:
email : "md5"
generatedFields:
date:
type : "date"
options:
format : "iso8601" # "iso8601" (default), "timestamp-seconds", "timestamp-milliseconds"
atom_feed:
path : # blank (default) uses feed.xml
# SEO Related
google_site_verification :
bing_site_verification :
alexa_site_verification :
yandex_site_verification :
# Social Sharing
twitter:
username :
facebook:
username :
app_id :
publisher :
og_image : # Open Graph/Twitter default site image
# For specifying social profiles
# - https://developers.google.com/structured-data/customize/social-profiles
social:
type : # Person or Organization (defaults to Person)
name : # If the user or organization name differs from the site's name
links: # An array of links to social media profiles
# Analytics
analytics:
provider : false # false (default), "google", "google-universal", "custom"
google:
tracking_id :
# Site Author
author:
name : "PPT Group"
avatar : "bio-photo.jpg"
bio : "Our group is amazing."
location : "Edinburgh"
email : "guido.cossu@ed.ac.uk"
uri :
bitbucket :
codepen :
dribbble :
flickr :
facebook :
foursquare :
github :
google_plus :
keybase :
instagram :
lastfm :
linkedin :
pinterest :
soundcloud :
stackoverflow : # "123456/username" (the last part of your profile url, e.g. http://stackoverflow.com/users/123456/username)
steam :
tumblr :
twitter :
vine :
weibo :
xing :
youtube :
# Reading Files
include:
- .htaccess
- _pages
exclude:
- "*.sublime-project"
- "*.sublime-workspace"
- vendor
- .asset-cache
- .bundle
- .jekyll-assets-cache
- .sass-cache
- assets/js/plugins
- assets/js/_main.js
- assets/js/vendor
- Capfile
- CHANGELOG
- config
- Gemfile
- Gruntfile.js
- gulpfile.js
- LICENSE
- log
- node_modules
- package.json
- Rakefile
- README
- tmp
keep_files:
- .git
- .svn
encoding: "utf-8"
markdown_ext: "markdown,mkdown,mkdn,mkd,md"
# Conversion
markdown: kramdown
highlighter: rouge
lsi: false
excerpt_separator: "\n\n"
incremental: false
# Markdown Processing
kramdown:
input: GFM
hard_wrap: false
auto_ids: true
footnote_nr: 1
entity_output: as_char
toc_levels: 1..6
smart_quotes: lsquo,rsquo,ldquo,rdquo
enable_coderay: false
# Sass/SCSS
sass:
sass_dir: _sass
style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style
# Outputting
permalink: /:categories/:title/
paginate: 5 # amount of posts to show
paginate_path: /page:num/
timezone: # http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# Plugins
gems:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
- jekyll-feed
- jekyll-octicons
- jemoji
# mimic GitHub Pages with --safe
whitelist:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
- jekyll-feed
- jekyll-octicons
- jemoji
# Archives
# Type
# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
# - Jekyll Archives plugin archive pages ~> type: jekyll-archives
# Path (examples)
# - Archive page should exist at path when using Liquid method or you can
# expect broken links (especially with breadcrumbs enabled)
# - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/
# - <base_path/my-awesome-category/index.html ~> path: /
category_archive:
type: liquid
path: /categories/
tag_archive:
type: liquid
path: /tags/
# https://github.com/jekyll/jekyll-archives
# jekyll-archives:
# enabled:
# - categories
# - tags
# layouts:
# category: archive-taxonomy
# tag: archive-taxonomy
# permalinks:
# category: /categories/:name/
# tag: /tags/:name/
# HTML Compression
# - http://jch.penibelst.de/
compress_html:
clippings: all
ignore:
envs: development
-9
View File
@@ -1,9 +0,0 @@
# /_data/authors.yml
Guido Cossu:
name: "Guido Cossu"
uri: "http://www.google.com"
email: "guido.cossu@ed.ac.uk"
bio: "Senior researcher at Higgs Centre"
avatar: "bio-photo-2.jpg"
twitter: "coppolachan"
-122
View File
@@ -1,122 +0,0 @@
# main links links
main:
- title: "Documentation"
icon: "octicon octicon-book vertical-middle"
url: /docs/
- title: "Quick-start guide"
url: /docs/quick-start-guide/
- title: "About"
url: /about/
- title: "GPL License"
url: /license/
docs:
- title:
output: pdf
type: frontmatter
children:
- title:
url: /titlepage.html
output: pdf
type: frontmatter
- title:
url: /tocpage.html
output: pdf
type: frontmatter
- title: "Introduction"
output: pdf
children:
- title: "GRID"
url: /docs/
output: pdf
- title: Getting Started
output: pdf
children:
- title: "Quick-Start Guide"
url: /docs/quick-start-guide/
output: web, pdf
- title: "Communication interfaces"
url: /docs/comm_interfaces/
output: web, pdf
- title: "Architecture targets"
url: /docs/simd_targets/
output: web, pdf
- title: "Building on Intel and AMD targets"
url: /docs/general_build/
output: web, pdf
- title: Using GRID
output: pdf
children:
- title: "Running on KNL"
url: /docs/running_knl/
output: web, pdf
- title: Development
output: pdf
children:
- title: "Execution model"
url: /docs/execution-model/
output: web, pdf
- title: "Reporting an issue"
url: /docs/bug_report/
output: web, pdf
- title: "Continuous integration"
url: /docs/travis/
output: web, pdf
- title: API description
output: pdf
children:
- title: "Introduction"
url: /docs/API/introduction.html
output: web, pdf
disable: "no"
- title: "Tensor classes"
url: /docs/API/tensor_classes.html
output: web, pdf
disable: "no"
- title: "Vectorisation"
url: /docs/API/vectorisation.html
output: web, pdf
disable: "no"
- title: "Coordinates"
url: /docs/API/coordinates.html
output: web, pdf
disable: "no"
- title: "Grids"
url: /docs/API/grids.html
output: web, pdf
disable: "no"
- title: "Lattice containers"
url: /docs/API/lattice_containers.html
output: web, pdf
disable: "no"
- title: "Random number generators"
url: /docs/API/random_number_generators.html
output: web, pdf
disable: "no"
- title: "Lattice classes"
url: /docs/lattice/
disable: "yes"
- title: "Lattice theories"
output: pdf
children:
- title : "Theories"
url: /docs/theories/
disable: "yes"
output: web
- title: "HMC"
url: /docs/theories/hmc/
disable: "no"
output: web,pdf
-355
View File
@@ -1,355 +0,0 @@
# User interface text and labels
# English (default)
# -----------------
en: &DEFAULT_EN
page : "Page"
pagination_previous : "Previous"
pagination_next : "Next"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
toc_label : "On This Page"
ext_link_label : "Direct Link"
less_than : "less than"
minute_read : "minute read"
share_on_label : "Share on"
meta_label :
tags_label : "Tags:"
categories_label : "Categories:"
date_label : "Updated:"
comments_label : "Leave a Comment"
comments_title : "Comments"
more_label : "Learn More"
related_label : "You May Also Enjoy"
follow_label : "Follow:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "Website"
email_label : "Email"
recent_posts : "Recent Posts"
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
comment_form_info : "Your email address will not be published. Required fields are marked"
comment_form_comment_label : "Comment"
comment_form_md_info : "Markdown is supported."
comment_form_name_label : "Name"
comment_form_email_label : "Email address"
comment_form_website_label : "Website (optional)"
comment_btn_submit : "Submit Comment"
comment_btn_submitted : "Submitted"
comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
loading_label : "Loading..."
en-US:
<<: *DEFAULT_EN
en-CA:
<<: *DEFAULT_EN
en-GB:
<<: *DEFAULT_EN
en-AU:
<<: *DEFAULT_EN
# Spanish
# --------------
es: &DEFAULT_ES
page : "Página"
pagination_previous : "Anterior"
pagination_next : "Siguiente"
breadcrumb_home_label : "Inicio"
breadcrumb_separator : "/"
toc_label : "Contenidos"
ext_link_label : "Enlace"
less_than : "menos de"
minute_read : "minuto de lectura"
share_on_label : "Compartir"
meta_label :
tags_label : "Etiquetas:"
categories_label : "Categorías:"
date_label : "Actualizado:"
comments_label : "Comentar"
comments_title :
more_label : "Ver más"
related_label : "Podrías ver también"
follow_label : "Seguir:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "Sitio web"
email_label : "Email"
recent_posts : "Entradas recientes"
undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml"
comment_form_info :
comment_form_comment_label :
comment_form_md_info :
comment_form_name_label :
comment_form_email_label :
comment_form_website_label :
comment_btn_submit :
comment_btn_submitted :
comment_success_msg :
comment_error_msg :
loading_label :
es-ES:
<<: *DEFAULT_ES
es-CO:
<<: *DEFAULT_ES
# French
# -----------------
fr: &DEFAULT_FR
page : "Page"
pagination_previous : "Précédent"
pagination_next : "Suivant"
breadcrumb_home_label : "Accueil"
breadcrumb_separator : "/"
toc_label : "Sur cette page"
ext_link_label : "Lien direct"
less_than : "plus petit que"
minute_read : "minute de lecture"
share_on_label : "Partager sur"
meta_label :
tags_label : "Tags :"
categories_label : "Catégories :"
date_label : "Mis à jour :"
comments_label : "Laisser un commentaire"
comments_title :
more_label : "Lire plus"
related_label : "Vous pourriez aimer"
follow_label : "Suivez moi"
feed_label : "Flux"
powered_by : "Propulsé par"
website_label : "Site"
email_label : "Email"
recent_posts : "Posts récents"
undefined_wpm : "Le paramètre words_per_minute n'est pas défini dans _config.yml"
comments_title : "Commentaires"
comment_form_info : "Votre adresse email ne sera pas visible. Les champs obligatoires sont marqués"
comment_form_comment_label : "Commentaire"
comment_form_md_info : "Markdown est supporté."
comment_form_name_label : "Nom"
comment_form_email_label : "Adresse mail"
comment_form_website_label : "Site web (optionnel)"
comment_btn_submit : "Envoyer"
comment_btn_submitted : "Envoyé"
comment_success_msg : "Merci pour votre comentaire, il sera visible sur le site une fois approuvé."
comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez."
loading_label : "Chargement..."
fr-FR:
<<: *DEFAULT_FR
fr-BE:
<<: *DEFAULT_FR
fr-CH:
<<: *DEFAULT_FR
# Turkish
# -----------------
tr: &DEFAULT_TR
page : "Sayfa"
pagination_previous : "Önceki"
pagination_next : "Sonraki"
breadcrumb_home_label : "Ana Sayfa"
breadcrumb_separator : "/"
toc_label : "İçindekiler"
ext_link_label : "Doğrudan Bağlantı"
less_than : "Şu süreden az: "
minute_read : "dakika tahmini okuma süresi"
share_on_label : "Paylaş"
meta_label :
tags_label : "Etiketler:"
categories_label : "Kategoriler:"
date_label : "Güncelleme tarihi:"
comments_label : "Yorum yapın"
comments_title :
more_label : "Daha fazlasını öğrenin"
related_label : "Bunlar ilginizi çekebilir:"
follow_label : "Takip et:"
feed_label : "RSS"
powered_by : "Emeği geçenler: "
website_label : "Web sayfası"
email_label : "E-posta"
recent_posts : "Son yazılar"
undefined_wpm : "_config.yml dosyasında tanımlanmamış words_per_minute parametresi"
comment_form_info :
comment_form_comment_label :
comment_form_md_info :
comment_form_name_label :
comment_form_email_label :
comment_form_website_label :
comment_btn_submit :
comment_btn_submitted :
comment_success_msg :
comment_error_msg :
loading_label :
tr-TR:
<<: *DEFAULT_TR
# Portuguese
# -----------------
pt: &DEFAULT_PT
page : "Página"
pagination_previous : "Anterior"
pagination_next : "Seguinte"
breadcrumb_home_label : "Início"
breadcrumb_separator : "/"
toc_label : "Nesta Página"
ext_link_label : "Link Direto"
less_than : "menos de"
minute_read : "minutos de leitura"
share_on_label : "Partilhar no"
meta_label :
tags_label : "Etiquetas:"
categories_label : "Categorias:"
date_label : "Atualizado:"
comments_label : "Deixe um Comentário"
comments_title : "Comentários"
more_label : "Saber mais"
related_label : "Também pode gostar de"
follow_label : "Siga:"
feed_label : "Feed"
powered_by : "Feito com"
website_label : "Site"
email_label : "Email"
recent_posts : "Artigos Recentes"
undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml"
comment_form_info : "O seu endereço email não será publicado. Os campos obrigatórios estão assinalados"
comment_form_comment_label : "Comentário"
comment_form_md_info : "Markdown é suportado."
comment_form_name_label : "Nome"
comment_form_email_label : "Endereço Email"
comment_form_website_label : "Site (opcional)"
comment_btn_submit : "Sumbeter Comentário"
comment_btn_submitted : "Submetido"
comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado."
comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente."
loading_label : "A carregar..."
# Brazilian Portuguese
pt-BR:
page : "Página"
pagination_previous : "Anterior"
pagination_next : "Próxima"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
toc_label : "Nesta página"
ext_link_label : "Link direto"
less_than : "meno que"
minute_read : "minutos de leitura"
share_on_label : "Compartilhe em"
meta_label :
tags_label : "Tags:"
categories_label : "Categorias:"
date_label : "Atualizado em:"
comments_label : "Deixe um comentário"
comments_title :
more_label : "Aprenda Mais"
related_label : "Você Talvez Goste Também"
follow_label : "Acompanhe em"
feed_label : "Feed"
powered_by : "Feito com"
website_label : "Site"
email_label : "Email"
recent_posts : "Postagens recentes"
undefined_wpm : "Parâmetro indefinido em word_per_minute no _config.yml"
comment_form_info :
comment_form_comment_label :
comment_form_md_info :
comment_form_name_label :
comment_form_email_label :
comment_form_website_label :
comment_btn_submit :
comment_btn_submitted :
comment_success_msg :
comment_error_msg :
loading_label :
pt-PT:
<<: *DEFAULT_PT
# Italian
# -----------------
it: &DEFAULT_IT
page : "Pagina"
pagination_previous : "Precedente"
pagination_next : "Prossima"
breadcrumb_home_label : "Home"
breadcrumb_separator : "/"
toc_label : "Indice della pagina"
ext_link_label : "Link"
less_than : "meno di"
minute_read : "minuto/i di lettura"
share_on_label : "Condividi"
meta_label :
tags_label : "Tags:"
categories_label : "Categorie:"
date_label : "Aggiornato:"
comments_label : "Scrivi un commento"
comments_title :
more_label : "Scopri di più"
related_label : "Potrebbe Piacerti Anche"
follow_label : "Segui:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "Website"
email_label : "Email"
recent_posts : "Articoli Recenti"
undefined_wpm : "Parametro words_per_minute non definito in _config.yml"
comment_form_info : "Il tuo indirizzo email non sarà pubblicato. Sono segnati i campi obbligatori"
comment_form_comment_label : "Commenta"
comment_form_md_info : "Il linguaggio Markdown è supportato"
comment_form_name_label : "Nome"
comment_form_email_label : "Indirizzo email"
comment_form_website_label : "Sito Web (opzionale)"
comment_btn_submit : "Invia commento"
comment_btn_submitted : "Inviato"
comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato."
comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova."
loading_label : "Caricamento..."
it-IT:
<<: *DEFAULT_IT
# Chinese (zh-CN Chinese - China)
# -----------------
zh: &DEFAULT_ZH
page : "页面"
pagination_previous : "向前"
pagination_next : "向后"
breadcrumb_home_label : "首页"
breadcrumb_separator : "/"
toc_label : "在本页上"
ext_link_label : "直接链接"
less_than : "少于"
minute_read : "分钟 阅读"
share_on_label : "分享"
meta_label :
tags_label : "标签:"
categories_label : "分类:"
date_label : "最新的:"
comments_label : "留下评论"
comments_title : "评论"
more_label : "了解更多"
related_label : "猜您还喜欢"
follow_label : "关注:"
feed_label : "Feed"
powered_by : "Powered by"
website_label : "网站"
email_label : "Email"
recent_posts : "最新文章"
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
comment_form_info : "Your email address will not be published. Required fields are marked"
comment_form_comment_label : "Comment"
comment_form_md_info : "Markdown is supported."
comment_form_name_label : "Name"
comment_form_email_label : "Email address"
comment_form_website_label : "Website (optional)"
comment_btn_submit : "Submit Comment"
comment_btn_submitted : "Submitted"
comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
loading_label : "Loading..."
zh-CN:
<<: *DEFAULT_ZH
zh-HK:
<<: *DEFAULT_ZH
zh-SG:
<<: *DEFAULT_ZH
zh-TW:
<<: *DEFAULT_ZH
# Another locale
# --------------
@@ -1,3 +0,0 @@
<!-- start custom analytics snippet -->
<!-- end custom analytics snippet -->
@@ -1,9 +0,0 @@
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '{{ site.analytics.google.tracking_id }}', 'auto');
ga('send', 'pageview');
</script>
-11
View File
@@ -1,11 +0,0 @@
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
-12
View File
@@ -1,12 +0,0 @@
{% if site.analytics.provider and page.analytics != false %}
{% case site.analytics.provider %}
{% when "google" %}
{% include /analytics-providers/google.html %}
{% when "google-universal" %}
{% include /analytics-providers/google-universal.html %}
{% when "custom" %}
{% include /analytics-providers/custom.html %}
{% endcase %}
{% endif %}
-40
View File
@@ -1,40 +0,0 @@
{% include base_path %}
{% if post.header.teaser %}
{% capture teaser %}{{ post.header.teaser }}{% endcapture %}
{% else %}
{% assign teaser = site.teaser %}
{% endif %}
{% if post.id %}
{% assign title = post.title | markdownify | remove: "<p>" | remove: "</p>" %}
{% else %}
{% assign title = post.title %}
{% endif %}
<div class="{{ include.type | default: "list" }}__item">
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
{% if include.type == "grid" and teaser %}
<div class="archive__item-teaser">
<img src=
{% if teaser contains "://" %}
"{{ teaser }}"
{% else %}
"{{ teaser | prepend: "/images/" | prepend: base_path }}"
{% endif %}
alt="">
</div>
{% endif %}
<h2 class="archive__item-title" itemprop="headline">
{% if post.link %}
<a href="{{ post.link }}">{{ title }}</a> <a href="{{ base_path }}{{ post.url }}" rel="permalink"><i class="fa fa-link" aria-hidden="true" title="permalink"></i><span class="sr-only">Permalink</span></a>
{% else %}
<a href="{{ base_path }}{{ post.url }}" rel="permalink">{{ title }}</a>
{% endif %}
</h2>
{% if post.read_time %}
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
{% endif %}
{% if post.excerpt %}<p class="archive__item-excerpt" itemprop="description">{{ post.excerpt | markdownify | strip_html | truncate: 160 }}</p>{% endif %}
</article>
</div>
-102
View File
@@ -1,102 +0,0 @@
{% include base_path %}
{% if page.author and site.data.authors[page.author] %}
{% assign author = site.data.authors[page.author] %}{% else %}{% assign author = site.author %}
{% endif %}
<div itemscope itemtype="http://schema.org/Person">
<div class="author__avatar">
{% if author.avatar contains "://" %}
<img src="{{ author.avatar }}" alt="{{ author.name }}">
{% else %}
<img src="{{ author.avatar | prepend: "/images/" | prepend: base_path }}" class="author__avatar" alt="{{ author.name }}">
{% endif %}
</div>
<div class="author__content">
<h3 class="author__name">{{ author.name }}</h3>
{% if author.bio %}<p class="author__bio">{{ author.bio }}</p>{% endif %}
</div>
<div class="author__urls-wrapper">
<button class="btn btn--inverse">{{ site.data.ui-text[site.locale].follow_label | remove: ":" | default: "Follow" }}</button>
<ul class="author__urls social-icons">
{% if author.location %}
<li><i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> {{ author.location }}</li>
{% endif %}
{% if author.uri %}
<li><a href="{{ author.uri }}"><i class="fa fa-fw fa-chain" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].website_label | default: "Website" }}</a></li>
{% endif %}
{% if author.email %}
<li><a href="mailto:{{ author.email }}"><i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].email_label | default: "Email" }}</a></li>
{% endif %}
{% if author.keybase %}
<li><a href="https://keybase.io/{{ author.keybase }}"><i class="fa fa-fw fa-key" aria-hidden="true"></i> Keybase</a></li>
{% endif %}
{% if author.twitter %}
<li><a href="https://twitter.com/{{ author.twitter }}"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
{% endif %}
{% if author.facebook %}
<li><a href="https://www.facebook.com/{{ author.facebook }}"><i class="fa fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook</a></li>
{% endif %}
{% if author.google_plus %}
<li><a href="https://plus.google.com/+{{ author.google_plus }}"><i class="fa fa-fw fa-google-plus-square" aria-hidden="true"></i> Google+</a></li>
{% endif %}
{% if author.linkedin %}
<li><a href="https://www.linkedin.com/in/{{ author.linkedin }}"><i class="fa fa-fw fa-linkedin-square" aria-hidden="true"></i> LinkedIn</a></li>
{% endif %}
{% if author.xing %}
<li><a href="https://www.xing.com/profile/{{ author.xing }}"><i class="fa fa-fw fa-xing-square" aria-hidden="true"></i> XING</a></li>
{% endif %}
{% if author.instagram %}
<li><a href="https://instagram.com/{{ author.instagram }}"><i class="fa fa-fw fa-instagram" aria-hidden="true"></i> Instagram</a></li>
{% endif %}
{% if author.tumblr %}
<li><a href="https://{{ author.tumblr }}.tumblr.com"><i class="fa fa-fw fa-tumblr-square" aria-hidden="true"></i> Tumblr</a></li>
{% endif %}
{% if author.bitbucket %}
<li><a href="https://bitbucket.org/{{ author.bitbucket }}"><i class="fa fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket</a></li>
{% endif %}
{% if author.github %}
<li><a href="https://github.com/{{ author.github }}"><i class="fa fa-fw fa-github" aria-hidden="true"></i> Github</a></li>
{% endif %}
{% if author.stackoverflow %}
<li><a href="https://www.stackoverflow.com/users/{{ author.stackoverflow }}"><i class="fa fa-fw fa-stack-overflow" aria-hidden="true"></i> Stackoverflow</a></li>
{% endif %}
{% if author.lastfm %}
<li><a href="https://last.fm/user/{{ author.lastfm }}"><i class="fa fa-fw fa-lastfm-square" aria-hidden="true"></i> Last.fm</a></li>
{% endif %}
{% if author.dribbble %}
<li><a href="https://dribbble.com/{{ author.dribbble }}"><i class="fa fa-fw fa-dribbble" aria-hidden="true"></i> Dribbble</a></li>
{% endif %}
{% if author.pinterest %}
<li><a href="https://www.pinterest.com/{{ author.pinterest }}"><i class="fa fa-fw fa-pinterest" aria-hidden="true"></i> Pinterest</a></li>
{% endif %}
{% if author.foursquare %}
<li><a href="https://foursquare.com/{{ author.foursquare }}"><i class="fa fa-fw fa-foursquare" aria-hidden="true"></i> Foursquare</a></li>
{% endif %}
{% if author.steam %}
<li><a href="https://steamcommunity.com/id/{{ author.steam }}"><i class="fa fa-fw fa-steam-square" aria-hidden="true"></i> Steam</a></li>
{% endif %}
{% if author.youtube %}
<li><a href="https://www.youtube.com/user/{{ author.youtube }}"><i class="fa fa-fw fa-youtube-square" aria-hidden="true"></i> YouTube</a></li>
{% endif %}
{% if author.soundcloud %}
<li><a href="https://soundcloud.com/{{ author.soundcloud }}"><i class="fa fa-fw fa-soundcloud" aria-hidden="true"></i> Soundcloud</a></li>
{% endif %}
{% if author.weibo %}
<li><a href="https://www.weibo.com/{{ author.weibo }}"><i class="fa fa-fw fa-weibo" aria-hidden="true"></i> Weibo</a></li>
{% endif %}
{% if author.flickr %}
<li><a href="https://www.flickr.com/{{ author.flickr }}"><i class="fa fa-fw fa-flickr" aria-hidden="true"></i> Flickr</a></li>
{% endif %}
{% if author.codepen %}
<li><a href="https://codepen.io/{{ author.codepen }}"><i class="fa fa-fw fa-codepen" aria-hidden="true"></i> CodePen</a></li>
{% endif %}
{% if author.vine %}
<li><a href="https://vine.co/u/{{ author.vine }}"><i class="fa fa-fw fa-vine" aria-hidden="true"></i> Vine</a></li>
{% endif %}
</ul>
</div>
</div>
-5
View File
@@ -1,5 +0,0 @@
{% if site.url %}
{% assign base_path = site.url | append: site.baseurl %}
{% else %}
{% assign base_path = site.github.url %}
{% endif %}
-41
View File
@@ -1,41 +0,0 @@
{% include base_path %}
{% case site.categories.type %}
{% when "liquid" %}
{% assign path_type = "#" %}
{% when "jekyll-archives" %}
{% assign path_type = nil %}
{% endcase %}
{% if page.collection != 'posts' %}
{% assign path_type = nil %}
{% assign crumb_path = '/' %}
{% else %}
{% assign crumb_path = site.categories.path %}
{% endif %}
<nav class="breadcrumbs">
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
{% assign crumbs = page.url | split: '/' %}
{% assign i = 1 %}
{% for crumb in crumbs offset: 1 %}
{% if forloop.first %}
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a href="{{ base_path }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
<meta itemprop="position" content="{{ i }}" />
</li>
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
{% endif %}
{% if forloop.last %}
<li class="current">{{ page.title }}</li>
{% else %}
{% assign i = i | plus: 1 %}
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
<a href="{{ base_path }}{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a>
<meta itemprop="position" content="{{ i }}" />
</li>
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
{% endif %}
{% endfor %}
</ol>
</nav>
-3
View File
@@ -1,3 +0,0 @@
<!--[if lt IE 9]>
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
<![endif]-->
-28
View File
@@ -1,28 +0,0 @@
{% include base_path %}
{% case site.category_archive.type %}
{% when "liquid" %}
{% assign path_type = "#" %}
{% when "jekyll-archives" %}
{% assign path_type = nil %}
{% endcase %}
{% if site.category_archive.path %}
{% comment %}
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
{% endcomment %}
{% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
{% assign category_hashes = (page_categories | split: ',' | sort:0) %}
<p class="page__taxonomy">
<strong><i class="fa fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
<span itemprop="keywords">
{% for hash in category_hashes %}
{% assign keyValue = hash | split: '#' %}
{% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
<a href="{{ base_path }}{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
{% endfor %}
</span>
</p>
{% endif %}
-22
View File
@@ -1,22 +0,0 @@
<article id="comment{{ include.index }}" class="js-comment comment" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
<div class="comment__avatar-wrapper">
<img class="comment__avatar" src="https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80">
</div>
<div class="comment__content-wrapper">
<h3 class="comment__author" itemprop="author" itemscope itemtype="http://schema.org/Person">
{% unless include.url == blank %}
<span itemprop="name"><a rel="external nofollow" itemprop="url" href="{{ include.url }}">{{ include.name }}</a></span>
{% else %}
<span itemprop="name">{{ include.name }}</span>
{% endunless %}
</h3>
<p class="comment__date">
{% if include.date %}
{% if include.index %}<a href="#comment{{ include.index }}" itemprop="url">{% endif %}
<time datetime="{{ include.date | date_to_xmlschema }}" itemprop="datePublished">{{ include.date | date: "%B %d, %Y at %I:%M %p" }}</time>
{% if include.index %}</a>{% endif %}
{% endif %}
</p>
<div itemprop="text">{{ include.message | markdownify }}</div>
</div>
</article>
-3
View File
@@ -1,3 +0,0 @@
<!-- start custom comments snippet -->
<!-- end custom comments snippet -->
@@ -1,14 +0,0 @@
{% if site.comments.discourse.server %}
{% include base_path %}
{% capture canonical %}{{ base_path }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
<script type="text/javascript">
DiscourseEmbed = { discourseUrl: '//{{ site.comments.discourse.server }}/',
discourseEmbedUrl: '{{ canonical }}' };
(function () {
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
})();
</script>
<noscript>Please enable JavaScript to view the comments powered by [Discourse](http://forum.beta-europe.org/c/beta/website).</a></noscript>
{% endif %}
-22
View File
@@ -1,22 +0,0 @@
{% if site.comments.disqus.shortname %}
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = '{{ site.comments.disqus.shortname }}';
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
/* * * DON'T EDIT BELOW THIS LINE * * */
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
{% endif %}
@@ -1,8 +0,0 @@
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5{% if site.comments.facebook.appid %}&appId={{ site.comments.facebook.appid }}{% endif %}";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
@@ -1,2 +0,0 @@
<script async type="text/javascript" src="//apis.google.com/js/plusone.js?callback=gpcb"></script>
<noscript>Please enable JavaScript to view the <a href="https://plus.google.com/">comments powered by Google+.</a></noscript>
-18
View File
@@ -1,18 +0,0 @@
{% if site.comments.provider and page.comments %}
{% case site.comments.provider %}
{% when "disqus" %}
{% include /comments-providers/disqus.html %}
{% when "discourse" %}
{% include /comments-providers/discourse.html %}
{% when "facebook" %}
{% include /comments-providers/facebook.html %}
{% when "google-plus" %}
{% include /comments-providers/google-plus.html %}
{% when "staticman" %}
{% include /comments-providers/staticman.html %}
{% when "custom" %}
{% include /comments-providers/custom.html %}
{% endcase %}
{% endif %}
@@ -1,42 +0,0 @@
{% if site.repository and site.staticman.branch %}
<script>
(function ($) {
var $comments = $('.js-comments');
$('#new_comment').submit(function () {
var form = this;
$(form).addClass('disabled');
$('#comment-form-submit').html('<i class="fa fa-spinner fa-spin fa-fw"></i> {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}');
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}');
$('.page__comments-form .js-notice').removeClass('notice--danger');
$('.page__comments-form .js-notice').addClass('notice--success');
showAlert('{{ site.data.ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}');
},
error: function (err) {
console.log(err);
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}');
$('.page__comments-form .js-notice').removeClass('notice--success');
$('.page__comments-form .js-notice').addClass('notice--danger');
showAlert('{{ site.data.ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}');
$(form).removeClass('disabled');
}
});
return false;
});
function showAlert(message) {
$('.page__comments-form .js-notice').removeClass('hidden');
$('.page__comments-form .js-notice-text').html(message);
}
})(jQuery);
</script>
{% endif %}
-82
View File
@@ -1,82 +0,0 @@
{% include base_path %}
<div class="page__comments">
{% capture comments_label %}{{ site.data.ui-text[site.locale].comments_label | default: "Comments" }}{% endcapture %}
{% case site.comments.provider %}
{% when "disqus" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="disqus_thread"></section>
{% when "facebook" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section class="fb-comments" data-href="{{ base_path }}{{ page.url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section>
{% when "google-plus" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section class="g-comments" data-href="{{ base_path }}{{ page.url }}" data-first_party_property="BLOGGER" data-view_type="FILTERED_POSTMOD">Loading Google+ Comments ...</section>
{% when "staticman" %}
<section id="comments">
{% if site.repository and site.staticman.branch %}
<!-- Start static comments -->
<div class="js-comments">
{% if site.data.comments[page.slug] %}
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
{% assign comments = site.data.comments[page.slug] | sort %}
{% for comment in comments %}
{% assign email = comment[1].email %}
{% assign name = comment[1].name %}
{% assign url = comment[1].url %}
{% assign date = comment[1].date %}
{% assign message = comment[1].message %}
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
{% endfor %}
{% endif %}
</div>
<!-- End static comments -->
<!-- Start new comment form -->
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
<p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
<form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/{{ site.repository }}/{{ site.staticman.branch }}">
<div class="form__spinner">
<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
<span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span>
</div>
<fieldset>
<label for="comment-form-message">{{ site.data.ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label>
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
<div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ site.data.ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div>
</fieldset>
<fieldset>
<label for="comment-form-name">{{ site.data.ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label>
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
</fieldset>
<fieldset>
<label for="comment-form-email">{{ site.data.ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label>
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
</fieldset>
<fieldset>
<label for="comment-form-url">{{ site.data.ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label>
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
</fieldset>
<fieldset class="hidden" style="display: none;">
<input type="hidden" name="options[slug]" value="{{ page.slug }}">
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
</fieldset>
<!-- Start comment form alert messaging -->
<p class="hidden js-notice">
<strong class="js-notice-text"></strong>
</p>
<!-- End comment form alert messaging -->
<fieldset>
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
</fieldset>
</form>
<!-- End new comment form -->
{% endif %}
</section>
{% when "custom" %}
<section id="comments"></section>
{% endcase %}
</div>
-52
View File
@@ -1,52 +0,0 @@
{% include base_path %}
{% if include.id %}
{% assign feature_row = page.[include.id] %}
{% else %}
{% assign feature_row = page.feature_row %}
{% endif %}
<div class="feature__wrapper">
{% for f in feature_row %}
{% if f.url contains "://" %}
{% capture f_url %}{{ f.url }}{% endcapture %}
{% else %}
{% capture f_url %}{{ f.url | prepend: base_path }}{% endcapture %}
{% endif %}
<div class="feature__item{% if include.type %}--{{ include.type }}{% endif %}">
<div class="archive__item">
{% if f.image_path %}
<div class="archive__item-teaser">
<img src=
{% if f.image_path contains "://" %}
"{{ f.image_path }}"
{% else %}
"{{ f.image_path | prepend: "/images/" | prepend: base_path }}"
{% endif %}
alt="{% if f.alt %}{{ f.alt }}{% endif %}">
</div>
{% endif %}
<div class="archive__item-body">
{% if f.title %}
<h2 class="archive__item-title">{{ f.title }}</h2>
{% endif %}
{% if f.excerpt %}
<div class="archive__item-excerpt">
{{ f.excerpt | markdownify }}
</div>
{% endif %}
{% if f.url %}
<p><a href="{{ f_url }}" class="btn {{ f.btn_class }}">{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
{% endif %}
</div>
</div>
</div>
{% endfor %}
</div>
-24
View File
@@ -1,24 +0,0 @@
{% include base_path %}
<div class="page__footer-follow">
<ul class="social-icons">
{% if site.data.ui-text[site.locale].follow_label %}
<li><strong>{{ site.data.ui-text[site.locale].follow_label }}</strong></li>
{% endif %}
{% if site.twitter.username %}
<li><a href="https://twitter.com/{{ site.twitter.username }}"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
{% endif %}
{% if site.facebook.username %}
<li><a href="https://facebook.com/{{ site.facebook.username }}"><i class="fa fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook</a></li>
{% endif %}
{% if site.author.github %}
<li><a href="http://github.com/{{ site.author.github }}"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
{% endif %}
{% if site.author.bitbucket %}
<li><a href="http://bitbucket.org/{{ site.author.bitbucket }}"><i class="fa fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket</a></li>
{% endif %}
<li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ base_path }}/feed.xml{% endif %}"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li>
</ul>
</div>
<div class="page__footer-copyright">&copy; {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
-3
View File
@@ -1,3 +0,0 @@
<!-- start custom footer snippets -->
<!-- end custom footer snippets -->
-49
View File
@@ -1,49 +0,0 @@
{% include base_path %}
{% if include.id %}
{% assign gallery = page.[include.id] %}
{% else %}
{% assign gallery = page.gallery %}
{% endif %}
{% if gallery.size == 2 %}
{% assign gallery_layout = 'half' %}
{% elsif gallery.size >= 3 %}
{% assign gallery_layout = 'third' %}
{% else %}
{% assign gallery_layout = '' %}
{% endif %}
<figure class="{{ gallery_layout }} {{ include.class }}">
{% for img in gallery %}
{% if img.url %}
<a href=
{% if img.url contains "://" %}
"{{ img.url }}"
{% else %}
"{{ img.url | prepend: "/images/" | prepend: base_path }}"
{% endif %}
{% if img.title %}title="{{ img.title }}"{% endif %}
>
<img src=
{% if img.image_path contains "://" %}
"{{ img.image_path }}"
{% else %}
"{{ img.image_path | prepend: "/images/" | prepend: base_path }}"
{% endif %}
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
</a>
{% else %}
<img src=
{% if img.image_path contains "://" %}
"{{ img.image_path }}"
{% else %}
"{{ img.image_path | prepend: "/images/" | prepend: base_path }}"
{% endif %}
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
{% endif %}
{% endfor %}
{% if include.caption %}
<figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption>
{% endif %}
</figure>
-47
View File
@@ -1,47 +0,0 @@
<!--
# Jekyll Group-By-Array 0.1.0
# https://github.com/mushishi78/jekyll-group-by-array
# © 2015 Max White <mushishi78@gmail.com>
# MIT License
-->
<!-- Initialize -->
{% assign __empty_array = '' | split: ',' %}
{% assign group_names = __empty_array %}
{% assign group_items = __empty_array %}
<!-- Map -->
{% assign __names = include.collection | map: include.field %}
<!-- Flatten -->
{% assign __names = __names | join: ',' | join: ',' | split: ',' %}
<!-- Uniq -->
{% assign __names = __names | sort %}
{% for name in __names | sort %}
<!-- If not equal to previous then it must be unique as sorted -->
{% unless name == previous %}
<!-- Push to group_names -->
{% assign group_names = group_names | push: name %}
{% endunless %}
{% assign previous = name %}
{% endfor %}
<!-- group_items -->
{% for name in group_names %}
<!-- Collect if contains -->
{% assign __item = __empty_array %}
{% for __element in include.collection %}
{% if __element[include.field] contains name %}
{% assign __item = __item | push: __element %}
{% endif %}
{% endfor %}
<!-- Push to group_items -->
{% assign group_items = group_items | push: __item %}
{% endfor %}
-22
View File
@@ -1,22 +0,0 @@
{% include base_path %}
<meta charset="utf-8">
{% include seo.html %}
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ base_path }}/feed.xml{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
</script>
<!-- For all browsers -->
<link rel="stylesheet" href="{{ base_path }}/assets/css/main.css">
<link rel="stylesheet" href="{{ base_path }}/assets/icons/octicons/font/octicons.min.css">
<meta http-equiv="cleartype" content="on">
-6
View File
@@ -1,6 +0,0 @@
<!-- start custom head snippets -->
<!-- insert favicons. use http://realfavicongenerator.net/ -->
<link rel='shortcut icon' type='image/x-icon' href='{{ site.baseurl }}/images/favicon-32x32.png' />
<!-- end custom head snippets -->
-38
View File
@@ -1,38 +0,0 @@
{% include base_path %}
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{% if page.summary %}{{ page.summary | strip_html | strip_newlines | truncate: 160 }}{% endif %}">
<meta name="keywords" content="{{page.tags}}{% if page.tags %}, {% endif %} {{page.keywords}}">
<title>{% if page.homepage == true %} {{site.title}} {% elsif page.title %}{{ page.title }}{% endif %}</title>
<link rel="stylesheet" href="{{ "/css/customstyles.css" | prepend: site.baseurl | prepend: site.url }}">
<link rel="stylesheet" href="{{ "/css/printstyles.css" | prepend: site.baseurl | prepend: site.url }}">
<link rel="stylesheet" href="{{ "/css/font-awesome.min.css" | prepend: site.baseurl | prepend: site.url }}">
<link rel="stylesheet" href="{{site.url}}/{{site.baseurl}}/css/pygments/{{site.pygments-css}}.css">
<!--
<link rel="stylesheet" href="{{ "/css/bootstrap.min.css" | prepend: site.baseurl | prepend: site.url }}">
<link rel="stylesheet" href="{{ "/css/modern-business.css" | prepend: site.baseurl | prepend: site.url }}">
<link rel="stylesheet" href="{{ "/css/theme-blue.css" | prepend: site.baseurl | prepend: site.url }}">
<link rel="stylesheet" href="{{ "/css/syntax.css" | prepend: site.baseurl | prepend: site.url }}">
/-->
<script>
Prince.addScriptFunc("datestamp", function() {
return "PDF last generated: {{ site.time | date: '%B %d, %Y' }}";
});
</script>
<script>
Prince.addScriptFunc("guideName", function() {
return "{{site.title}} User Guide";
});
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<script type="text/javascript" src="{{ base_path }}/assets/js/ConfigMathJax.js"></script>
-10
View File
@@ -1,10 +0,0 @@
{% capture imagePath %}/{{ include.name }}{% endcapture %}
{% if include.caption %}
<figure>
<img src="{{ site.baseurl }}/images{{ imagePath }}" {% if include.alt %} alt="{{ include.alt }}" {% endif %} {% if include.width %} width="{{ include.width }}" style="display: block; margin-left: auto; margin-right: auto" {% endif %}/>
<figcaption>{{ include.caption }}</figcaption>
</figure>
{% else %}
<img src="{{ site.baseurl }}/images{{ imagePath }}" {% if include.alt %} alt="{{ include.alt }}" {% endif %} {% if include.width %} width="{{ include.width }}" style="display: block; margin-left: auto; margin-right: auto" {% endif %}/>
{% endif %}
-24
View File
@@ -1,24 +0,0 @@
{% include base_path %}
<div class="masthead">
<div class="masthead__inner-wrap">
<div class="masthead__menu">
<nav id="site-nav" class="greedy-nav">
<button><div class="navicon"></div></button>
<ul class="visible-links">
<li class="masthead__menu-item masthead__menu-item--lg"><a href="{{ base_path }}/">{{ site.title }}</a></li>
{% for link in site.data.navigation.main %}
{% if link.url contains 'http' %}
{% assign domain = '' %}
{% else %}
{% assign domain = base_path %}
{% endif %}
<li class="masthead__menu-item"><a href="{{ domain }}{{ link.url }}"><span class="{{ link.icon }}"></span> {{ link.title }}</a></li>
{% endfor %}
<li class="masthead__menu-item"><a href="https://github.com/paboyle/Grid" title="Github repository page"><span class="mega-octicon octicon-mark-github vertical-middle"></span></a></li>
</ul>
<ul class="hidden-links hidden"></ul>
</nav>
</div>
</div>
</div>
-52
View File
@@ -1,52 +0,0 @@
{% include base_path %}
{% assign navigation = site.data.navigation[include.nav] %}
<nav class="nav__list">
{% if page.sidebar.title %}<header><h4 class="nav__title" style="padding: 0;">{{ page.sidebar.title }}</h4></header>{% endif %}
<ul>
{% for nav in navigation %}
<li>
{% if nav.url %}
{% comment %}internal/external URL check{% endcomment %}
{% if nav.url contains "://" %}
{% assign domain = "" %}
{% else %}
{% assign domain = base_path %}
{% endif %}
<a href="{{ domain }}{{ nav.url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
{% else %}
<span class="nav__sub-title">{{ nav.title }}</span>
{% endif %}
{% if nav.children != null %}
<ul>
{% for child in nav.children %}
{% comment %}internal/external URL check{% endcomment %}
{% if child.url contains "://" %}
{% assign domain = "" %}
{% else %}
{% assign domain = base_path %}
{% endif %}
{% comment %}set "active" class on current page{% endcomment %}
{% if child.url == page.url %}
{% assign active = "active" %}
{% else %}
{% assign active = "" %}
{% endif %}
{% if child.disable == "yes" %}
{% assign disable = "nav__noclick" %}
{% else %}
{% assign disable = "" %}
{% endif %}
<li><a href="{{ domain }}{{ child.url }}" class="{{ disable }} {{ active }}">{{ child.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
</nav>
-55
View File
@@ -1,55 +0,0 @@
{% include base_path %}
{% if page.header.image contains "://" %}
{% capture img_path %}{{ page.header.image }}{% endcapture %}
{% else %}
{% capture img_path %}{{ page.header.image | prepend: "/images/" | prepend: base_path }}{% endcapture %}
{% endif %}
{% if page.header.cta_url contains "://" %}
{% capture cta_path %}{{ page.header.cta_url }}{% endcapture %}
{% else %}
{% capture cta_path %}{{ page.header.cta_url | prepend: base_path }}{% endcapture %}
{% endif %}
{% if page.header.overlay_image contains "://" %}
{% capture overlay_img_path %}{{ page.header.overlay_image }}{% endcapture %}
{% elsif page.header.overlay_image %}
{% capture overlay_img_path %}{{ page.header.overlay_image | prepend: "/images/" | prepend: base_path }}{% endcapture %}
{% endif %}
{% if page.header.overlay_filter contains "rgba" %}
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
{% elsif page.header.overlay_filter %}
{% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
{% endif %}
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}), {% endif %}url('{{ overlay_img_path }}');{% endif %}"
>
{% if page.header.overlay_color or page.header.overlay_image %}
<div class="wrapper">
<h1 class="page__title" itemprop="headline">
{% if paginator %}
{{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}
{% else %}
{{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }}
{% endif %}
</h1>
{% if page.excerpt %}
<p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p>
{% endif %}
{% if site.read_time and page.read_time %}
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
{% endif %}
{% if page.header.cta_url %}
<p><a href="{{ cta_path }}" class="btn btn--light-outline btn--large">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
{% endif %}
</div>
{% else %}
<img src="{{ img_path }}" alt="{{ page.title }}" class="page__hero-image">
{% endif %}
{% if page.header.caption %}
<span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
{% endif %}
</div>
-9
View File
@@ -1,9 +0,0 @@
{% include base_path %}
{% if site.tag_archive.type and page.tags[0] %}
{% include tag-list.html %}
{% endif %}
{% if site.category_archive.type and page.categories[0] %}
{% include category-list.html %}
{% endif %}
-70
View File
@@ -1,70 +0,0 @@
{% include base_path %}
{% if paginator.total_pages > 1 %}
<nav class="pagination">
<ul>
{% comment %} Link for previous page {% endcomment %}
{% if paginator.previous_page %}
{% if paginator.previous_page == 1 %}
<li><a href="{{ base_path }}/">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
{% else %}
<li><a href="{{ base_path }}/page{{ paginator.previous_page }}/">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
{% endif %}
{% else %}
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
{% endif %}
{% comment %} First page {% endcomment %}
{% if paginator.page == 1 %}
<li><a href="#" class="disabled current">1</a></li>
{% else %}
<li><a href="{{ base_path }}/">1</a></li>
{% endif %}
{% assign page_start = 2 %}
{% if paginator.page > 4 %}
{% assign page_start = paginator.page | minus: 2 %}
{% comment %} Ellipsis for truncated links {% endcomment %}
<li><a href="#" class="disabled">&hellip;</a></li>
{% endif %}
{% assign page_end = paginator.total_pages | minus: 1 %}
{% assign pages_to_end = paginator.total_pages | minus: paginator.page %}
{% if pages_to_end > 4 %}
{% assign page_end = paginator.page | plus: 2 %}
{% endif %}
{% for index in (page_start..page_end) %}
{% if index == paginator.page %}
<li><a href="{{ base_path }}/page{{ index }}/" class="disabled current">{{ index }}</a></li>
{% else %}
{% comment %} Distance from current page and this link {% endcomment %}
{% assign dist = paginator.page | minus: index %}
{% if dist < 0 %}
{% comment %} Distance must be a positive value {% endcomment %}
{% assign dist = 0 | minus: dist %}
{% endif %}
<li><a href="{{ base_path }}/page{{ index }}/">{{ index }}</a></li>
{% endif %}
{% endfor %}
{% comment %} Ellipsis for truncated links {% endcomment %}
{% if pages_to_end > 3 %}
<li><a href="#" class="disabled">&hellip;</a></li>
{% endif %}
{% if paginator.page == paginator.total_pages %}
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
{% else %}
<li><a href="{{ base_path }}/page{{ paginator.total_pages }}/">{{ paginator.total_pages }}</a></li>
{% endif %}
{% comment %} Link next page {% endcomment %}
{% if paginator.next_page %}
<li><a href="{{ base_path }}/page{{ paginator.next_page }}/">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
{% else %}
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
{% endif %}
</ul>
</nav>
{% endif %}
-16
View File
@@ -1,16 +0,0 @@
{% include base_path %}
{% if page.previous or page.next %}
<nav class="pagination">
{% if page.previous %}
<a href="{{ base_path }}{{ page.previous.url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
{% else %}
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
{% endif %}
{% if page.next %}
<a href="{{ base_path }}{{ page.next.url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
{% else %}
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
{% endif %}
</nav>
{% endif %}
-17
View File
@@ -1,17 +0,0 @@
{% if post.read_time %}
{% assign words = post.content | strip_html | number_of_words %}
{% elsif page.read_time %}
{% assign words = page.content | strip_html | number_of_words %}
{% endif %}
{% if site.words_per_minute %}
{% if words < 180 %}
{{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
{% elsif words < 360 %}
1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
{% else %}
{{ words | divided_by:site.words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
{% endif %}
{% else %}
{{ site.data.ui-text[site.locale].undefined_wpm | "Undefined parameter words_per_minute at _config.yml" }}
{% endif %}
-4
View File
@@ -1,4 +0,0 @@
<script src="{{ base_path }}/assets/js/main.min.js"></script>
{% include analytics.html %}
{% include /comments-providers/scripts.html %}
-145
View File
@@ -1,145 +0,0 @@
{% include base_path %}
<!-- begin SEO -->
{% if site.url %}
{% assign seo_url = site.url | append: site.baseurl %}
{% endif %}
{% assign seo_url = seo_url | default: site.github.url %}
{% if page.title %}
{% assign seo_title = page.title | append: " " | append: site.title_separator | append: " " | append: site.title %}
{% endif %}
{% if seo_title %}
{% assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once %}
{% endif %}
{% if site.url %}
{% assign canonical_url = page.url | replace: "index.html", "" | prepend: site.url %}
{% endif %}
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ site.title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
{% assign seo_description = page.description | default: page.excerpt | default: site.description %}
{% if seo_description %}
{% assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once %}
{% endif %}
{% assign seo_author = page.author | default: page.author[0] | default: site.author[0] %}
{% if seo_author %}
{% if seo_author.twitter %}
{% assign seo_author_twitter = seo_author.twitter %}
{% else %}
{% if site.data.authors and site.data.authors[seo_author] %}
{% assign seo_author_twitter = site.data.authors[seo_author].twitter %}
{% else %}
{% assign seo_author_twitter = seo_author %}
{% endif %}
{% endif %}
{% assign seo_author_twitter = seo_author_twitter | replace: "@", "" %}
{% endif %}
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en" }}">
<meta property="og:site_name" content="{{ site.title }}">
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
{% if seo_url %}
<link rel="canonical" href="{{ page.url | prepend: seo_url | replace: "/index.html", "/" }}">
<meta property="og:url" content="{{ page.url | prepend: seo_url | replace: "/index.html", "/" }}">
{% endif %}
{% if page.excerpt %}
<meta property="og:description" content="{{ seo_description }}">
{% endif %}
{% if site.twitter.username %}
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
<meta name="twitter:description" content="{{ seo_description }}">
<meta name="twitter:url" content="{{ canonical_url }}">
{% if page.header.image %}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="{% if page.header.image contains "://" %}{{ page.header.image }}{% else %}{{ page.header.image | prepend: "/images/" | prepend: base_path }}{% endif %}">
{% else %}
<meta name="twitter:card" content="summary">
{% if page.header.teaser %}
<meta name="twitter:image" content="{% if page.header.teaser contains "://" %}{{ page.header.teaser }}{% else %}{{ page.header.teaser | prepend: "/images/" | prepend: base_path }}{% endif %}">
{% elsif site.og_image %}
<meta name="twitter:image" content="{{ site.og_image | prepend: "/images/" | prepend: base_path }}">
{% endif %}
{% endif %}
{% if seo_author_twitter %}
<meta name="twitter:creator" content="@{{ seo_author_twitter }}">
{% endif %}
{% endif %}
{% if site.facebook %}
{% if site.facebook.publisher %}
<meta property="article:publisher" content="{{ site.facebook.publisher }}">
{% endif %}
{% if site.facebook.app_id %}
<meta property="fb:app_id" content="{{ site.facebook.app_id }}">
{% endif %}
{% endif %}
{% if page.header.image %}
<meta property="og:image" content="{% if page.header.image contains "://" %}{{ page.header.image }}{% else %}{{ page.header.image | prepend: "/images/" | prepend: base_path }}{% endif %}">
{% elsif page.header.overlay_image %}
<meta property="og:image" content="{% if page.header.overlay_image contains "://" %}{{ page.header.overlay_image }}{% else %}{{ page.header.overlay_image | prepend: "/images/" | prepend: base_path }}{% endif %}">
{% elsif page.header.teaser %}
<meta property="og:image" content="{% if page.header.teaser contains "://" %}{{ page.header.teaser }}{% else %}{{ page.header.teaser | prepend: "/images/" | prepend: base_path }}{% endif %}">
{% elsif site.og_image %}
<meta property="og:image" content="{% if site.og_image contains "://" %}{{ site.og_image }}{% else %}{{ site.og_image | prepend: "/images/" | prepend: base_path }}{% endif %}">
{% endif %}
{% if page.date %}
<meta property="og:type" content="article">
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
{% endif %}
{% if paginator.previous_page %}
<link rel="prev" href="{{ paginator.previous_page_path | prepend: seo_url }}">
{% endif %}
{% if paginator.next_page %}
<link rel="next" href="{{ paginator.next_page_path | prepend: seo_url }}">
{% endif %}
{% if site.og_image %}
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Organization",
"url": {{ seo_url | jsonify }},
"logo": {{ site.og_image | prepend: "/images/" | prepend: base_path | jsonify }}
}
</script>
{% endif %}
{% if site.social %}
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "{% if site.social.type %}{{ site.social.type }}{% else %}Person{% endif %}",
"name" : "{{ site.social.name | default: site.name }}",
"url" : {{ seo_url | jsonify }},
"sameAs" : {{ site.social.links | jsonify }}
}
</script>
{% endif %}
{% if site.google_site_verification %}
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
{% endif %}
{% if site.bing_site_verification %}
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
{% endif %}
{% if site.alexa_site_verification %}
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
{% endif %}
{% if site.yandex_site_verification %}
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
{% endif %}
<!-- end SEO -->
-25
View File
@@ -1,25 +0,0 @@
{% include base_path %}
{% if page.author_profile or layout.author_profile or page.sidebar %}
<div class="sidebar sticky">
{% if page.author_profile or layout.author_profile %}{% include author-profile.html %}{% endif %}
{% if page.sidebar %}
{% for s in page.sidebar %}
{% if s.image %}
<img src=
{% if s.image contains "://" %}
"{{ s.image }}"
{% else %}
"{{ s.image | prepend: "/images/" | prepend: base_path }}"
{% endif %}
alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}">
{% endif %}
{% if s.title %}<h3>{{ s.title }}</h3>{% endif %}
{% if s.text %}{{ s.text | markdownify }}{% endif %}
{% endfor %}
{% if page.sidebar.nav %}
{% include nav_list nav=page.sidebar.nav %}
{% endif %}
{% endif %}
</div>
{% endif %}
-15
View File
@@ -1,15 +0,0 @@
{% include base_path %}
<section class="page__share">
{% if site.data.ui-text[site.locale].share_on_label %}
<h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4>
{% endif %}
<a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username }}&{% endif %}text={{ page.title }} {{ base_path }}{{ page.url }}" class="btn btn--twitter" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
<a href="https://www.facebook.com/sharer/sharer.php?u={{ base_path }}{{ page.url }}" class="btn btn--facebook" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
<a href="https://plus.google.com/share?url={{ base_path }}{{ page.url }}" class="btn btn--google-plus" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ base_path }}{{ page.url }}" class="btn btn--linkedin" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
</section>
-28
View File
@@ -1,28 +0,0 @@
{% include base_path %}
{% case site.tag_archive.type %}
{% when "liquid" %}
{% assign path_type = "#" %}
{% when "jekyll-archives" %}
{% assign path_type = nil %}
{% endcase %}
{% if site.tag_archive.path %}
{% comment %}
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
{% endcomment %}
{% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
{% assign tag_hashes = (page_tags | split: ',' | sort:0) %}
<p class="page__taxonomy">
<strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
<span itemprop="keywords">
{% for hash in tag_hashes %}
{% assign keyValue = hash | split: '#' %}
{% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
<a href="{{ base_path }}{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
{% endfor %}
</span>
</p>
{% endif %}
-7
View File
@@ -1,7 +0,0 @@
<aside class="sidebar__right">
<nav class="toc" markdown="1">
<header><h4 class="nav__title"><i class="fa fa-{{ include.icon | default: 'file-text' }}"></i> {{ include.title | default: site.data.ui-text[site.locale].toc_label }}</h4></header>
* Auto generated table of contents
{:toc .toc__menu}
</nav>
</aside>
-16
View File
@@ -1,16 +0,0 @@
---
layout: default
author_profile: false
---
<div id="main" role="main">
{% include sidebar.html %}
<div class="archive">
<h1 class="page__title">{{ page.title }}</h1>
{% include base_path %}
{% for post in page.posts %}
{% include archive-single.html %}
{% endfor %}
</div>
</div>
-24
View File
@@ -1,24 +0,0 @@
---
layout: default
---
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}
{% unless paginator %}
{% include breadcrumbs.html %}
{% endunless %}
{% endif %}
<div id="main" role="main">
{% include sidebar.html %}
<div class="archive">
{% unless page.header.overlay_color or page.header.overlay_image %}
<h1 class="page__title">{{ page.title }}</h1>
{% endunless %}
{{ content }}
</div>
</div>
-10
View File
@@ -1,10 +0,0 @@
---
# Jekyll layout that compresses HTML
# v3.0.2
# http://jch.penibelst.de/
# © 20142015 Anatol Broder
# MIT License
---
{% capture _LINE_FEED %}
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
-30
View File
@@ -1,30 +0,0 @@
---
---
{% include base_path %}
<!doctype html>
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
<head>
{% include head.html %}
{% include head/custom.html %}
</head>
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
{% include browser-upgrade.html %}
{% include masthead.html %}
{{ content }}
<div class="page__footer">
<footer>
{% include footer/custom.html %}
{% include footer.html %}
</footer>
</div>
{% include scripts.html %}
</body>
</html>
-19
View File
@@ -1,19 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<html>
<head>
{% include head_print.html %}
</head>
<body class="{% if page.type == " title "%}title{% elsif page.type == "frontmatter " %}frontmatter{% elsif page.type == "first_page
" %}first_page{% endif %} print">
<!-- Page Content -->
<div class="container">
<!-- Content Column -->
<div class="col-md-9">
{{content}}
</div>
</div>
<!-- /.container -->
</body>
</html>
-18
View File
@@ -1,18 +0,0 @@
---
layout: default_print
comments: false
---
<div class="post-header">
<h1 class="post-title-main" id="{{page.permalink | replace: '/', '' }}">{{ page.excerpt }}</h1>
</div>
<div class="post-content">
{% if page.summary %}
<div class="summary">{{page.summary}}</div>
{% endif %}
{{ content }}
</div>
-81
View File
@@ -1,81 +0,0 @@
---
layout: default
---
{% include base_path %}
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}
{% unless paginator %}
{% include breadcrumbs.html %}
{% endunless %}
{% endif %}
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML">
</script>
<div id="main" role="main">
{% include sidebar.html %}
<article class="page" itemscope itemtype="http://schema.org/CreativeWork">
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
{% if page.modified %}<meta itemprop="dateModified" content="{{ page.modified | date: "%B %d, %Y" }}">{% endif %}
<div class="page__inner-wrap">
{% unless page.header.overlay_color or page.header.overlay_image %}
<header>
{% if page.title %}<h1 class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
{% if page.read_time %}
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
{% endif %}
</header>
{% endunless %}
<section class="page__content" itemprop="text">
{{ content }}
{% if page.link %}<div><a href="{{ page.link }}" class="btn">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
</section>
<footer class="page__meta">
{% if site.data.ui-text[site.locale].meta_label %}
<h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4>
{% endif %}
{% include page__taxonomy.html %}
{% if page.modified %}
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.modified | date: "%Y-%m-%d" }}">{{ page.modified | date: "%B %d, %Y" }}</time></p>
{% elsif page.date %}
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: "%B %d, %Y" }}</time></p>
{% endif %}
</footer>
{% if page.share %}{% include social-share.html %}{% endif %}
{% include post_pagination.html %}
</div>
{% if site.comments.provider and page.comments %}
{% include comments.html %}
{% endif %}
</article>
{% comment %}<!-- only show related on a post page when not disabled -->{% endcomment %}
{% if page.id and page.related and site.related_posts.size > 0 %}
<div class="page__related">
{% if site.data.ui-text[site.locale].related_label %}
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
{% endif %}
<div class="grid__wrapper">
{% for post in site.related_posts limit:4 %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
</div>
{% endif %}
</div>
-22
View File
@@ -1,22 +0,0 @@
---
layout: default
---
{% include base_path %}
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% endif %}
<div id="main" role="main">
<article class="splash" itemscope itemtype="http://schema.org/CreativeWork">
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
{% if page.modified %}<meta itemprop="dateModified" content="{{ page.modified | date: "%B %d, %Y" }}">{% endif %}
<section class="page__content" itemprop="text">
{{ content }}
</section>
</article>
</div>
-17
View File
@@ -1,17 +0,0 @@
---
title: "Page Not Found"
layout: single
excerpt: "Page not found. Your pixels are in another canvas."
sitemap: false
permalink: /404.html
---
Sorry, but the page you were trying to view does not exist --- perhaps you can try searching for it below.
<script type="text/javascript">
var GOOG_FIXURL_LANG = 'en';
var GOOG_FIXURL_SITE = '{{ site.url }}'
</script>
<script type="text/javascript"
src="//linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js">
</script>
-48
View File
@@ -1,48 +0,0 @@
---
layout: splash
permalink: /about/
author_profile: false
title: "About"
excerpt: "The project and the authors"
header:
overlay_color: "#5DADE2"
---
{% include base_path %}
## Main authors and mantainers
* Peter Boyle
* Guido Cossu
* Azusa Yamaguchi
* Antonin Portelli
## Description
This library provides data parallel C++ container classes with internal memory layout
that is transformed to map efficiently to SIMD architectures. CSHIFT facilities
are provided, similar to HPF and cmfortran, and user control is given over the mapping of
array indices to both MPI tasks and SIMD processing elements.
* Identically shaped arrays then be processed with perfect data parallelisation.
* Such identically shapped arrays are called conformable arrays.
The transformation is based on the observation that Cartesian array processing involves
identical processing to be performed on different regions of the Cartesian array.
The library will both geometrically decompose into MPI tasks and across SIMD lanes.
Local vector loops are parallelised with OpenMP pragmas.
Data parallel array operations can then be specified with a SINGLE data parallel paradigm, but
optimally use MPI, OpenMP and SIMD parallelism under the hood. This is a significant simplification
for most programmers.
The layout transformations are parametrised by the SIMD vector length. This adapts according to the architecture.
Presently SSE4 (128 bit) AVX, AVX2 (256 bit) and IMCI and AVX512 (512 bit) targets are supported (ARM NEON and BG/Q QPX on the way).
These are presented as `vRealF`, `vRealD`, `vComplexF`, and `vComplexD` internal vector data types. These may be useful in themselves for other programmers.
The corresponding scalar types are named `RealF`, `RealD`, `ComplexF` and `ComplexD`.
MPI, OpenMP, and SIMD parallelism are present in the library.
Please see [this paper](https://arxiv.org/abs/1512.03487) for more detail.
-34
View File
@@ -1,34 +0,0 @@
---
title : "API Documentation"
author_profile: false
excerpt: "Coordinates"
header:
overlay_color: "#5DADE2"
permalink: /docs/API/coordinates.html
sidebar:
nav : docs
---
The Grid is define on a N-dimensional set of integer coordinates.
The maximum dimension is eight, and indexes in this space make use of the `Coordinate` class.
The coordinate class shares a similar interface to `std::vector<int>`, but contains all data within the
object, and has a fixed maximum length (template parameter).
**Example**:
```c++
const int Nd=4;
Coordinate point(Nd);
for(int i=0;i<Nd;i++)
point[i] = 1;
std::cout<< point <<std::endl;
point.resize(3);
std::cout<< point <<std::endl;
```
This enables the coordinates to be manipulated without heap allocation or thread contention,
and avoids introducing STL functions into GPU code, but does so at the expense of introducing
a maximum dimensionality. This limit is easy to change (`lib/util/Coordinate.h`).
-90
View File
@@ -1,90 +0,0 @@
---
title : "API Documentation"
author_profile: false
excerpt: "Grids"
header:
overlay_color: "#5DADE2"
permalink: /docs/API/grids.html
sidebar:
nav : docs
---
A `Grid` object defines the geometry of a global cartesian array, and through inheritance
provides access to message passing decomposition, the local lattice, and the message passing primitives.
The constructor requires parameters to indicate how the spatial (and temporal) indices
are decomposed across MPI tasks and SIMD lanes of the vector length.
We use a partial vectorisation transformation, must select
which space-time dimensions participate in SIMD vectorisation.
The Lattice containers are defined to have opaque internal layout, hiding this layout transformation.
We define GridCartesian and GridRedBlackCartesian which both inherit from `GridBase`:
```c++
class GridCartesian : public GridBase
class GridRedBlackCartesian: public GridBase
```
The simplest Cartesian Grid constructor distributes across `MPI_COMM_WORLD`:
```c++
/////////////////////////////////////////////////////////////////////////
// Construct from comm world
/////////////////////////////////////////////////////////////////////////
GridCartesian(const Coordinate &dimensions,
const Coordinate &simd_layout,
const Coordinate &processor_grid);
```
A second constructor will create a child communicator from a previously declared Grid.
This allows to subdivide the processor grid, and also to define lattices of differing dimensionalities and sizes,
useful for both Chiral fermions, lower dimensional operations, and multigrid:
```c++
/////////////////////////////////////////////////////////////////////////
// Constructor takes a parent grid and possibly subdivides communicator.
/////////////////////////////////////////////////////////////////////////
GridCartesian(const Coordinate &dimensions,
const Coordinate &simd_layout,
const Coordinate &processor_grid,
const GridCartesian &parent,int &split_rank);
```
The Grid object provides much `internal` functionality to map a lattice site to
a node and lexicographic index. These are not needed by code interfacing
to the data parallel layer.
**Example** (`tests/solver/Test_split_grid.cc`):
```c++
const int Ls=8;
////////////////////////////////////////////
// Grids distributed across full machine
// pick up default command line args
////////////////////////////////////////////
Grid_init(&argc,&argv);
Coordinate latt_size = GridDefaultLatt();
Coordinate simd_layout = GridDefaultSimd(Nd,vComplex::Nsimd());
Coordinate mpi_layout = GridDefaultMpi();
GridCartesian * UGrid = SpaceTimeGrid::makeFourDimGrid(GridDefaultLatt(),
GridDefaultSimd(Nd,vComplex::Nsimd()),GridDefaultMpi());
GridCartesian * FGrid = SpaceTimeGrid::makeFiveDimGrid(Ls,UGrid);
GridRedBlackCartesian * rbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(UGrid);
GridRedBlackCartesian * FrbGrid = SpaceTimeGrid::makeFiveDimRedBlackGrid(Ls,UGrid);
/////////////////////////////////////////////
// Split into N copies of 1^4 mpi communicators
/////////////////////////////////////////////
Coordinate mpi_split (mpi_layout.size(),1);
GridCartesian * SGrid = new GridCartesian(GridDefaultLatt(),
GridDefaultSimd(Nd,vComplex::Nsimd()),
mpi_split,
*UGrid);
GridCartesian * SFGrid = SpaceTimeGrid::makeFiveDimGrid(Ls,SGrid);
GridRedBlackCartesian * SrbGrid = SpaceTimeGrid::makeFourDimRedBlackGrid(SGrid);
GridRedBlackCartesian * SFrbGrid = SpaceTimeGrid::makeFiveDimRedBlackGrid(Ls,SGrid);
```
-32
View File
@@ -1,32 +0,0 @@
---
title : "API Documentation"
author_profile: false
excerpt: "Data parallel API"
header:
overlay_color: "#5DADE2"
permalink: /docs/API/introduction.html
sidebar:
nav : docs
---
Data parallel array indices are divided into two types.
* Internal indices, such as complex, colour, spin degrees of freedom
* spatial (space-time) indices.
The ranges of all internal degrees are determined by template parameters,
and known at compile time. The ranges of spatial indices are dynamic, run time
values and the Cartesian structure information is contained and accessed via `Grid` objects.
Grid objects are the controlling entity for the decomposition of a distributed `Lattice`
array across MPI tasks, nodes, SIMD lanes, accelerators. Threaded loops are used
as appropriate on host code.
Data parallel operations can only be performed between Lattice objects constructed
from the same Grid pointer. These are called `conformable` operations.
We will focus initially on the internal indices as these are the building blocks assembled
in Lattice container classes. Every Lattice container class constructor requires a Grid object
pointer.
-560
View File
@@ -1,560 +0,0 @@
---
title : "API Documentation"
author_profile: false
excerpt: "Lattice containers"
header:
overlay_color: "#5DADE2"
permalink: /docs/API/lattice_containers.html
sidebar:
nav : docs
---
{% include toc icon="gears" title="Contents" %}
Lattice objects may be constructed to contain the local portion of a distribued array of any tensor type.
For performance reasons the tensor type uses a vector `Real` or `Complex` as the fundamental datum.
Every lattice requires a `GridBase` object pointer to be provided in its constructor. Memory is allocated
at construction time. If a Lattice is passed a RedBlack grid, it allocates
half the storage of the full grid, and may either store the red or black checkerboard. The Lattice object
will automatically track through assignments which checkerboard it refers to.
For example, shifting a Even checkerboard by an odd distance produces an Odd result field.
Struct of array objects are defined, and used in the template parameters to the lattice class.
**Example** (`lib/qcd/QCD.h`):
```c++
template<typename vtype> using iSpinMatrix = iScalar<iMatrix<iScalar<vtype>, Ns> >;
typedef iSpinMatrix<ComplexF> SpinMatrixF; //scalar
typedef iSpinMatrix<vComplexF> vSpinMatrixF;//vectorised
typedef Lattice<vSpinMatrixF> LatticeSpinMatrixF;
```
The full range of QCD relevant lattice objects is given below.
|-----------|------------|----------|-----------|---------------|---------------------------------|--------------------------|
| Lattice | Lorentz | Spin | Colour | scalar_type | Field | Synonym |
|-----------|------------|----------|-----------|---------------|---------------------------------|--------------------------|
|`Vector` | `Scalar` | `Scalar` | `Scalar` | `RealD` | `LatticeRealD` | N/A |
|`Vector` | `Scalar` | `Scalar` | `Scalar` | `ComplexD` | `LatticeComplexD` | N/A |
|`Vector` | `Scalar` | `Scalar` | `Matrix` | `ComplexD` | `LatticeColourMatrixD` | `LatticeGaugeLink` |
|`Vector` | `Vector` | `Scalar` | `Matrix` | `ComplexD` | `LatticeLorentzColourMatrixD` | `LatticeGaugeFieldD` |
|`Vector` | `Scalar` | `Vector` | `Vector` | `ComplexD` | `LatticeSpinColourVectorD` | `LatticeFermionD` |
|`Vector` | `Scalar` | `Vector` | `Vector` | `ComplexD` | `LatticeHalfSpinColourVectorD` | `LatticeHalfFermionD` |
|`Vector` | `Scalar` | `Matrix` | `Matrix` | `ComplexD` | `LatticeSpinColourMatrixD` | `LatticePropagatorD` |
|-----------|------------|----------|-----------|---------------|---------------------------------|--------------------------|
Additional single precison variants are defined with the suffix `F`.
Other lattice objects can be defined using the sort of typedef's shown above if needed.
### Opaque containers
The layout within the container is complicated to enable maximum opportunity for vectorisation, and
is opaque from the point of view of the API definition. The key implementation observation is that
so long as data parallel operations are performed and adjacent SIMD lanes correspond to well separated
lattice sites, then identical operations are performed on all SIMD lanes and enable good vectorisation.
Because the layout is opaque, import and export routines from naturally ordered x,y,z,t arrays
are provided (`lib/lattice/Lattice_transfer.h`):
```c++
unvectorizeToLexOrdArray(std::vector<sobj> &out, const Lattice<vobj> &in);
vectorizeFromLexOrdArray(std::vector<sobj> &in , Lattice<vobj> &out);
```
The Lexicographic order of data in the external vector fields is defined by (`lib/util/Lexicographic.h`):
```c++
Lexicographic::IndexFromCoor(const Coordinate &lcoor, int &lex,Coordinate *local_dims);
```
This ordering is $$x + L_x * y + L_x*L_y*z + L_x*L_y*L_z *t$$
Peek and poke routines are provided to perform single site operations. These operations are
extremely low performance and are not intended for algorithm development or performance critical code.
The following are "collective" operations and involve communication between nodes. All nodes receive the same
result by broadcast from the owning node:
```c++
void peekSite(sobj &s,const Lattice<vobj> &l,const Coordinate &site);
void pokeSite(const sobj &s,Lattice<vobj> &l,const Coordinate &site);
```
The following are executed independently by each node:
```c++
void peekLocalSite(sobj &s,const Lattice<vobj> &l,Coordinate &site);
void pokeLocalSite(const sobj &s,Lattice<vobj> &l,Coordinate &site);
```
Lattices of one tensor type may be transformed into lattices of another tensor type by
peeking and poking specific indices in a data parallel manner:
```c++
template<int Index,class vobj> // Vector data parallel index peek
auto PeekIndex(const Lattice<vobj> &lhs,int i);
template<int Index,class vobj> // Matrix data parallel index peek
auto PeekIndex(const Lattice<vobj> &lhs,int i,int j);
template<int Index,class vobj> // Vector poke
void PokeIndex(Lattice<vobj> &lhs,const Lattice<> & rhs,int i)
template<int Index,class vobj> // Matrix poke
void PokeIndex(Lattice<vobj> &lhs,const Lattice<> & rhs,int i,int j)
```
The inconsistent capitalisation on the letter P is due to an obscure bug in g++ that has not to
our knowledge been fixed in any version. The bug was reported in 2016.
### Global Reduction operations
Reduction operations for any lattice field are provided. The result is identical on each computing node
that is part of the relevant Grid communicator:
```c++
template<class vobj>
RealD norm2(const Lattice<vobj> &arg);
template<class vobj>
ComplexD innerProduct(const Lattice<vobj> &left,const Lattice<vobj> &right);
template<class vobj>
vobj sum(const Lattice<vobj> &arg)
```
### Site local reduction operations
Internal indices may be reduced, site by site, using the following routines:
```c++
template<class vobj>
auto localNorm2 (const Lattice<vobj> &rhs)
template<class vobj>
auto localInnerProduct (const Lattice<vobj> &lhs,const Lattice<vobj> &rhs)
```
### Outer product
A site local outer product is defined:
```c++
template<class ll,class rr>
auto outerProduct (const Lattice<ll> &lhs,const Lattice<rr> &rhs)
```
### Slice operations
Slice operations are defined to operate on one lower dimension than the full lattice. The omitted dimension
is the parameter orthogdim:
```c++
template<class vobj>
void sliceSum(const Lattice<vobj> &Data,
std::vector<typename vobj::scalar_object> &result,
int orthogdim);
template<class vobj>
void sliceInnerProductVector( std::vector<ComplexD> & result,
const Lattice<vobj> &lhs,
const Lattice<vobj> &rhs,
int orthogdim);
template<class vobj>
void sliceNorm (std::vector<RealD> &sn,
const Lattice<vobj> &rhs,
int orthogdim);
```
### Data parallel expression template engine
The standard arithmetic operators and some data parallel library functions are implemented site by site
on lattice types.
Operations may only ever combine lattice objects that have been constructed from the **same** grid pointer.
**Example**:
```c++
LatticeFermionD A(&grid);
LatticeFermionD B(&grid);
LatticeFermionD C(&grid);
A = B - C;
```
Such operations are said to be **conformable** and are the lattice are guaranteed to have the same dimensions
and both MPI and SIMD decomposition because they are based on the same grid object. The conformability check
is lightweight and simply requires the same grid pointers be passed to the lattice objects. The data members
of the grid objects are not compared.
Conformable lattice fields may be combined with appropriate scalar types in expressions. The implemented
rules follow those already documented for the tensor types.
### Unary operators and functions
The following sitewise unary operations are defined:
|-----------------------|---------------------------------------------|
| Operation | Description |
|-----------------------|---------------------------------------------|
|`operator-` | negate |
|`adj` | Hermitian conjugate |
|`conjugate` | complex conjugate |
|`trace` | sitewise trace |
|`transpose` | sitewise transpose |
|`Ta` | take traceles anti Hermitian part |
|`ProjectOnGroup` | reunitarise or orthogonalise |
|`real` | take the real part |
|`imag` | take the imaginary part |
|`toReal` | demote complex to real |
|`toComplex` | promote real to complex |
|`timesI` | elementwise +i mult (0 is not multiplied) |
|`timesMinusI` | elementwise -i mult (0 is not multiplied) |
|`abs` | elementwise absolute value |
|`sqrt` | elementwise square root |
|`rsqrt` | elementwise reciprocal square root |
|`sin` | elementwise sine |
|`cos` | elementwise cosine |
|`asin` | elementwise inverse sine |
|`acos` | elementwise inverse cosine |
|`log` | elementwise logarithm |
|`exp` | elementwise exponentiation |
|`operator!` | Logical negation of integer field |
|`Not` | Logical negation of integer field |
|-----------------------|---------------------------------------------|
The following sitewise applied functions with additional parameters are:
```c++
template<class obj> Lattice<obj> pow(const Lattice<obj> &rhs_i,RealD y);
template<class obj> Lattice<obj> mod(const Lattice<obj> &rhs_i,Integer y);
template<class obj> Lattice<obj> div(const Lattice<obj> &rhs_i,Integer y);
template<class obj> Lattice<obj>
expMat(const Lattice<obj> &rhs_i, RealD alpha, Integer Nexp = DEFAULT_MAT_EXP);
```
### Binary operators
The following binary operators are defined:
```
operator+
operator-
operator*
operator/
```
Logical are defined on LatticeInteger types:
```
operator&
operator|
operator&&
operator||
```
### Ternary operator, logical operatons and where
Within the data parallel level of the API the only way to perform operations
that are differentiated between sites is use predicated execution.
The predicate takes the form of a `LatticeInteger` which is confromable with both
the `iftrue` and `iffalse` argument:
```c++
template<class vobj,class iobj> void where(const Lattice<iobj> &pred,
Lattice<vobj> &iftrue,
Lattice<vobj> &iffalse);
```
This plays the data parallel analogue of the C++ ternary operator:
```c++
a = b ? c : d;
```
In order to create the predicate in a coordinate dependent fashion it is often useful
to use the lattice coordinates.
The `LatticeCoordinate` function:
```c++
template<class iobj> LatticeCoordinate(Lattice<iobj> &coor,int dir);
```
fills an `Integer` field with the coordinate in the N-th dimension.
A usage example is given
**Example**:
```c++
int dir =3;
int block=4;
LatticeInteger coor(FineGrid);
LatticeCoordinate(coor,dir);
result = where(mod(coor,block)==(block-1),x,z);
```
(Other usage cases of LatticeCoordinate include the generation of plane wave momentum phases.)
### Site local fused operations
The biggest limitation of expression template engines is that the optimisation
visibility is a single assignment statement in the original source code.
There is no scope for loop fusion between multiple statements.
Multi-loop fusion gives scope for greater cache locality.
Two primitives for hardware aware parallel loops are provided.
These will operate directly on the site objects which are expanded by a factor
of the vector length (in our struct of array datatypes).
Since the mapping of sites
to data lanes is opaque, these vectorised loops
are *only* appropriate for optimisation of site local operations.
### View objects
Due to an obscure aspect of the way that Nvidia handle device C++11 lambda functions,
it is necessary to disable the indexing of a Lattice object.
Rather, a reference to a lattice object must be first obtained.
The reference is copyable to a GPU, and is able to be indexed on either accelerator code,
or by host code.
In order to prevent people developing code that dereferences Lattice objects in a way that
works on CPU compilation, but fails on GPU compilation, we have decided to remove the ability
to index a lattice object on CPU code.
As a result of Nvidia's constraints, all accesses to lattice objects are required to be made
through a View object.
In the following, the type is `LatticeView<vobj>`, however it is wise to use the C++11 auto keyword
to avoid naming the type. See code examples below.
### thread_loops
The first parallel primitive is the thread_loop
**Example**:
```c++
LatticeField r(grid);
LatticeField x(grid);
LatticeField p(grid);
LatticeField mmp(grid);
auto r_v = r.View();
auto x_v = x.View();
auto p_v = p.View();
auto mmp_v = mmp.View();
thread_loop(s , r_v, {
r_v[s] = r_v[s] - a * mmp_v[s];
x_v[s] = x_v[s] + a*p_v[s];
p_v[s] = p_v[s]*b + r_v[s];
});
```
### accelerator_loops
The second parallel primitive is an accelerated_loop
**Example**:
```c++
LatticeField r(grid);
LatticeField x(grid);
LatticeField p(grid);
LatticeField mmp(grid);
auto r_v = r.View();
auto x_v = x.View();
auto p_v = p.View();
auto mmp_v = mmp.View();
accelerator_loop(s , r_v, {
r_v[s] = r_v[s] - a * mmp_v[s];
x_v[s] = x_v[s] + a*p_v[s];
p_v[s] = p_v[s]*b + r_v[s];
});
```
### Cshift
Site shifting operations are provided using the Cshift function:
```c++
template<class vobj>
Lattice<vobj> Cshift(const Lattice<vobj> &rhs,int dimension,int shift)
```
This shifts the whole vector by any distance shift in the appropriate dimension.
For the avoidance of doubt on direction conventions,a positive shift moves the
lattice site $$x_mu = 1$$ in the rhs to $$x_mu = 0$$ in the result.
**Example** (`benchmarks/Benchmark_wilson.cc`):
```c++
{ // Naive wilson implementation
ref = Zero();
for(int mu=0;mu<Nd;mu++){
tmp = U[mu]*Cshift(src,mu,1);
{
auto ref_v = ref.View();
auto tmp_v = tmp.View();
for(int i=0;i<ref_v.size();i++){
ref_v[i]+= tmp_v[i] - Gamma(Gmu[mu])*tmp_v[i]; ;
}
}
tmp =adj(U[mu])*src;
tmp =Cshift(tmp,mu,-1);
{
auto ref_v = ref.View();
auto tmp_v = tmp.View();
for(int i=0;i<ref_v.size();i++){
ref_v[i]+= tmp_v[i] + Gamma(Gmu[mu])*tmp_v[i]; ;
}
}
}
}
```
### CovariantCshift
Covariant Cshift operations are provided for common cases of boundary condition. These may be further optimised
in future:
```c++
template<class covariant,class gauge>
Lattice<covariant> CovShiftForward(const Lattice<gauge> &Link, int mu,
const Lattice<covariant> &field);
template<class covariant,class gauge>
Lattice<covariant> CovShiftBackward(const Lattice<gauge> &Link, int mu,
const Lattice<covariant> &field);
```
### Boundary conditions
The covariant shift routines occur in namespaces PeriodicBC and ConjugateBC. The correct covariant shift
for the boundary condition is passed into the gauge actions and wilson loops via an
"Impl" template policy class.
The relevant staples, plaquettes, and loops are formed by using the provided method:
```c++
Impl::CovShiftForward
Impl::CovShiftBackward
```
etc... This makes physics code transform appropriately with externally supplied rules about
treating the boundary.
**Example** (`lib/qcd/util/WilsonLoops.h`):
```c++
static void dirPlaquette(GaugeMat &plaq, const std::vector<GaugeMat> &U,
const int mu, const int nu) {
// ___
//| |
//|<__|
plaq = Gimpl::CovShiftForward(U[mu],mu,
Gimpl::CovShiftForward(U[nu],nu,
Gimpl::CovShiftBackward(U[mu],mu,
Gimpl::CovShiftIdentityBackward(U[nu], nu))));
}
```
### Inter-grid transfer operations
Transferring between different checkerboards of the same global lattice:
```c++
template<class vobj> void pickCheckerboard(int cb,Lattice<vobj> &half,const Lattice<vobj> &full);
template<class vobj> void setCheckerboard(Lattice<vobj> &full,const Lattice<vobj> &half);
```
These are used to set up Schur red-black decomposed solvers, for example.
Multi-grid projection between a fine and coarse grid:
```c++
template<class vobj,class CComplex,int nbasis>
void blockProject(Lattice<iVector<CComplex,nbasis > > &coarseData,
const Lattice<vobj> &fineData,
const std::vector<Lattice<vobj> > &Basis);
```
Multi-grid promotion to a finer grid:
```c++
template<class vobj,class CComplex,int nbasis>
void blockPromote(const Lattice<iVector<CComplex,nbasis > > &coarseData,
Lattice<vobj> &fineData,
const std::vector<Lattice<vobj> > &Basis)
```
Support for sub-block Linear algebra:
```c++
template<class vobj,class CComplex>
void blockZAXPY(Lattice<vobj> &fineZ,
const Lattice<CComplex> &coarseA,
const Lattice<vobj> &fineX,
const Lattice<vobj> &fineY)
template<class vobj,class CComplex>
void blockInnerProduct(Lattice<CComplex> &CoarseInner,
const Lattice<vobj> &fineX,
const Lattice<vobj> &fineY)
template<class vobj,class CComplex>
void blockNormalise(Lattice<CComplex> &ip,Lattice<vobj> &fineX)
template<class vobj>
void blockSum(Lattice<vobj> &coarseData,const Lattice<vobj> &fineData)
template<class vobj,class CComplex>
void blockOrthogonalise(Lattice<CComplex> &ip,std::vector<Lattice<vobj> > &Basis)
```
Conversion between different SIMD layouts:
```c++
template<class vobj,class vvobj>
void localConvert(const Lattice<vobj> &in,Lattice<vvobj> &out)
```
Slices between grid of dimension N and grid of dimentions N+1:
```c++
template<class vobj>
void InsertSlice(const Lattice<vobj> &lowDim,Lattice<vobj> & higherDim,int slice, int orthog)
template<class vobj>
void ExtractSlice(Lattice<vobj> &lowDim,const Lattice<vobj> & higherDim,int slice, int orthog)
```
Growing a lattice by a multiple factor, with periodic replication:
```c++
template<class vobj>
void Replicate(Lattice<vobj> &coarse,Lattice<vobj> & fine)
```
That latter is useful to, for example, pre-thermalise a smaller volume and then grow the volume in HMC.
It was written while debugging G-parity boundary conditions.
-107
View File
@@ -1,107 +0,0 @@
---
title : "API Documentation"
author_profile: false
excerpt: "Random number generators"
header:
overlay_color: "#5DADE2"
permalink: /docs/API/random_number_generators.html
sidebar:
nav : docs
---
Grid provides three configure time options for random the number generator engine.
* `sitmo`
* `ranlux48`
* `mt19937`
The selection is controlled by the `--enable-rng=<option>` flag.
Sitmo is the default Grid RNG and is recommended. It is a hash based RNG that is cryptographically secure and has
#. passed the BigCrush tests
#. can Skip forward an arbitrary distance (up to 2^256) in O(1) time
We use Skip functionality to place each site in an independent well separated stream.
The Skip was trivially parallelised, important in a many core node,
and gives very low overhead parallel RNG initialisation.
Our implementation of parallel RNG
* Has passed the BigCrush tests **drawing once from each site RNG** in a round robin fashion.
This test is applied in `tests/testu01/Test_smallcrush.cc`
The interface is as follows::
```c++
class GridSerialRNG {
GridSerialRNG();
void SeedFixedIntegers(const std::vector<int> &seeds);
}
class GridParallelRNG {
GridParallelRNG(GridBase *grid);
void SeedFixedIntegers(const std::vector<int> &seeds);
}
template <class vobj> void random(GridParallelRNG &rng,Lattice<vobj> &l) { rng.fill(l,rng._uniform); }
template <class vobj> void gaussian(GridParallelRNG &rng,Lattice<vobj> &l) { rng.fill(l,rng._gaussian); }
template <class sobj> void random(GridSerialRNG &rng,sobj &l) { rng.fill(l,rng._uniform ); }
template <class sobj> void gaussian(GridSerialRNG &rng,sobj &l) { rng.fill(l,rng._gaussian ); }
```
* Serial RNG's are used to assign scalar fields.
* Parallel RNG's are used to assign lattice fields and must subdivide the field grid (need not be conformable).
It is the API users responsibility to initialise, manage, save and restore these RNG state for their algorithm.
In particular there is no single globally managed RNG state.
Input/Output routines are provided for saving and restoring RNG states.
`lib/parallelIO/BinaryIO.h`:
```c++
////////////////////////////////////////////////////////////////////////////
// Read a RNG; use IOobject and lexico map to an array of state
////////////////////////////////////////////////////////////////////////////
static void readRNG(GridSerialRNG &serial,
GridParallelRNG &parallel,
std::string file,
Integer offset,
uint32_t &nersc_csum,
uint32_t &scidac_csuma,
uint32_t &scidac_csumb)
////////////////////////////////////////////////////////////////////////////
// Write a RNG; lexico map to an array of state and use IOobject
////////////////////////////////////////////////////////////////////////////
static void writeRNG(GridSerialRNG &serial,
GridParallelRNG &parallel,
std::string file,
Integer offset,
uint32_t &nersc_csum,
uint32_t &scidac_csuma,
uint32_t &scidac_csumb)
lib/parallelIO/NerscIO.h::
void writeRNGState(GridSerialRNG &serial,GridParallelRNG &parallel,std::string file);
void readRNG(GridSerialRNG &serial,
GridParallelRNG &parallel,
std::string file,
Integer offset,
uint32_t &nersc_csum,
uint32_t &scidac_csuma,
uint32_t &scidac_csumb);
```
**Example**:
```c++
NerscIO::writeRNGState(sRNG,pRNG,rfile);
```
-443
View File
@@ -1,443 +0,0 @@
---
title : "API Documentation"
author_profile: false
excerpt: "Tensor classes"
header:
overlay_color: "#5DADE2"
permalink: /docs/API/tensor_classes.html
sidebar:
nav : docs
---
The Tensor data structures are built up from fundamental
scalar matrix and vector classes:
```c++
template<class vobj > class iScalar { private: vobj _internal ; }
template<class vobj,int N> class iVector { private: vobj _internal[N] ; }
template<class vobj,int N> class iMatrix { private: vobj _internal[N] ; }
```
These are template classes and can be passed a fundamental scalar or vector type, or
nested to form arbitrarily complicated tensor products of indices. All mathematical expressions
are defined to operate recursively, index by index.
Presently the constants
* `Nc`
* `Nd`
are globally predefined. However, this is planned for changed in future and policy classes
for different theories (e.g. QCD, QED, SU2 etc...) will contain these constants and enable multiple
theories to coexist more naturally.
Arbitrary tensor products of fundamental scalar, vector
and matrix objects may be formed in principle by the basic Grid code.
For Lattice field theory, we define types according to the following tensor
product structure ordering. The suffix "D" indicates either double types, and
replacing with "F" gives the corresponding single precision type.
|Lattice | Lorentz | Spin | Colour | scalar_type | Field |
|---------|----------|-----------|----------|-------------|--------------------------|
|Scalar | Scalar | Scalar | Scalar | RealD | RealD |
|Scalar | Scalar | Scalar | Scalar | ComplexD | ComplexD |
|Scalar | Scalar | Scalar | Matrix | ComplexD | ColourMatrixD |
|Scalar | Vector | Scalar | Matrix | ComplexD | LorentzColourMatrixD |
|Scalar | Scalar | Vector | Vector | ComplexD | SpinColourVectorD |
|Scalar | Scalar | Vector | Vector | ComplexD | HalfSpinColourVectorD |
|Scalar | Scalar | Matrix | Matrix | ComplexD | SpinColourMatrixD |
|---------|----------|-----------|----------|-------------|--------------------------|
The types are implemented via a recursive tensor nesting system.
**Example** we declare:
```c++
template<typename vtype>
using iLorentzColourMatrix = iVector<iScalar<iMatrix<vtype, Nc> >, Nd > ;
typedef iLorentzColourMatrix<ComplexD > LorentzColourMatrixD;
```
**Example** we declare:
```c++
template<typename vtype>
using iLorentzColourMatrix = iVector<iScalar<iMatrix<vtype, Nc> >, Nd > ;
typedef iLorentzColourMatrix<ComplexD > LorentzColourMatrixD;
```
Arbitrarily deep tensor nests may be formed. Grid uses a positional and numerical rule to associate indices for contraction
in the Einstein summation sense.
|----------------|---------|------------|
| Symbolic name | Number | Position |
|----------------|---------|------------|
|`LorentzIndex` | 0 | left |
|`SpinIndex` | 1 | middle |
|`ColourIndex` | 2 | right |
|----------------|---------|------------|
The conventions are that the index ordering left to right are: Lorentz, Spin, Colour. A scalar type (either real
or complex, single or double precision) is be provided to the innermost structure.
### Tensor arithmetic rules (`lib/tensors/Tensor_arith.h`)
Arithmetic rules are defined on these types
The multiplication operator follows the natural multiplication
table for each index, index level by index level.
`Operator *`
|----|----|----|----|
| x | S | V | M |
|----|----|----|----|
| S | S | V | M |
| V | S | S | V |
| M | M | V | M |
|----|----|----|----|
The addition and subtraction rules disallow a scalar to be added to a vector,
and vector to be added to matrix. A scalar adds to a matrix on the diagonal.
`Operator +` and `Operator -`
|----|----|----|----|
| +/-| S | V | M |
|----|----|----|----|
| S | S | - | M |
| V | - | V | - |
| M | M | - | M |
|----|----|----|----|
The rules for a nested objects are recursively inferred level by level from basic rules of multiplication
addition and subtraction for scalar/vector/matrix. Legal expressions can only be formed between objects
with the same number of nested internal indices. All the Grid QCD datatypes have precisely three internal
indices, some of which may be trivial scalar to enable expressions to be formed.
Arithmetic operations are possible where the left or right operand is a scalar type.
**Example**:
```c++
LatticeColourMatrixD U(grid);
LatticeColourMatrixD Udag(grid);
Udag = adj(U);
RealD unitary_err = norm2(U*adj(U) - 1.0);
```
Will provide a measure of how discrepant from unitarity the matrix U is.
### Internal index manipulation (`lib/tensors/Tensor_index.h`)
General code can access any specific index by number with a peek/poke semantic:
```c++
// peek index number "Level" of a vector index
template<int Level,class vtype> auto peekIndex (const vtype &arg,int i);
// peek index number "Level" of a vector index
template<int Level,class vtype> auto peekIndex (const vtype &arg,int i,int j);
// poke index number "Level" of a vector index
template<int Level,class vtype>
void pokeIndex (vtype &pokeme,arg,int i)
// poke index number "Level" of a matrix index
template<int Level,class vtype>
void pokeIndex (vtype &pokeme,arg,int i,int j)
```
**Example**:
```c++
for (int mu = 0; mu < Nd; mu++) {
U[mu] = PeekIndex<LorentzIndex>(Umu, mu);
}
```
Similar to the QDP++ package convenience routines are provided to access specific elements of
vector and matrix internal index types by physics name or meaning aliases for the above routines
with the appropriate index constant.
* `peekColour`
* `peekSpin`
* `peekLorentz`
and
* `pokeColour`
* `pokeSpin`
* `pokeLorentz`
For example, we often store Gauge Fields with a Lorentz index, but can split them into
polarisations in relevant pieces of code.
**Example**:
```c++
for (int mu = 0; mu < Nd; mu++) {
U[mu] = peekLorentz(Umu, mu);
}
```
For convenience, direct access as both an l-value and an r-value is provided by the parenthesis operator () on each of the Scalar, Vector and Matrix classes.
For example one may write
**Example**:
```c++
ColourMatrix A, B;
A()()(i,j) = B()()(j,i);
```
bearing in mind that empty parentheses are need to address a scalar entry in the tensor index nest.
The first (left) empty parentheses move past the (scalar) Lorentz level in the tensor nest, and the second
(middle) empty parantheses move past the (scalar) spin level. The (i,j) index the colour matrix.
Other examples are easy to form for the many cases, and should be obvious to the reader.
This form of addressing is convenient and saves peek, modifying, poke
multiple temporary objects when both spin and colour indices are being accessed.
There are many cases where multiple lines of code are required with a peek/poke semantic which are
easier with direct l-value and r-value addressing.
### Matrix operations
Transposition and tracing specific internal indices are possible using:
```c++
template<int Level,class vtype>
auto traceIndex (const vtype &arg)
template<int Level,class vtype>
auto transposeIndex (const vtype &arg)
```
These may be used as
**Example**:
```c++
LatticeColourMatrixD Link(grid);
ComplexD link_trace = traceIndex<ColourIndex> (Link);
```
Again, convenience aliases for QCD naming schemes are provided via
* `traceColour`
* `traceSpin`
* `transposeColour`
* `transposeSpin`
**Example**:
```c++
ComplexD link_trace = traceColour (Link);
```
The operations only makes sense for matrix and scalar internal indices.
The trace and transpose over all indices is also defined for matrix and scalar types:
```c++
template<class vtype,int N>
auto trace(const iMatrix<vtype,N> &arg) -> iScalar
template<class vtype,int N>
auto transpose(const iMatrix<vtype,N> &arg ) -> iMatrix
```
Similar functions are:
* `conjugate`
* `adjoint`
The traceless anti-Hermitian part is taken with:
```c++
template<class vtype,int N> iMatrix<vtype,N>
Ta(const iMatrix<vtype,N> &arg)
```
Reunitarisation (or reorthogonalisation) is enabled by:
```c++
template<class vtype,int N> iMatrix<vtype,N>
ProjectOnGroup(const iMatrix<vtype,N> &arg)
```
**Example**:
```c++
LatticeColourMatrixD Mom(grid);
LatticeColourMatrixD TaMom(grid);
TaMom = Ta(Mom);
```
### Querying internal index structure
Templated code may find it useful to use query functions on the Grid datatypes they are provided.
For example general Serialisation and I/O code can inspect the nature of a type a routine has been
asked to read from disk, or even generate descriptive type strings:
```c++
////////////////////////////////////////////////////
// Support type queries on template params:
////////////////////////////////////////////////////
// int _ColourScalar = isScalar<ColourIndex,vobj>();
// int _ColourVector = isVector<ColourIndex,vobj>();
// int _ColourMatrix = isMatrix<ColourIndex,vobj>();
template<int Level,class vtype> int isScalar(void)
template<int Level,class vtype> int isVector(void)
template<int Level,class vtype> int isMatrix(void)
```
**Example** (`lib/parallelIO/IldgIO.h`):
```c++
template<class vobj> std::string ScidacRecordTypeString(int &colors, int &spins, int & typesize,int &datacount) {
/////////////////////////////////////////
// Encode a generic tensor as a string
/////////////////////////////////////////
typedef typename getPrecision<vobj>::real_scalar_type stype;
int _ColourN = indexRank<ColourIndex,vobj>();
int _ColourScalar = isScalar<ColourIndex,vobj>();
int _ColourVector = isVector<ColourIndex,vobj>();
int _ColourMatrix = isMatrix<ColourIndex,vobj>();
int _SpinN = indexRank<SpinIndex,vobj>();
int _SpinScalar = isScalar<SpinIndex,vobj>();
int _SpinVector = isVector<SpinIndex,vobj>();
int _SpinMatrix = isMatrix<SpinIndex,vobj>();
int _LorentzN = indexRank<LorentzIndex,vobj>();
int _LorentzScalar = isScalar<LorentzIndex,vobj>();
int _LorentzVector = isVector<LorentzIndex,vobj>();
int _LorentzMatrix = isMatrix<LorentzIndex,vobj>();
std::stringstream stream;
stream << "GRID_";
stream << ScidacWordMnemonic<stype>();
if ( _LorentzVector ) stream << "_LorentzVector"<<_LorentzN;
if ( _LorentzMatrix ) stream << "_LorentzMatrix"<<_LorentzN;
if ( _SpinVector ) stream << "_SpinVector"<<_SpinN;
if ( _SpinMatrix ) stream << "_SpinMatrix"<<_SpinN;
if ( _ColourVector ) stream << "_ColourVector"<<_ColourN;
if ( _ColourMatrix ) stream << "_ColourMatrix"<<_ColourN;
if ( _ColourScalar && _LorentzScalar && _SpinScalar ) stream << "_Complex";
typesize = sizeof(typename vobj::scalar_type);
if ( _ColourMatrix ) typesize*= _ColourN*_ColourN;
else typesize*= _ColourN;
if ( _SpinMatrix ) typesize*= _SpinN*_SpinN;
else typesize*= _SpinN;
};
```
### Inner and outer products
We recursively define (`tensors/Tensor_inner.h`), ultimately returning scalar in all indices:
```c++
/////////////////////////////////////////////////////////////////////////
// innerProduct Scalar x Scalar -> Scalar
// innerProduct Vector x Vector -> Scalar
// innerProduct Matrix x Matrix -> Scalar
/////////////////////////////////////////////////////////////////////////
template<class l,class r>
auto innerProductD (const iScalar<l>& lhs,const iScalar<r>& rhs)
template<class l,class r,int N>
auto innerProductD (const iVector<l,N>& lhs,const iVector<r,N>& rhs)
template<class l,class r,int N>
auto innerProductD (const iMatrix<l,N>& lhs,const iMatrix<r,N>& rhs)
template<class l,class r>
auto innerProduct (const iScalar<l>& lhs,const iScalar<r>& rhs)
template<class l,class r,int N>
auto innerProduct (const iVector<l,N>& lhs,const iVector<r,N>& rhs)
template<class l,class r,int N>
auto innerProduct (const iMatrix<l,N>& lhs,const iMatrix<r,N>& rhs)
```
The sum is always performed in double precision for the `innerProductD` variant.
We recursively define (`tensors/Tensor_outer.h`):
```c++
/////////////////////////////////////////////////////////////////////////
// outerProduct Scalar x Scalar -> Scalar
// Vector x Vector -> Matrix
/////////////////////////////////////////////////////////////////////////
template<class l,class r>
auto outerProduct (const iScalar<l>& lhs,const iScalar<r>& rhs)
template<class l,class r,int N>
auto outerProduct (const iVector<l,N>& lhs,const iVector<r,N>& rhs)
```
### Functions of Tensor
The following unary functions are defined, which operate element by element on a tensor
data structure:
```c++
sqrt();
rsqrt();
sin();
cos();
asin();
acos();
log();
exp();
abs();
Not();
toReal();
toComplex();
```
Element wise functions are defined for::
```c++
div(tensor,Integer);
mod(tensor,Integer);
pow(tensor,RealD);
```
Matrix exponentiation (as opposed to element wise exponentiation is implemented via power series in::
```c++
Exponentiate(const Tensor &r ,RealD alpha, Integer Nexp = DEFAULT_MAT_EXP)
```
the exponentiation is distributive across vector indices (i.e. proceeds component by component for a `LorentzColourMatrix`).
Determinant is similar::
```c++
iScalar Determinant(const Tensor &r )
```
-25
View File
@@ -1,25 +0,0 @@
---
title : "API Documentation"
author_profile: false
excerpt: "Vectorisation"
header:
overlay_color: "#5DADE2"
permalink: /docs/API/vectorisation.html
sidebar:
nav : docs
---
Internally, Grid defines a portable abstraction SIMD vectorisation, via the following types:
* `vRealF`
* `vRealD`
* `vComplexF`
* `vComplexD`
These have the usual range of arithmetic operators and functions acting upon them. They do not form
part of the API, but are mentioned to (partially) explain the need for controlling the
layout transformation in lattice objects.
-32
View File
@@ -1,32 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Reporting an issue"
header:
overlay_color: "#C70039"
permalink: /docs/bug_report/
sidebar:
nav : docs
---
__To help us tracking and solving more efficiently issues with Grid, please report problems using the [issue system of GitHub](https://github.com/paboyle/Grid/issues) rather than sending emails to Grid developers.__
We also suggest to have a brief look at the [closed issues pages](https://github.com/paboyle/Grid/issues?q=is%3Aissue+is%3Aclosed) and check whether the problem has been addressed already.
{% capture notice-text %}
1. Check that the code is pointing to the `HEAD` of `develop` or any commit in `master` which is tagged with a version number.
2. Give a description of the target platform (CPU, network, compiler). Please give the full CPU part description, using for example `cat /proc/cpuinfo | grep 'model name' | uniq` (Linux) or `sysctl machdep.cpu.brand_string` (macOS) and the full output the `--version` option of your compiler.
3. Give the exact `configure` command used.
4. Attach `config.log`.
5. Attach `grid.config.summary`.
6. Attach the output of `make V=1`.
7. Describe the issue and any previous attempt to solve it. If relevant, show how to reproduce the issue using a minimal working example.
{% endcapture %}
<div class="notice--warning">
<h4>When you file an issue, please go though the following checklist:</h4>
{{ notice-text | markdownify }}
</div>
-38
View File
@@ -1,38 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Supported communication interfaces"
header:
overlay_color: "#5DADE2"
permalink: /docs/comm_interfaces/
sidebar:
nav : docs
---
{% include base_path %}
The following options can be used with the `--enable-comms=` option to target different communication interfaces:
| `<comm>` | Description |
| ------------- | -------------------------------------------- |
| `none` | no communications |
| `mpi` | MPI communications using [MPI-3 shared memory](https://software.intel.com/sites/default/files/managed/eb/54/An_Introduction_to_MPI-3.pdf) |
| `mpi-auto` | MPI communications with compiler CXX but clone flags from MPICXX |
For the MPI interfaces the optional `-auto` suffix instructs the `configure` scripts to determine all the necessary compilation and linking flags. This is done by extracting the informations from the MPI wrapper specified in the environment variable `MPICXX` (if not specified `configure` will scan though a list of default names). The `-auto` suffix is not supported by the Cray environment wrapper scripts. Use the standard wrappers ( `CXX=CC` ) set up by Cray `PrgEnv` modules instead.
### Shared memory communications support
The following options can be use with the `--enable-shm=` option to target different shared memory behaviours (default `shmopen`):
| `<shm>` | Description |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `shmnone` | uses anonymous spaces, use only for 1 MPI rank per node |
| `shmopen` | uses `shm_open` to allocate a shared memory space for inter socket communications. Uses a unique file name in `/dev/shm` associated to the user. |
| `hugetlbfs` | optional [libhugetlbfs](https://github.com/libhugetlbfs/libhugetlbfs) support to map the shared memory allocation into huge 2M pages |
### Other flags
`--enable-shmpath=<path>` to select the shared memory map base path for [libhugetlbfs](https://github.com/libhugetlbfs/libhugetlbfs).
{% include paginator.html %}
-51
View File
@@ -1,51 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Execution model"
header:
overlay_color: "#5DADE2"
permalink: /docs/execution-model/
sidebar:
nav : docs
---
Grid is intended to support performance portability across a many of platforms ranging from single processors
to message passing CPU clusters and accelerated computing nodes.
The library provides data parallel C++ container classes with internal memory layout that is transformed to map efficiently to SIMD architectures. CSHIFT facilities are provided, similar to HPF and cmfortran, and user control is given over the mapping of array indices to both MPI tasks and SIMD processing elements.
Identically shaped arrays then be processed with perfect data parallelisation.
Such identically shaped arrays are called conformable arrays.
The transformation is based on the observation that Cartesian array processing involves identical processing to be performed on different regions of the Cartesian array.
The library will both geometrically decompose into MPI tasks and across SIMD lanes. Local vector loops are parallelised with OpenMP pragmas.
Data parallel array operations can then be specified with a SINGLE data parallel paradigm, but optimally use MPI, OpenMP and SIMD parallelism under the hood. This is a significant simplification for most programmers.
The two broad optimisation targets are:
* MPI, OpenMP, and SIMD parallelism
Presently SSE4, ARM NEON (128 bits) AVX, AVX2, QPX (256 bits), and AVX512 (512 bits) targets are supported
with aggressive use of architecture vectorisation intrinsic functions.
* MPI between nodes with and data parallel offload to GPU's.
For the latter generic C++ code is used both on the host and on the GPU, with a common vectorisation
granularity.
### Accelerator memory model
For accelerator targets it is assumed that heap allocations can be shared between the CPU
and the accelerator. This corresponds to lattice fields having their memory allocated with
*cudaMallocManaged* with Nvidia GPU's.
Grid does not assume that stack or data segments share a common address space with an accelerator.
* This constraint presently rules out porting Grid to AMD GPU's which do not support managed memory.
* At some point in the future a cacheing strategy may be implemented to enable running on AMD GPU's
This document was updated on March 2018.
{: .notice}
-213
View File
@@ -1,213 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Building on Intel and AMD targets"
header:
overlay_color: "#5DADE2"
permalink: /docs/general_build/
sidebar:
nav : docs
---
{% include base_path %}
The information included in this page has been updated on *March 2018* and it is valid for the [release version 0.7.0](https://github.com/paboyle/Grid/tree/release/v0.7.0).
{% include toc icon="gears" title="Contents" %}
### Building for the Intel Knights Landing
The following configuration is recommended for the [Intel Knights Landing](http://ark.intel.com/products/codename/48999/Knights-Landing) platform:
``` text
../configure --enable-precision=double\
--enable-simd=KNL \
--enable-comms=mpi-auto \
--with-gmp=<path> \
--with-mpfr=<path> \
--enable-mkl \
CXX=icpc MPICXX=mpiicpc
```
where `<path>` is the UNIX prefix where GMP and MPFR are installed. If you are working on a Cray machine that does not use the `mpiicpc` wrapper, please use:
``` text
../configure --enable-precision=double\
--enable-simd=KNL \
--enable-comms=mpi \
--with-gmp=<path> \
--with-mpfr=<path> \
--enable-mkl \
CXX=CC CC=cc
```
### Building for the Intel Haswell
The following configuration is recommended for the [Intel Haswell platform](https://ark.intel.com/products/codename/42174/Haswell):
```bash
../configure --enable-precision=double\
--enable-simd=AVX2 \
--enable-comms=mpi-auto \
--enable-mkl \
CXX=icpc MPICXX=mpiicpc
```
The MKL flag enables use of BLAS and FFTW from the Intel Math Kernels Library.
If gmp and mpfr are NOT in standard places (`/usr/`) these flags may be needed:
```bash
--with-gmp=<path> \
--with-mpfr=<path>
```
where `<path>` is the UNIX prefix where GMP and MPFR are installed.
If you are working on a Cray machine that does not use the `mpiicpc` wrapper, please use:
```bash
../configure --enable-precision=double\
--enable-simd=AVX2 \
--enable-comms=mpi \
--enable-mkl \
CXX=CC CC=cc
```
If using the Intel MPI library, threads should be pinned to NUMA domains using:
```bash
export I_MPI_PIN=1
```
This is the default.
### Building for the Intel Skylake
The following configuration is recommended for the [Intel Skylake platform](https://ark.intel.com/products/codename/37572/Skylake):
```bash
../configure --enable-precision=double\
--enable-simd=AVX512 \
--enable-comms=mpi-auto \
--enable-mkl \
CXX=mpiicpc
```
The MKL flag enables use of BLAS and FFTW from the Intel Math Kernels Library.
If gmp and mpfr are NOT in standard places (`/usr/`) these flags may be needed:
```bash
--with-gmp=<path> \
--with-mpfr=<path> \
```
where `<path>` is the UNIX prefix where GMP and MPFR are installed.
If you are working on a Cray machine that does not use the `mpiicpc` wrapper, please use:
``` bash
../configure --enable-precision=double\
--enable-simd=AVX512 \
--enable-comms=mpi \
--enable-mkl \
CXX=CC CC=cc
```
If using the Intel MPI library, threads should be pinned to NUMA domains using:
```bash
export I_MPI_PIN=1
```
This is the default.
### Building for the AMD Epyc
The [AMD EPYC](https://www.amd.com/en/products/epyc) is a multichip module comprising 32 cores spread over four distinct chips each with 8 cores.
So, even with a single socket node there is a quad-chip module. Dual socket nodes with 64 cores total
are common. Each chip within the module exposes a separate NUMA domain.
There are four NUMA domains per socket and we recommend one MPI rank per NUMA domain.
MPI-3 is recommended with the use of four ranks per socket,
and 8 threads per rank.
The following configuration is recommended for the AMD EPYC platform:
```bash
../configure --enable-precision=double\
--enable-simd=AVX2 \
--enable-comms=mpi3 \
CXX=mpicxx
```
If `gmp` and `mpfr` are NOT in standard places (`/usr/`) these flags may be needed::
```bash
--with-gmp=<path> \
--with-mpfr=<path>
```
where `<path>` is the UNIX prefix where GMP and MPFR are installed.
Using MPICH and g++ v4.9.2, best performance can be obtained using explicit GOMP_CPU_AFFINITY flags for each MPI rank.
This can be done by invoking MPI on a wrapper script omp_bind.sh to handle this.
It is recommended to run 8 MPI ranks on a single dual socket AMD EPYC, with 8 threads per rank using MPI3 and
shared memory to communicate within this node:
```bash
mpirun -np 8 ./omp_bind.sh ./Benchmark_dwf --mpi 2.2.2.1 --dslash-unroll --threads 8 --grid 16.16.16.16 --cacheblocking 4.4.4.4
```
Where omp_bind.sh does the following:
```bash
#!/bin/bash
numanode=` expr $PMI_RANK % 8 `
basecore=`expr $numanode \* 16`
core0=`expr $basecore + 0 `
core1=`expr $basecore + 2 `
core2=`expr $basecore + 4 `
core3=`expr $basecore + 6 `
core4=`expr $basecore + 8 `
core5=`expr $basecore + 10 `
core6=`expr $basecore + 12 `
core7=`expr $basecore + 14 `
export GOMP_CPU_AFFINITY="$core0 $core1 $core2 $core3 $core4 $core5 $core6 $core7"
echo GOMP_CUP_AFFINITY $GOMP_CPU_AFFINITY
$@
```
### Build setup for laptops, other compilers, non-cluster builds
Many versions of `g++` and `clang++` work with Grid, and involve merely replacing `CXX` (and `MPICXX`),
and omit the `enable-mkl` flag.
Single node, non MPI builds are enabled with:
```bash
--enable-comms=none
```
FFTW support that is not in the default search path may then enabled with:
```bash
--with-fftw=<installpath>
```
BLAS will not be compiled in by default, and Lanczos will default to Eigen diagonalisation.
### Notes
- [GMP](https://gmplib.org/) is the GNU Multiple Precision Library.
- [MPFR](http://www.mpfr.org/) is a C library for multiple-precision floating-point computations with correct rounding.
- Both libaries are necessary for the RHMC support.
{% include paginator.html %}
-185
View File
@@ -1,185 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Quick start guide"
header:
overlay_color: "#5DADE2"
permalink: /docs/quick-start-guide/
sidebar:
nav : docs
---
{% include toc icon="gears" title="Quick-start" %}
Please send all pull requests to the `develop` branch.
{: .notice--warning}
## Requirements
### Required libraries
* [GMP](https://gmplib.org/) is the GNU Multiple Precision Library (RHMC support).
* [MPFR](http://www.mpfr.org/) is a C library for multiple-precision floating-point computations with correct rounding (RHMC support).
* [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page): bootstrapping GRID downloads and uses for internal dense matrix (non-QCD operations) the Eigen library.
Grid optionally uses:
* [HDF5](https://support.hdfgroup.org/HDF5/) for structured data I/O
* [LIME](http://usqcd-software.github.io/c-lime/) for ILDG and SciDAC file format support.
* [FFTW](http://www.fftw.org/) either generic version or via the Intel MKL library.
* [LAPACK](http://www.netlib.org/lapack/) either generic version or Intel MKL library.
### Compilers
* Intel ICPC v17 and later
* Clang v3.5 and later (need 3.8 and later for OpenMP)
* GCC v4.9.x
* GCC v6.3 and later (recommended)
**Important:**
Some versions of GCC appear to have a bug under high optimisation (-O2, -O3).
The safety of these compiler versions cannot be guaranteed at this time. Follow [Issue 100](https://github.com/paboyle/Grid/issues/100) for details and updates.
GCC v5.x, v6.1, v6.2
## Quick start
First, start by cloning the repository:
``` bash
git clone https://github.com/paboyle/Grid.git
```
Then enter the cloned directory and set up the build system:
```bash
cd Grid
./bootstrap.sh
```
Now you can execute the `configure` script to generate makefiles as in this example (here from a build directory):
``` bash
mkdir build
cd build
../configure --enable-precision=double --enable-simd=AVX --enable-comms=mpi-auto --prefix=<path>
```
where:
``` bash
--enable-precision=single|double
```
sets the **default precision**. Since this is largely a benchmarking convenience, it is anticipated that the default precision may be removed in future implementations, and that explicit type selection be made at all points. Naturally, most code will be type templated in any case.::
``` bash
--enable-simd=GEN|SSE4|AVX|AVXFMA|AVXFMA4|AVX2|AVX512|NEONv8|QPX
```
sets the **SIMD architecture**,
``` bash
--enable-comms=mpi|none
```
selects whether to use MPI communication (mpi) or no communication (none).
``` bash
--prefix=<path>
```
should be passed the prefix path where you want to install Grid.
Other options are detailed in the next section, you can also use
```bash
configure --help
```
to display them.
Like with any other program using GNU autotool, the
```bash
CXX, CXXFLAGS, LDFLAGS, ...
```
environment variables can be modified to customise the build.
Finally, you can build and install Grid:
``` bash
make
make install #this is optional
```
To minimise the build time, only the tests at the root of the `tests` directory are built by default. If you want to build tests in the sub-directory `<subdir>` you can execute:
``` bash
make -C tests/<subdir> tests
```
If you want to build all the tests at once just use `make tests`.
## Build configuration options
A full list of configurations options is available with the `./configure --help` command:
* `--prefix=<path>`: installation prefix for Grid.
* `--with-gmp=<path>`: look for GMP in the UNIX prefix `<path>`
* `--with-mpfr=<path>`: look for MPFR in the UNIX prefix `<path>`
* `--with-fftw=<path>`: look for FFTW in the UNIX prefix `<path>`
* `--with-hdf5=<path>`: look for HDF5 in the UNIX prefix `<path>`
* `--with-lime=<path>`: look for the C-LIME library in the UNIX prefix `<path>`
* `--enable-sfw-fp16=<yes|no`: Enable software FP16 communications support (default `yes`)
* `--enable-lapack[=<path>]`: enable LAPACK support in Lanczos eigensolver. A UNIX prefix containing the library can be specified (optional).
* `--enable-mkl[=<path>]`: use Intel MKL for FFT (and LAPACK if enabled) routines. A UNIX prefix containing the library can be specified (optional).
* `--enable-numa`: enable [numa first touch policy](http://queue.acm.org/detail.cfm?id=2513149) optimization (default `no`)
* `--enable-simd=<code>`: setup Grid for the SIMD target `<code>` (default: `GEN`). [List of possible SIMD targets](/Grid/docs/simd_targets/).
* `--enable-gen-simd-width=<size>`: select the size (in bytes) of the generic SIMD vector type (default: 32 bytes).
* `--enable-precision={single|double}`: set the default precision (default: `double`).
* `--enable-comms=<comm>`: Use `<comm>` for message passing (default: `none`). [List of possible comm targets](/Grid/docs/comm_interfaces/).
* `--enable-shm=<shm>`: Use `<shm>` for shared memory behaviour (default: `shmopen`). [List of possible shm targets](/Grid/docs/comm_interfaces/).
* `--enable-shmpath=<path>`: Select `<path>` for the shared memory mmap base path for libhugetlbfs.
* `--enable-rng={sitmo|ranlux48|mt19937}` choose the RNG (default: `sitmo`).
* `--disable-timers`: disable system dependent high-resolution timers.
* `--enable-chroma`: enable Chroma regression tests. A compiled version of Chroma is assumed to be present.
* `--enable-doxygen-doc`: enable the Doxygen documentation generation (build with `make doxygen-doc`)
{% if site.option=="web" %}
More details on the *Getting started* menu entries on the left.
{% endif %}
This document was updated on March 2018.
{: .notice}
-80
View File
@@ -1,80 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Running on a Intel Knights Landing"
header:
overlay_color: "#5DADE2"
permalink: /docs/running_knl/
sidebar:
nav : docs
---
{% include base_path %}
{% include toc icon="gears" title="Contents" %}
These are few suggestions in order to get the best performance on the Intel Knights Landing (KNL).
### Bind the memory allocation to the MCDRAM NUMA node
The KNL has two memory systems, the DDR4 (~90 GFlops/s) and the High Bandwidth Memory (MCDRAM, ~400 Gflops/s).
Each of the two memory system is attached to a different [NUMA context](https://software.intel.com/en-us/articles/optimizing-applications-for-numa).
On a KNL node the command `numactl --hardware` will report which NUMA context is connected to the faster MCDRAM.
A typical report looks like this
``` text
node 0 size: 98178 MB
node 0 free: 92899 MB
node 1 cpus:
node 1 size: 16384 MB
node 1 free: 15926 MB
```
In this case the node 1 is related to the 16GB MCDRAM (this is the typical situation on KNLs)
To bind the memory allocation to NUMA node 1 use
``` bash
numactl --membind 1 ./your-executable
```
### Controlling threading
The number of threads can be set in GRID at runtime by the flag
``` text
--threads <#threads>
```
A finer control can be achieved using the environment variable `KMP_HW_SUBSETS` (or the deprecated `KMP_PLACE_THREADS`).
From the [Intel developer guide](https://software.intel.com/en-us/node/684313):
>The KMP_HW_SUBSETS variable controls the hardware resource that will be used by the program. This variable specifies the number of sockets to use, how many cores to use per socket and how many threads to assign per core. For example, on Intel® Xeon Phi™ coprocessors, while each coprocessor can take up to four threads, specifying fewer than four threads per core may result in a better performance. While specifying two threads per core often yields better performance than one thread per core, specifying three or four threads per core may or may not improve the performance. This variable enables you to conveniently measure the performance of up to four threads per core.
A typical setting for the best performance on a single node is to use **62 cores with 1 threads per code**, on the bash shell this is set by
``` bash
export KMP_HW_SUBSETS=62c,1t
```
### Using the optimised Wilson Dslash kernels
Beside the generic implementation using stencils, GRID has optimised version of the Dslash kernels (for Wilson and DWF fermions).
Flags at runtime can be used for the optimised paths
| Flag | Description |
| --------------------- | --------------------------------------------------------------------- |
| `--dslash-generic` | This is the default option and used the implementation with stencils |
| `--dslash-unroll` | This explicitly unroll the colour loops. It is tied to `Nc=3` |
| `--dslash-asm` | This is specific for AVX512-F architectures and `Nc=3` |
The information included in this page has been updated on *November 2016* and it is valid for the release version 0.6.0.
{: .notice}
{% include paginator.html %}
-45
View File
@@ -1,45 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Supported SIMD architectures"
header:
overlay_color: "#5DADE2"
permalink: /docs/simd_targets/
sidebar:
nav : docs
---
{% include base_path %}
The following options can be used for `--enable-simd=` flag to target different SIMD instruction sets:
| `<code>` | Description |
| ----------- | -------------------------------------- |
| `GEN` | generic portable vector code |
| `SSE4` | SSE 4.2 (128 bit) |
| `AVX` | AVX (256 bit) |
| `AVXFMA` | AVX (256 bit) + FMA |
| `AVXFMA4` | AVX (256 bit) + FMA4 |
| `AVX2` | AVX 2 (256 bit) |
| `AVX512` | AVX 512 bit |
| `NEONv8` | [ARM NEON](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/ch07s03.html) (128 bit)
| `QPX` | QPX (256 bit) |
Alternatively, some CPU codenames can be directly used:
| `<code>` | Description |
| ----------- | -------------------------------------- |
| `KNL` | [Intel Xeon Phi codename Knights Landing](http://ark.intel.com/products/codename/48999/Knights-Landing) |
| `SKL` | [Intel Skylake with AVX512 support](https://ark.intel.com/products/codename/37572/Skylake) |
| `BGQ` | Blue Gene/Q |
#### Notes (Jan 2018):
* We currently support AVX512 for the Intel compiler and GCC (KNL and SKL target). Support for clang will appear in future
versions of Grid when the AVX512 support in the compiler is more advanced.
* For BG/Q only [bgclang](http://trac.alcf.anl.gov/projects/llvm-bgq) is supported. We do not presently plan to support more compilers for this platform.
* BG/Q performances are currently rather poor. This is being investigated for future versions.
* The vector size for the `GEN` target can be specified with the `configure` script option `--enable-gen-simd-width`.
{% include paginator.html %}
-40
View File
@@ -1,40 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Travis Continous Integration framework"
header:
overlay_color: "#5DADE2"
permalink: /docs/travis/
sidebar:
nav : docs
---
{% include base_path %}
<!-- {% include toc icon="gears" title="Helpers" %} -->
For continous testing of every commit we use the [Travis CI framework](https://travis-ci.org/).
The current status is
| Branch | Status |
|---------- | ------ |
| [Master](https://travis-ci.org/paboyle/Grid) | [![Build Status](https://travis-ci.org/paboyle/Grid.svg?branch=master)](https://travis-ci.org/paboyle/Grid) |
| [Develop](https://travis-ci.org/paboyle/Grid) | [![Build Status](https://travis-ci.org/paboyle/Grid.svg?branch=develop)](https://travis-ci.org/paboyle/Grid) |
| [Release 0.7.0](https://github.com/paboyle/Grid/tree/release/v0.7.0) | [![Build Status](https://travis-ci.org/paboyle/Grid.svg?branch=release/v0.7.0)](https://github.com/paboyle/Grid/tree/release/v0.7.0) |
### Automated tests
Travis will test the compilation workflow for single and double precision version on the following compilers for each commit:
- clang 3.7.0 on Ubuntu 14.04
- clang 3.8.0 on Ubuntu 14.04
- gcc 5.4.1 on Ubuntu 14.04
- gcc 4.9.4 on Ubuntu 14.04.1
- Apple LLVM version 8.1.0 (clang-802.0.42) on OSX (x86_64-apple-darwin16.5.0)
Due to the limitations of the Travis virtual machines, the archictecture is limited to SSE4 and few tests.
May 2017: a new server using [TeamCity](https://www.jetbrains.com/teamcity/specials/teamcity/teamcity.html?gclid=CjwKEAjwutXIBRDV7-SDvdiNsUoSJACIlTqlygt_V8-PqWvjV23oAj8wf2suNmct9-sFfplBFYctzBoCnTvw_wcB&gclsrc=aw.ds.ds&dclid=COOh9rPt6dMCFYOmUQodkpwLfQ) is being setup for extensive testing of every commit.
{% include paginator.html %}
-114
View File
@@ -1,114 +0,0 @@
---
title : "Documentation"
author_profile: false
excerpt: "Using HMC"
header:
overlay_color: "#5DADE2"
permalink: /docs/theories/hmc/
sidebar:
nav : docs
---
Using HMC in Grid version 0.7.0
These are the instructions to use the Generalised HMC on Grid version 0.7.0.
Disclaimer: GRID is still under active development so any information provided here can be changed in future releases.
Introduction
=======
The general problem is to generate a Markov Chain distributed according to the action $$S(\psi)$$ in order to compute observables expectaction values.
$$ \langle O \rangle = \frac{1}{Z} \int O e^{-S(\psi)} D\psi $$
The Hybrid Monte Carlo approach is to introduce ficticious random momenta to construct an Hamiltonian $$H(\psi)$$ and generate
new configurations by integrating the corresponding Hamilton equations.
$$H(\psi) = \frac{1}{2} P^2 + S(\psi)$$
Command line options
====================
(relevant file `GenericHMCrunner.h`)
List of command line options, specific for HMC
* ```--StartingType <string>```
Choices: HotStart, ColdStart, TepidStart, CheckpointStart
* ```--StartingTrajectory <integer>```
Only for CheckpointStart, ignored otherwise.
Expected format of the filename is ```<config prefix>.<integer>``` for the configuration and ```<rng file prefix>.<integer>```
* ```--Trajectories <integer>```
Number of trajectories in this run, excluding the thermalization steps. Default: 1.
* ```--Thermalizations <integers>```
Default: 10
* ```--ParameterFile <string>```
The filename for the input parameters deserialisation.
All of them, except the starting trajectory, can be overridden by the input file (but this behaviour can be easily changed by the user writing the source file).
Actions
======
Action names are defined in the file
lib/qcd/Actions.h
Gauge action names list:
```
WilsonGaugeActionR;
WilsonGaugeActionF;
WilsonGaugeActionD;
PlaqPlusRectangleActionR;
PlaqPlusRectangleActionF;
PlaqPlusRectangleActionD;
IwasakiGaugeActionR;
IwasakiGaugeActionF;
IwasakiGaugeActionD;
SymanzikGaugeActionR;
SymanzikGaugeActionF;
SymanzikGaugeActionD;
ConjugateWilsonGaugeActionR;
ConjugateWilsonGaugeActionF;
ConjugateWilsonGaugeActionD;
ConjugatePlaqPlusRectangleActionR;
ConjugatePlaqPlusRectangleActionF;
ConjugatePlaqPlusRectangleActionD;
ConjugateIwasakiGaugeActionR;
ConjugateIwasakiGaugeActionF;
ConjugateIwasakiGaugeActionD;
ConjugateSymanzikGaugeActionR;
ConjugateSymanzikGaugeActionF;
ConjugateSymanzikGaugeActionD;
```
Scalar action names list
```
ScalarActionR;
ScalarActionF;
ScalarActionD;
```
each of these action accept one single parameter at creation time (beta).
Example for creating a Symanzik action with beta=4.0
SymanzikGaugeActionR(4.0)
The suffixes R,F,D in the action names refer to the Real
(the precision is defined at compile time by the --enable-precision flag in the configure),
Float and Double, that force the precision of the action to be 32, 64 bit respectively.
-139
View File
@@ -1,139 +0,0 @@
---
##layout : single
title : "Documentation"
author_profile: false
excerpt: "Welcome to the Grid documentation pages"
header:
overlay_color: "#5DADE2"
#cta_label: "Download documentation"
#cta_url: "https://www.google.com"
sidebar:
nav : docs
permalink: /docs/
---
{% include base_path %}
We are currently working on the full documentation.
{% if site.option=="web" %}
Use the sidebar on the left to navigate.
{% endif %}
_May 2017 : The API description and Lattice Theories sections in the sidebar are work in progress_.
### Version history
* May 2017 [version 0.7.0](https://github.com/paboyle/Grid/tree/release/v0.7.0)
* November 2016 [version 0.6.0](https://github.com/paboyle/Grid/tree/release/v0.6.0)
Grid is primarily an application development interface (API) for structured Cartesian grid codes and written in C++11.
In particular it is aimed at Lattice Field Theory simulations in general gauge theories, but with a particular emphasis
on supporting SU(3) and U(1) gauge theories relevant to hadronic physics.
### Description
This library provides data parallel C++ container classes with internal memory layout
that is transformed to map efficiently to SIMD architectures. CSHIFT facilities
are provided, similar to HPF and cmfortran, and user control is given over the mapping of
array indices to both MPI tasks and SIMD processing elements.
* Identically shaped arrays then be processed with perfect data parallelisation.
* Such identically shaped arrays are called conformable arrays.
The transformation is based on the observation that Cartesian array processing involves
identical processing to be performed on different regions of the Cartesian array.
The library will both geometrically decompose into MPI tasks and across SIMD lanes.
Local vector loops are parallelised with OpenMP pragmas.
Data parallel array operations can then be specified with a SINGLE data parallel paradigm, but
optimally use MPI, OpenMP and SIMD parallelism under the hood. This is a significant simplification
for most programmers.
The layout transformations are parametrised by the SIMD vector length. This adapts according to the architecture.
Presently SSE4 (128 bit) AVX, AVX2, QPX (256 bit), IMCI, and AVX512 (512 bit) targets are supported (ARM NEON on the way).
These are presented as `vRealF`, `vRealD`, `vComplexF`, and `vComplexD` internal vector data types. These may be useful in themselves for other programmers.
The corresponding scalar types are named `RealF`, `RealD`, `ComplexF` and `ComplexD`.
MPI, OpenMP, and SIMD parallelism are present in the library.
Please see [this paper](https://arxiv.org/abs/1512.03487) for more detail.
### Who will use this library
As an application development interface *Grid* is primarily a programmers tool providing the
building blocks and primitives for constructing lattice gauge theory programmes.
Grid functionality includes:
* Data parallel primitives, similar to QDP++
* gauge and fermion actions
* solvers
* gauge and fermion force terms
* integrators and (R)HMC.
* parallel field I/O
* object serialisation (text, XML, JSON...)
Grid is intended to enable the rapid and easy development of code with reasonably competitive performance.
It is first and foremost a *library* to which people can programme, and develop new algorithms and measurements.
As such, it is very much hoped that peoples principle point of contact with Grid will be in
the wonderfully rich C++ language. Since import and export procedures are provided for the opaque lattice types
it should be possible to call Grid from other code bases.
Grid is most tightly coupled to the Hadrons package
developed principally by Antonin Portelli.
This package is entirely composed against the Grid data parallel interface.
Interfacing to other packages is also possible.
Several regression tests that combine Grid with Chroma are included in the Grid distribution.
Further, Grid has been successfully interfaced to
* The Columbia Physics System
* The MILC code
### Data parallel interface
Most users will wish to interact with Grid above the data parallel *Lattice* interface. At this level
a programme is simply written as a series of statements, addressing entire lattice objects.
Implementation details may be provided to explain how the code works, but are not strictly part of the API.
**Example**
For example, as an implementation detail, in a single programme multiple data (SPMD) message passing supercomputer the main programme is trivially replicated on each computing node. The data parallel operations are called *collectively* by all nodes. Any scalar values returned by the various reduction routines are the same on each node, resulting in (for example) the same decision being made by all nodes to terminate an iterative solver on the same iteration.
### Internal development
Internal developers may contribute to Grid at a level below the data parallel interface.
Specifically, development of new lattice Dirac operators, for example,
or any codes directly interacting with the
* Communicators
* Simd
* Tensor
* Stencil
will make use of facilities provided by to assist the creation of high performance code. The internal data layout complexities
will be exposed to some degree and the interfaces are subject to change without notice as HPC architectures change.
Since some of the internal implementation details are needed to explain the design strategy of grid these will be
documented, but labelled as *implementation dependent*
Reasonable endeavours will be made to preserve functionality where practical but no guarantees are made.
{% include paginator.html %}
-361
View File
@@ -1,361 +0,0 @@
---
layout: splash
title : "GRID license"
author_profile: false
excerpt: "Grid is licensed under GPL 2.0"
permalink: /license/
header:
overlay_color: "#333"
cta_label: "GPL licenses FAQs"
cta_url: "https://www.gnu.org/licenses/gpl-faq.html"
---
{% include base_path %}
GNU General Public License
==========================
_Version 2, June 1991_
_Copyright © 1989, 1991 Free Software Foundation, Inc.,_
_51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA_
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
### Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: **(1)** copyright the software, and
**(2)** offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
**0.** This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The “Program”, below,
refers to any such program or work, and a “work based on the Program”
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term “modification”.) Each licensee is addressed as “you”.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
**1.** You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
**2.** You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
* **a)** You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
* **b)** You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
* **c)** If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
**3.** You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
* **a)** Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
* **b)** Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
* **c)** Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
**4.** You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
**5.** You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
**6.** Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
**7.** If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
**8.** If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
**9.** The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and “any
later version”, you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
**10.** If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
### NO WARRANTY
**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
### How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the “copyright” line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w` and `show c` should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w` and `show c`; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a “copyright disclaimer” for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
{% for post in paginator.posts %}
{% include archive-single.html %}
{% endfor %}
{% include paginator.html %}
-21
View File
@@ -1,21 +0,0 @@
/* ==========================================================================
ANIMATIONS
========================================================================== */
@-webkit-keyframes intro {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes intro {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
-238
View File
@@ -1,238 +0,0 @@
/* ==========================================================================
ARCHIVE
========================================================================== */
.archive {
margin-bottom: 2em;
@include breakpoint($medium) {
@include span(12 of 12);
}
@include breakpoint($large) {
@include span(10 of 12 last);
@include prefix(0.5 of 12);
}
a {
color: inherit;
text-decoration: none;
}
}
.archive__subtitle {
margin: 1.414em 0 0;
padding-bottom: 0.5em;
font-size: $type-size-5;
color: mix(#fff, $gray, 25%);
border-bottom: 1px solid $border-color;
+ .list__item .archive__item-title {
margin-top: 0.5em;
}
}
.archive__item-title {
margin-bottom: 0.25em;
font-family: $sans-serif-narrow;
a + a {
opacity: 0.5;
}
}
/* remove border*/
.page__content {
.archive__item-title {
margin-top: 1em;
border-bottom: none;
}
}
.archive__item-excerpt {
margin-top: 0;
font-size: $type-size-6;
& + p {
text-indent: 0;
}
}
.archive__item-teaser {
border-radius: $border-radius;
overflow: hidden;
img {
width: 100%;
}
}
.archive__item:hover {
.archive__item-teaser {
box-shadow: 0 0 10px rgba(#000, 0.25);
}
.archive__item-title {
text-decoration: underline;
}
}
/*
List view
========================================================================== */
.list__item {
@include breakpoint($medium) {
padding-right: $right-sidebar-width-narrow;
}
@include breakpoint($large) {
padding-right: $right-sidebar-width;
}
@include breakpoint($x-large) {
padding-right: $right-sidebar-width-wide;
}
.page__meta {
margin: 0 0 4px;
}
}
/*
Grid view
========================================================================== */
.grid__item {
margin-bottom: 2em;
.page__meta {
margin: 0 0 4px;
}
.archive__item-title {
margin-top: 0.5em;
font-size: $type-size-5;
}
.archive__item-excerpt {
display: none;
}
@include breakpoint($small) {
@include gallery(5 of 10);
.archive__item-teaser {
max-height: 200px;
}
}
@include breakpoint($medium) {
margin-left: 0; /* reset before mixin does its thing*/
margin-right: 0; /* reset before mixin does its thing*/
@include gallery(2.5 of 10);
.archive__item-teaser {
max-height: 120px;
}
.archive__item-excerpt {
display: block;
font-size: $type-size-6;
}
}
}
/*
Features
========================================================================== */
.feature__wrapper {
@include clearfix();
margin-bottom: 2em;
border-bottom: 1px solid $border-color;
}
.feature__item {
margin-bottom: 2em;
font-size: 1.25rem;
@include breakpoint($small) {
margin-bottom: 0;
@include gallery(4 of 12);
.feature__item-teaser {
max-height: 200px;
overflow: hidden;
}
}
&--left {
@include full();
font-size: 1.25rem;
.archive__item-teaser {
margin-bottom: 2em;
}
@include breakpoint($small) {
.archive__item-teaser {
@include span(5 of 12);
}
.archive__item-body {
@include span(7 of 12 last);
@include prefix(0.5 of 12);
@include suffix(1 of 12);
}
}
}
&--right {
@include full();
font-size: 1.25rem;
.archive__item-teaser {
margin-bottom: 2em;
}
@include breakpoint($small) {
text-align: right;
.archive__item-teaser {
@include span(5 of 12 rtl);
}
.archive__item-body {
@include span(7 of 12 last rtl);
@include prefix(0.5 of 12);
@include suffix(1 of 12);
}
}
}
&--center {
@include full();
font-size: 1.25rem;
.archive__item-teaser {
margin-bottom: 2em;
}
@include breakpoint($small) {
text-align: center;
.archive__item-teaser {
margin: 0 auto;
width: span(5 of 12);
}
.archive__item-body {
margin: 0 auto;
width: span(7 of 12);
}
}
}
}
-315
View File
@@ -1,315 +0,0 @@
/* ==========================================================================
BASE ELEMENTS
========================================================================== */
html {
/* sticky footer fix */
position: relative;
min-height: 100%;
}
body {
margin: 0;
padding: 0;
color: $text-color;
font-family: $global-font-family;
line-height: 1.5;
&.overflow--hidden {
/* when primary navigation is visible, the content in the background won't scroll */
overflow: hidden;
}
}
h1, h2, h3, h4, h5, h6 {
margin: 2em 0 0.5em;
line-height: 1.2;
font-family: $header-font-family;
font-weight: bold;
}
h1 {
margin-top: 0;
font-size: $type-size-3;
}
h2 {
font-size: $type-size-4;
}
h3 {
font-size: $type-size-5;
}
h4 {
font-size: $type-size-6;
}
h5 {
font-size: $type-size-6;
}
h6 {
font-size: $type-size-6;
}
small, .small {
font-size: $type-size-6;
}
p {
margin-bottom: 1.3em;
}
u,
ins {
text-decoration: none;
border-bottom: 1px solid $text-color;
a {
color: inherit;
}
}
del a {
color: inherit;
}
/* reduce orphans and widows when printing */
p, pre, blockquote, ul, ol, dl, figure, table, fieldset {
orphans: 3;
widows: 3;
}
/* abbreviations */
abbr[title],
abbr[data-original-title] {
text-decoration: none;
cursor: help;
border-bottom: 1px dotted $text-color;
}
/* blockquotes */
blockquote {
margin: 2em 1em 2em 0;
padding-left: 1em;
padding-right: 1em;
font-style: italic;
border-left: 0.25em solid $primary-color;
cite {
font-style: italic;
&:before {
content: "\2014";
padding-right: 5px;
}
}
}
/* links */
a {
&:focus {
@extend %tab-focus;
}
&:hover,
&:active {
outline: 0;
}
}
/* code */
tt, code, kbd, samp, pre {
font-family: $monospace;
}
pre {
overflow-x: auto; /* add scrollbars to wide code blocks*/
}
p > code,
a > code,
li > code,
figcaption > code,
td > code {
padding-top: 0.1rem;
padding-bottom: 0.1rem;
font-size: $type-size-6;
background: $code-background-color;
border: 1px solid $lighter-gray;
border-radius: $border-radius;
box-shadow: $box-shadow;
&:before, &:after {
letter-spacing: -0.2em;
content: "\00a0"; /* non-breaking space*/
}
}
/* horizontal rule */
hr {
display: block;
margin: 1em 0;
border: 0;
border-top: 1px solid $border-color;
}
/* lists */
ul li,
ol li {
margin-bottom: 0.5em;
}
li ul,
li ol {
margin-top: 0.5em;
}
/*
Media and embeds
========================================================================== */
/* Figures and images */
figure {
display: -webkit-box;
display: flex;
-webkit-box-pack: justify;
justify-content: space-between;
-webkit-box-align: start;
align-items: flex-start;
flex-wrap: wrap;
margin: 2em 0;
img,
iframe,
.fluid-width-video-wrapper {
margin-bottom: 1em;
}
img {
width: 100%;
border-radius: $border-radius;
-webkit-transition: $global-transition;
transition: $global-transition;
}
> a {
display: block;
}
&.half {
> a,
> img {
@include breakpoint($small) {
width: calc(50% - 0.5em);
}
}
figcaption {
width: 100%;
}
}
&.third {
> a,
> img {
@include breakpoint($small) {
width: calc(33.3333% - 0.5em);
}
}
figcaption {
width: 100%;
}
}
}
/* Figure captions */
figcaption {
margin-bottom: 0.5em;
color: mix(#fff, $text-color, 25%);
font-family: $caption-font-family;
font-size: $type-size-6;
a {
color: inherit;
text-decoration: none;
border-bottom: 1px solid $light-gray;
-webkit-transition: $global-transition;
transition: $global-transition;
&:hover {
color: #000;
border-bottom-color: #000;
}
}
}
/* Fix IE9 SVG bug */
svg:not(:root) {
overflow: hidden;
}
/*
Navigation lists
========================================================================== */
/**
* Removes margins, padding, and bullet points from navigation lists
*
* Example usage:
* <nav>
* <ul>
* <li><a href="#link-1">Link 1</a></li>
* <li><a href="#link-2">Link 2</a></li>
* <li><a href="#link-3">Link 3</a></li>
* </ul>
* </nav>
*/
nav {
ul {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
a {
text-decoration: none;
}
/* override white-space for nested lists */
ul li,
ol li {
margin-bottom: 0;
}
li ul,
li ol {
margin-top: 0;
}
}
/*
Global animation transition
========================================================================== */
b, i, strong, em, blockquote, p, q, span, figure, img, h1, h2, header, input, a, tr, td, form button, input[type="submit"], .btn, .highlight, .archive__item-teaser {
-webkit-transition: $global-transition;
transition: $global-transition;
}
-153
View File
@@ -1,153 +0,0 @@
/* ==========================================================================
BUTTONS
========================================================================== */
/*
Default button
========================================================================== */
.btn {
/* default button */
display: inline-block;
margin-bottom: 0.25em;
padding: 0.5em 1em;
color: #fff !important;
font-family: $sans-serif;
font-size: $type-size-6;
font-weight: bold;
text-align: center;
text-decoration: none;
background-color: $primary-color;
border: 0 !important;
border-radius: $border-radius;
cursor: pointer;
&:hover {
background-color: mix(white, #000, 20%);
}
.icon {
margin-right: 0.5em;
}
.icon + .hidden {
margin-left: -0.5em; /* override for hidden text*/
}
/* fills width of parent container */
&--block {
display: block;
width: 100%;
+ .btn--block {
margin-top: 0.25em;
}
}
/* for dark backgrounds */
&--inverse {
color: $gray !important;
border: 1px solid $light-gray !important; /* override*/
background-color: #fff;
&:hover {
color: #fff !important;
border-color: $gray;
}
}
/* light outline */
&--light-outline {
border: 1px solid #fff !important; /* override*/
background-color: transparent;
}
/* information */
&--info {
background-color: $info-color;
&:hover {
background-color: mix(#000, $info-color, 20%);
}
}
/* warning */
&--warning {
background-color: $warning-color;
&:hover {
background-color: mix(#000, $warning-color, 20%);
}
}
/* success */
&--success {
background-color: $success-color;
&:hover {
background-color: mix(#000, $success-color, 20%);
}
}
/* danger */
&--danger {
background-color: $danger-color;
&:hover {
background-color: mix(#000, $danger-color, 20%);
}
}
/* disabled */
&--disabled {
pointer-events: none;
cursor: not-allowed;
filter: alpha(opacity=65);
box-shadow: none;
opacity: 0.65;
}
/* social buttons */
$social:
(facebook, $facebook-color),
(twitter, $twitter-color),
(google-plus, $google-plus-color),
(linkedin, $linkedin-color);
@each $socialnetwork, $color in $social {
&--#{$socialnetwork} {
background-color: $color;
&:hover {
background-color: mix(#000, $color, 20%);
}
}
}
/* extra large button */
&--x-large {
font-size: $type-size-4;
}
/* large button */
&--large {
font-size: $type-size-5;
}
/* small button */
&--small {
font-size: $type-size-7;
}
}
-80
View File
@@ -1,80 +0,0 @@
/* ==========================================================================
FOOTER
========================================================================== */
.page__footer {
@include full();
@include clearfix;
/* sticky footer fix start */
position: absolute;
bottom: 0;
width: 100%;
clear: both;
height: auto;
/* sticky footer fix end */
margin-top: 3em;
color: mix(#fff, $gray, 25%);
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.45s;
animation-delay: 0.45s;
background-color: $lighter-gray;
border-top: 1px solid $light-gray;
footer {
@include container;
@include clearfix;
margin-top: 2em;
padding: 0 1em 2em;
@include breakpoint($x-large) {
max-width: $x-large;
}
}
a {
color: inherit;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
.fa {
color: mix(#fff, $gray, 25%);
}
}
.page__footer-copyright {
font-family: $global-font-family;
font-size: $type-size-7;
}
.page__footer-follow {
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
li {
display: inline-block;
padding-top: 5px;
padding-bottom: 5px;
font-family: $sans-serif-narrow;
font-size: $type-size-6;
text-transform: uppercase;
}
li + li:before {
content: "";
padding-right: 5px;
}
a {
padding-right: 10px;
font-weight: bold;
}
}
-391
View File
@@ -1,391 +0,0 @@
/* ==========================================================================
Forms
========================================================================== */
form {
margin: 0 0 5px 0;
fieldset {
margin-bottom: 5px;
padding: 0;
border-width: 0;
}
legend {
display: block;
width: 100%;
margin-bottom: 5px * 2;
*margin-left: -7px;
padding: 0;
color: $text-color;
border: 0;
border-bottom: 1px solid mix(#fff, #000, 80%);
white-space: normal;
}
p {
margin-bottom: 5px / 2;
}
ul {
list-style-type: none;
margin: 0 0 5px 0;
padding: 0;
}
br {
display: none;
}
}
label,
input,
button,
select,
textarea {
vertical-align: baseline;
*vertical-align: middle;
}
input,
button,
select,
textarea {
box-sizing: border-box;
font-family: $sans-serif;
}
label {
display: block;
margin-bottom: 0.25em;
color: $text-color;
cursor: pointer;
small {
font-size: $type-size-6;
}
input,
textarea,
select {
display: block;
}
}
input,
textarea,
select {
display: inline-block;
width: 100%;
padding: 0.25em;
margin-bottom: 0.5em;
color: $text-color;
background-color: #fff;
border: 1px solid mix(#fff, #000, 80%);
border-radius: $border-radius;
box-shadow: $box-shadow;
&:hover {
border-color: mix(#fff, $primary-color, 50%);
}
}
.input-mini {
width: 60px;
}
.input-small {
width: 90px;
}
input[type="image"],
input[type="checkbox"],
input[type="radio"] {
width: auto;
height: auto;
padding: 0;
margin: 3px 0;
*margin-top: 0;
line-height: normal;
cursor: pointer;
border-radius: 0;
border: 0 \9;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
padding: 0;
*width: 13px;
*height: 13px;
}
input[type="image"] {
border: 0;
box-shadow: none;
}
input[type="file"] {
width: auto;
padding: initial;
line-height: initial;
border: initial;
background-color: transparent;
background-color: initial;
box-shadow: none;
}
input[type="button"],
input[type="reset"],
input[type="submit"] {
width: auto;
height: auto;
cursor: pointer;
*overflow: visible;
}
select,
input[type="file"] {
*margin-top: 4px;
}
select {
width: auto;
background-color: #fff;
}
select[multiple],
select[size] {
height: auto;
}
textarea {
resize: vertical;
height: auto;
overflow: auto;
vertical-align: top;
}
input[type="hidden"] {
display: none;
}
.form {
position: relative;
}
.radio,
.checkbox {
padding-left: 18px;
font-weight: normal;
}
.radio input[type="radio"],
.checkbox input[type="checkbox"] {
float: left;
margin-left: -18px;
}
.radio.inline,
.checkbox.inline {
display: inline-block;
padding-top: 5px;
margin-bottom: 0;
vertical-align: middle;
}
.radio.inline + .radio.inline,
.checkbox.inline + .checkbox.inline {
margin-left: 10px;
}
/*
Disabled state
========================================================================== */
input[disabled],
select[disabled],
textarea[disabled],
input[readonly],
select[readonly],
textarea[readonly] {
opacity: 0.5;
cursor: not-allowed;
}
/*
Focus & active state
========================================================================== */
input:focus,
textarea:focus {
border-color: $primary-color;
outline: 0;
outline: thin dotted \9;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus,
select:focus {
box-shadow: none;
}
/*
Help text
========================================================================== */
.help-block,
.help-inline {
color: $info-color;
}
.help-block {
display: block;
margin-bottom: 1em;
line-height: 1em;
}
.help-inline {
display: inline-block;
vertical-align: middle;
padding-left: 5px;
}
/*
.form-inline
========================================================================== */
.form-inline input,
.form-inline textarea,
.form-inline select {
display: inline-block;
margin-bottom: 0;
}
.form-inline label {
display: inline-block;
}
.form-inline .radio,
.form-inline .checkbox,
.form-inline .radio {
padding-left: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
float: left;
margin-left: 0;
margin-right: 3px; }
/*
.form-search
========================================================================== */
.form-search input,
.form-search textarea,
.form-search select {
display: inline-block;
margin-bottom: 0;
}
.form-search .search-query {
padding-left: 14px;
padding-right: 14px;
margin-bottom: 0;
border-radius: 14px;
}
.form-search label {
display: inline-block;
}
.form-search .radio,
.form-search .checkbox,
.form-inline .radio {
padding-left: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-search .radio input[type="radio"],
.form-search .checkbox input[type="checkbox"] {
float: left;
margin-left: 0;
margin-right: 3px;
}
/*
.form--loading
========================================================================== */
.form--loading:before {
content: '';
}
.form--loading .form__spinner {
display: block;
}
.form:before {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.7);
z-index: 10;
}
.form__spinner {
display: none;
position: absolute;
top: 50%;
left: 50%;
z-index: 11;
}
/*
Google search form
========================================================================== */
#goog-fixurl {
ul {
list-style: none;
margin-left: 0;
padding-left: 0;
li {
list-style-type: none;
}
}
}
#goog-wm-qt {
width: auto;
margin-right: 10px;
margin-bottom: 20px;
padding: 8px 20px;
display: inline-block;
font-size: $type-size-6;
background-color: #fff;
color: #000;
border-width: 2px !important;
border-style: solid !important;
border-color: lighten(#000,50);
border-radius: $border-radius;
}
#goog-wm-sb {
@extend .btn;
}
-56
View File
@@ -1,56 +0,0 @@
/* ==========================================================================
MASTHEAD
========================================================================== */
.masthead {
position: relative;
border-bottom: 1px solid $border-color;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.15s;
animation-delay: 0.15s;
z-index: 20;
&__inner-wrap {
@include container;
@include clearfix;
padding-top: 0.5em;
padding-bottom: 0.5em;
padding-left: 1em;
padding-right: 1em;
font-family: $sans-serif-narrow;
@include breakpoint($x-large) {
max-width: $x-large;
}
nav {
z-index: 10;
}
a {
text-decoration: none;
}
}
}
.masthead__menu {
ul {
margin: 0;
padding: 0;
clear: both;
list-style-type: none;
}
}
.masthead__menu-item {
display: block;
list-style-type: none;
white-space: nowrap;
&--lg {
padding-right: 2em;
font-weight: 700;
}
}
-53
View File
@@ -1,53 +0,0 @@
/* ==========================================================================
MIXINS
========================================================================== */
%tab-focus {
/* Default*/
outline: thin dotted $warning-color;
/* Webkit*/
outline: 5px auto $warning-color;
outline-offset: -2px;
}
/*
em function
========================================================================== */
@function em($target, $context: $doc-font-size) {
@return ($target / $context) * 1em;
}
/*
Bourbon clearfix
========================================================================== */
/*
* Provides an easy way to include a clearfix for containing floats.
* link http://cssmojo.com/latest_new_clearfix_so_far/
*
* example scss - Usage
*
* .element {
* @include clearfix;
* }
*
* example css - CSS Output
*
* .element::after {
* clear: both;
* content: "";
* display: table;
* }
*/
@mixin clearfix {
clear: both;
&::after {
clear: both;
content: "";
display: table;
}
}
-442
View File
@@ -1,442 +0,0 @@
/* ==========================================================================
NAVIGATION
========================================================================== */
/*
Breadcrumb navigation links
========================================================================== */
.breadcrumbs {
@include container;
@include clearfix;
margin-top: 0;
margin-bottom: 0;
padding-left: 2em;
padding-right: 2em;
font-family: $sans-serif;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.30s;
animation-delay: 0.30s;
@include breakpoint($large) {
padding-left: 1em;
padding-right: 1em;
}
@include breakpoint($x-large) {
max-width: $x-large;
}
ol {
padding: 0;
list-style: none;
font-size: $type-size-6;
@include breakpoint($large) {
@include span(10 of 12 last);
}
@include breakpoint($x-large) {
@include prefix(0.5 of 12);
}
}
li {
display: inline;
}
.current {
font-weight: bold;
}
}
/*
Post pagination navigation links
========================================================================== */
.pagination {
@include full();
@include clearfix();
margin-top: 1em;
padding-top: 1em;
ul {
margin: 0;
padding: 0;
list-style-type: none;
font-family: $sans-serif;
}
li {
display: block;
float: left;
margin-left: -1px;
a {
margin-bottom: 0.25em;
padding: 0.5em 1em;
font-family: $sans-serif;
font-size: 14px;
font-weight: bold;
line-height: 1.5;
text-align: center;
text-decoration: none;
color: mix(#fff, $gray, 25%);
border: 1px solid $light-gray;
border-radius: 0;
&:hover {
color: $link-color-hover;
}
&.current {
color: #fff;
background: $primary-color;
}
&.disabled {
color: mix(#fff, $gray, 75%);
pointer-events: none;
cursor: not-allowed;
}
}
&:first-child {
margin-left: 0;
a {
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
}
}
&:last-child {
a {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
}
}
}
/* next/previous buttons */
&--pager {
display: block;
padding: 1em 2em;
float: left;
width: 50%;
font-family: $sans-serif;
font-size: $type-size-5;
font-weight: bold;
text-align: center;
text-decoration: none;
color: mix(#fff, $gray, 50%);
border: 1px solid $light-gray;
border-radius: $border-radius;
&:hover {
color: $link-color-hover;
}
&:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
&:last-child {
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
&.disabled {
color: mix(#fff, $gray, 75%);
pointer-events: none;
cursor: not-allowed;
}
}
}
.page__content + .pagination,
.page__meta + .pagination,
.page__share + .pagination,
.page__comments + .pagination {
margin-top: 2em;
padding-top: 2em;
border-top: 1px solid $border-color;
}
/*
Priority plus navigation
========================================================================== */
.greedy-nav {
position: relative;
min-width: 250px;
background: $background-color;
a {
display: block;
margin: 0 1rem;
padding: 0.5rem 0;
color: $masthead-link-color;
text-decoration: none;
&:hover {
color: $masthead-link-color-hover;
}
}
button {
position: absolute;
height: 100%;
right: 0;
padding: 0 0.5rem;
border: 0;
outline: none;
background-color: $primary-color;
color: #fff;
cursor: pointer;
}
.visible-links {
display: table;
li {
display: table-cell;
vertical-align: middle;
&:first-child {
font-weight: bold;
a {
margin-left: 0;
}
}
&:last-child {
a {
margin-right: 0;
}
}
}
a {
position: relative;
&:before {
content: "";
position: absolute;
left: 0;
bottom: 0;
height: 4px;
background: mix(#fff, $primary-color, 50%);
width: 100%;
-webkit-transition: $global-transition;
transition: $global-transition;
-webkit-transform: scaleX(0);
-ms-transform: scaleX(0);
transform: scaleX(0); /* hide*/
}
&:hover:before {
-webkit-transform: scaleX(1);
-ms-transform: scaleX(1);
transform: scaleX(1); /* reveal*/
}
}
}
.hidden-links {
position: absolute;
top: 100%;
right: 0;
margin-top: 15px;
padding: 5px;
border: 1px solid $border-color;
border-radius: $border-radius;
background: #fff;
box-shadow: 0 0 10px rgba(#000, 0.25);
a {
margin: 0;
padding: 10px 20px;
font-size: $type-size-5;
&:hover {
color: $masthead-link-color-hover;
background: mix(#fff, $primary-color, 75%);
}
}
&:before {
content: "";
position: absolute;
top: -11px;
right: 10px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: $border-color transparent;
display: block;
z-index: 0;
}
&:after {
content: "";
position: absolute;
top: -10px;
right: 10px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: #fff transparent;
display: block;
z-index: 1;
}
li {
display: block;
border-bottom: 1px solid $border-color;
&:last-child {
border-bottom: none;
}
}
}
}
/*
Navigation list
========================================================================== */
.nav__list {
font-size: 1.25rem;
ul {
margin-bottom: 1em;
}
a {
display: block;
padding: 0.125em 0;
color: inherit;
&:hover {
text-decoration: underline;
}
}
.active {
margin-left: -0.5em;
padding-left: 0.5em;
padding-right: 0.5em;
color: #fff;
font-weight: bold;
background: $primary-color;
border-radius: $border-radius;
&:hover {
color: #fff;
}
}
.nav__noclick {
pointer-events: none;
color: #ccc;
}
}
.nav__title {
margin: 0;
padding: 0.5rem 1rem;
font-family: $sans-serif-narrow;
font-size: $type-size-5;
font-weight: bold;
}
.nav__sub-title {
display: block;
margin: 0.5rem 0;
padding: 0.5rem 0;
font-family: $sans-serif-narrow;
font-size: $type-size-6;
font-weight: bold;
text-transform: uppercase;
border-bottom: 1px solid $border-color;
}
/*
Table of contents navigation
========================================================================== */
.toc {
font-family: $sans-serif-narrow;
color: $gray;
text-transform: uppercase;
letter-spacing: 1px;
background-color: #fff;
border: 1px solid $border-color;
border-radius: $border-radius;
box-shadow: $box-shadow;
.nav__title {
color: #fff;
font-size: $type-size-6;
background: $primary-color;
border-top-left-radius: $border-radius;
border-top-right-radius: $border-radius;
}
}
.toc__menu {
margin: 0;
padding: 0;
width: 100%;
list-style: none;
font-size: 0.8rem;
a {
display: block;
padding: 0.5rem 1rem;
color: $gray;
font-size: $type-size-7;
font-weight: bold;
line-height: 1.5;
border-bottom: 1px solid $border-color;
&:hover {
color: #000;
background: $lighter-gray;
}
}
> li:last-child {
a {
border-bottom: none;
}
}
li ul > li a {
padding-left: 2rem;
font-weight: normal;
}
/* hide sub sub links on small screens*/
li > ul li {
display: none;
@include breakpoint($medium) {
display: block;
}
}
}
-99
View File
@@ -1,99 +0,0 @@
/* ==========================================================================
NOTICE TEXT BLOCKS
========================================================================== */
/**
* Default Kramdown usage (no indents!):
* <div class="notice" markdown="1">
* #### Headline for the Notice
* Text for the notice
* </div>
*/
@mixin notice($notice-color) {
margin: 2em 0 !important; /* override*/
padding: 1em;
font-family: $global-font-family;
font-size: $type-size-6 !important;
text-indent: initial; /* override*/
background-color: mix(#fff, $notice-color, 90%);
border-radius: $border-radius;
box-shadow: 0 1px 1px rgba($notice-color, 0.25);
h4 {
margin-top: 0 !important; /* override*/
margin-bottom: 0.75em;
}
@at-root .page__content #{&} h4 {
/* using at-root to override .page-content h4 font size*/
margin-bottom: 0;
font-size: 1em;
}
p {
&:last-child {
margin-bottom: 0 !important; /* override*/
}
}
h4 + p {
/* remove space above paragraphs that appear directly after notice headline*/
margin-top: 0;
padding-top: 0;
}
a {
color: $notice-color;
&:hover {
color: mix(#000, $notice-color, 40%);
}
}
code {
background-color: mix(#fff, $notice-color, 95%)
}
ul {
&:last-child {
margin-bottom: 0; /* override*/
}
}
}
/* Default notice */
.notice {
@include notice($light-gray);
}
/* Primary notice */
.notice--primary {
@include notice($primary-color);
}
/* Info notice */
.notice--info {
@include notice($info-color);
}
/* Warning notice */
.notice--warning {
@include notice($warning-color);
}
/* Success notice */
.notice--success {
@include notice($success-color);
}
/* Danger notice */
.notice--danger {
@include notice($danger-color);
}
-401
View File
@@ -1,401 +0,0 @@
/* ==========================================================================
SINGLE PAGE/POST
========================================================================== */
#main {
@include container;
@include clearfix;
margin-top: 2em;
padding-left: 1em;
padding-right: 1em;
animation: intro 0.3s both;
animation-delay: 0.35s;
@include breakpoint($x-large) {
max-width: $x-large;
}
}
.page {
@include breakpoint($large) {
@include span(10 of 12 last);
@include prefix(0.5 of 12);
@include suffix(2 of 12);
}
.page__inner-wrap {
@include full();
.page__content,
.page__meta,
.page__share {
@include full();
}
}
}
.page__title {
margin-top: 0;
line-height: 1;
& + .page__meta {
margin-top: -0.5em;
}
}
.page__lead {
font-family: $global-font-family;
font-size: $type-size-4;
}
.page__content {
h2 {
padding-bottom: 0.5em;
border-bottom: 1px solid $border-color;
}
p, li, dl {
font-size: 0.8em;
}
/* paragraph indents */
p {
margin: 0 0 $indent-var;
/* sibling indentation*/
@if $paragraph-indent == true {
& + p {
text-indent: $indent-var;
margin-top: -($indent-var);
}
}
}
a {
text-decoration: none;
&:hover {
text-decoration: underline;
img {
box-shadow: 0 0 10px rgba(#000, 0.25);
}
}
}
dt {
margin-top: 1em;
font-family: $sans-serif;
font-weight: bold;
}
dd {
margin-left: 1em;
font-family: $sans-serif;
font-size: $type-size-6;
}
.small {
font-size: $type-size-6;
}
/* blockquote citations */
blockquote + .small {
margin-top: -1.5em;
padding-left: 1.25rem;
}
}
.page__hero {
position: relative;
margin-bottom: 2em;
@include clearfix;
animation: intro 0.3s both;
animation-delay: 0.25s;
&--overlay {
position: relative;
margin-bottom: 2em;
padding: 2em 0;
@include clearfix;
background-size: cover;
background-repeat: no-repeat;
background-position: center;
animation: intro 0.3s both;
animation-delay: 0.25s;
a {
color: #fff;
}
.wrapper {
padding-left: 1em;
padding-right: 1em;
@include breakpoint($x-large) {
max-width: $x-large;
}
}
.page__title,
.page__meta,
.page__lead,
.btn {
color: #fff;
text-shadow: 1px 1px 4px rgba(#000, 0.5);
}
.page__lead {
max-width: $medium;
}
.page__title {
font-size: $type-size-2;
@include breakpoint($small) {
font-size: $type-size-1;
}
}
}
}
.page__hero-image {
width: 100%;
height: auto;
-ms-interpolation-mode: bicubic;
}
.page__hero-caption {
position: absolute;
bottom: 0;
right: 0;
margin: 0 auto;
padding: 2px 5px;
color: #fff;
font-family: $caption-font-family;
font-size: $type-size-7;
background: #000;
text-align: right;
z-index: 5;
opacity: 0.5;
border-radius: $border-radius 0 $border-radius 0;
@include breakpoint($large) {
padding: 5px 10px;
}
a {
color: #fff;
text-decoration: none;
}
}
/*
Social sharing
========================================================================== */
.page__share {
margin-top: 2em;
padding-top: 1em;
border-top: 1px solid $border-color;
@include breakpoint(max-width $small) {
.btn span {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
}
}
.page__share-title {
margin-bottom: 10px;
font-size: $type-size-6;
text-transform: uppercase;
}
/*
Page meta
========================================================================== */
.page__meta {
margin-top: 2em;
color: mix(#fff, $gray, 25%);
font-family: $sans-serif;
font-size: $type-size-6;
p {
margin: 0;
}
a {
color: inherit;
}
}
.page__meta-title {
margin-bottom: 10px;
font-size: $type-size-6;
text-transform: uppercase;
}
/*
Page taxonomy
========================================================================== */
.page__taxonomy {
.sep {
display: none;
}
strong {
margin-right: 10px;
}
}
.page__taxonomy-item {
display: inline-block;
margin-right: 5px;
margin-bottom: 8px;
padding: 5px 10px;
text-decoration: none;
border: 1px solid $light-gray;
border-radius: $border-radius;
&:hover {
text-decoration: none;
color: $link-color-hover;
}
}
/*
Comments
========================================================================== */
.page__comments {
@include full();
}
.page__comments-title {
margin-top: 2rem;
margin-bottom: 10px;
padding-top: 2rem;
font-size: $type-size-6;
border-top: 1px solid $border-color;
text-transform: uppercase;
}
.page__comments-form {
padding: 1em;
background: $lighter-gray;
transition: $global-transition;
&.disabled {
input,
button,
textarea,
label {
pointer-events: none;
cursor: not-allowed;
filter: alpha(opacity=65);
box-shadow: none;
opacity: 0.65;
}
}
}
.comment {
@include clearfix();
margin: 1em 0;
&:not(:last-child) {
border-bottom: 1px solid $border-color;
}
}
.comment__avatar-wrapper {
float: left;
width: 60px;
height: 60px;
@include breakpoint($large) {
width: 100px;
height: 100px;
}
}
.comment__avatar {
width: 40px;
height: 40px;
border-radius: 50%;
@include breakpoint($large) {
width: 80px;
height: 80px;
padding: 5px;
border: 1px solid $border-color;
}
}
.comment__content-wrapper {
float: right;
width: calc(100% - 60px);
@include breakpoint($large) {
width: calc(100% - 100px);
}
}
.comment__author {
margin: 0;
a {
text-decoration: none;
}
}
.comment__date {
@extend .page__meta;
margin: 0;
a {
text-decoration: none;
}
}
/*
Related
========================================================================== */
.page__related {
margin-top: 2em;
padding-top: 1em;
border-top: 1px solid $border-color;
@include clearfix();
float: left;
@include breakpoint($large) {
@include pre(2.5 of 12);
}
a {
color: inherit;
text-decoration: none;
}
}
.page__related-title {
margin-bottom: 10px;
font-size: $type-size-6;
text-transform: uppercase;
}
-18
View File
@@ -1,18 +0,0 @@
/* ==========================================================================
PRINT STYLES
========================================================================== */
/*
Hide the following elements on print
========================================================================== */
@media print {
.masthead,
.toc,
.page__share,
.page__related,
.ads,
.page__footer {
display: none;
}
}
-187
View File
@@ -1,187 +0,0 @@
/* ==========================================================================
STYLE RESETS
========================================================================== */
@include border-box-sizing;
html {
/* apply a natural box layout model to all elements */
box-sizing: border-box;
background-color: $background-color;
font-size: 16px;
@include breakpoint($medium) {
font-size: 18px;
}
@include breakpoint($large) {
font-size: 20px;
}
@include breakpoint($x-large) {
font-size: 22px;
}
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
/* Remove margin */
body { margin: 0; }
/* Selected elements */
::-moz-selection {
color: #fff;
background: #000;
}
::selection {
color: #fff;
background: #000;
}
/* Display HTML5 elements in IE6-9 and FF3 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section {
display: block;
}
/* Display block in IE6-9 and FF3 */
audio,
canvas,
video {
display: inline-block;
*display: inline;
*zoom: 1;
}
/* Prevents modern browsers from displaying 'audio' without controls */
audio:not([controls]) {
display: none;
}
a {
color: $link-color;
}
/* Apply focus state */
a:focus {
@extend %tab-focus;
}
/* Remove outline from links */
a:hover,
a:active {
outline: 0;
}
/* Prevent sub and sup affecting line-height in all browsers */
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* img border in anchor's and image quality */
img {
/* Responsive images (ensure images don't scale beyond their parents) */
max-width: 100%; /* part 1: Set a maximum relative to the parent*/
width: auto\9; /* IE7-8 need help adjusting responsive images*/
height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/
vertical-align: middle;
border: 0;
-ms-interpolation-mode: bicubic;
}
/* Prevent max-width from affecting Google Maps */
#map_canvas img,
.google-maps img {
max-width: none;
}
/* Consistent form font size in all browsers, margin changes, misc */
button,
input,
select,
textarea {
margin: 0;
font-size: 100%;
vertical-align: middle;
}
button,
input {
*overflow: visible; /* inner spacing ie IE6/7*/
line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/
}
button::-moz-focus-inner,
input::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/
padding: 0;
border: 0;
}
button,
html input[type="button"], // avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/
cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
}
label,
select,
button,
input[type="button"],
input[type="reset"],
input[type="submit"],
input[type="radio"],
input[type="checkbox"] {
cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/
}
input[type="search"] { /* Appearance in Safari/Chrome*/
box-sizing: content-box;
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
-webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/
}
textarea {
overflow: auto; /* remove vertical scrollbar in IE6-9*/
vertical-align: top; /* readability and alignment cross-browser*/
}

Some files were not shown because too many files have changed in this diff Show More