aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-10-29Unify AOS, SOA specific cell preshift between targetsAdrian Kummerlaender
SOA and AOS should not be target specific, neighbor offset calculation / bijection between gid and cell coordinates should be customizable.
2019-10-28Set default order for custom ndindex overloadv0.1.0Adrian Kummerlaender
2019-10-28Use order-accepting ndindex method for generating cell indicesAdrian Kummerlaender
2019-10-28Add basic setup.pyAdrian Kummerlaender
No guarantee for correctness - I mostly fiddled this together in order to use common nixpkgs python package functions for including boltzgen in other shell environments.
2019-10-27Optionally generate cell-list-based OpenCL dispatch functionsAdrian Kummerlaender
Requires different function naming as OpenCL 1.2 doesn't support overloads. The OpenCL kernel code generated using this commit was successfully tested on an actual GPU. Time to set up some automatic validation.
2019-10-27Verify precision parameterAdrian Kummerlaender
2019-10-27Add READMEAdrian Kummerlaender
2019-10-27Accept cell id as parameter in OpenCL functionsAdrian Kummerlaender
It is more flexible to place OpenCL thread ID dependent dispatching in a separate function.
2019-10-27Add bounce back boundary conditionAdrian Kummerlaender
2019-10-27Tidy up shell environmentAdrian Kummerlaender
2019-10-27Use Mako defines to generate momenta boundariesAdrian Kummerlaender
2019-10-27Extract target-dependent floating point type nameAdrian Kummerlaender
2019-10-27Move layout implementations into separate folderAdrian Kummerlaender
2019-10-27Disable bytecode cachingAdrian Kummerlaender
2019-10-27Separate functions into separate template filesAdrian Kummerlaender
Selection of the desired templates is possible via a new `functions` parameter.
2019-10-26Add extra toggle for OpenMP in C++ test functionAdrian Kummerlaender
Yields ~160 MLUPs on a Xeon E3-1241 for D2Q9 double precision lid driven cavity. Obviously not anywhere near what is possible on GPUs but respectable for a CPU implementation. Especially considering how simple it is.
2019-10-26Change C++ test function to LDC with optional VTK outputAdrian Kummerlaender
2019-10-26Generate primitive velocity momenta BC for C++ targetAdrian Kummerlaender
2019-10-26Support passing additional string arguments to the generatorAdrian Kummerlaender
2019-10-26Implement AOS layout for the OpenCL targetAdrian Kummerlaender
2019-10-26Add optional flag to disable CSEAdrian Kummerlaender
2019-10-26Add BGK relaxation time argumentAdrian Kummerlaender
Still thinking how various collision models (BGK, MRT and so on) may be nicely abstracted in this setting.
2019-10-26Fix cpp test functionAdrian Kummerlaender
2019-10-26Add python shebangAdrian Kummerlaender
2019-10-26Add geometry argumentAdrian Kummerlaender
2019-10-26Add lattice argumentAdrian Kummerlaender
2019-10-26Generalize floating point precision argumentAdrian Kummerlaender
2019-10-26Add ctags to environmentAdrian Kummerlaender
2019-10-24Extract offset helper into target and layout specific classesAdrian Kummerlaender
2019-10-24Handle missing memory layout argumentAdrian Kummerlaender
2019-10-24Add test template for C++, enable switching between AOS and SOAAdrian Kummerlaender
2019-10-23Some cleanup, add `collect_moments` to C++ templateAdrian Kummerlaender
2019-10-22Return error for unavailable templatesAdrian Kummerlaender
2019-10-22Add basic Generator classAdrian Kummerlaender
2019-10-21Add basic argument parsingAdrian Kummerlaender
2019-10-21Pull in C++ template from symlbm_playground's standalone branchAdrian Kummerlaender
2019-10-21Pull in basics from symlbm_playgroundAdrian Kummerlaender
It's time to extract the generator-part of my GPU LBM playground and turn it into a nice reusable library. The goal is to produce a framework that can be used to generate collision and streaming programs from symbolic descriptions. i.e. it should be possible to select a LB model, the desired boundary conditions as well as a data structure / streaming model and use this information to automatically generate matching OpenCL / CUDA / C++ programs.