Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-05-09 | towards a more flexible surface model | Andy Mastbaum | |
surfaces now have an associated model which defines how photons are propagated. currently, these include specular, diffuse, mirror, photocathode (not implemented), and tpb. the default is the old behavior, where surfaces do some weighted combination of detection, absorption, and specular and diffuse reflection. `struct Surface` contains as members the superset of all model parameters; not all are used by all models. documentation (forthcoming) will make clear what each model looks at. | |||
2021-05-09 | If (0,0,0) passed in for direction vector, constant_particle_gun will pick ↵ | Stan Seibert | |
isotropically distributed directions. | |||
2021-05-09 | Raise an exception if a zero 3-vector is passed to make_rotation_matrix() | Stan Seibert | |
2021-05-09 | Fix starting point of SNO PMT profile to be on axis | Stan Seibert | |
2021-05-09 | Fixes to chroma-setup script. | Stan Seibert | |
2021-05-09 | Add CUDA driver install directions and add matplotlib dependency | Stan Seibert | |
2021-05-09 | Fix imports for chroma-cam | Stan Seibert | |
2021-05-09 | Update installation instructions for CUDA 4.1 and GEANT4.9.5. | Stan Seibert | |
2021-05-09 | Shell script from Andy Mastbaum that compiles all of Chroma's dependencies | Stan Seibert | |
along with Chroma on an Ubuntu 11.04 system. | |||
2021-05-09 | Silence more GEANT4 output when starting GEANT4 generator processes. | Stan Seibert | |
2021-05-09 | Minor patches to include directories for GEANT4.9.5. | Stan Seibert | |
2021-05-09 | Add the include directory for the virtualenv | Stan Seibert | |
2021-05-09 | Remove unneeded Node.kind member from struct. Speeds up benchmark further, ↵ | Stan Seibert | |
but no improvement to actual simulation. | |||
2021-05-09 | Add an argsort_direction() function to chroma.tools and use it to | Stan Seibert | |
group photons so that they take similar paths on the GPU. argsort_direction() morton-orders an array of normalized direction vectors according to their spherical coordinates. Photons sorted in this way tend to follow similar paths through a detector geometry, which enhances cache locality. As a result, get_node() uses the GPU L1 cache again, with good results. | |||
2021-05-09 | For paranoia reasons, add some padding on the low corner of the BVH leaf nodes. | Stan Seibert | |
2021-05-09 | Report the correct algorithm, and use a degree 3 tree. | Stan Seibert | |
2021-05-09 | Improve startup time in simulation by letting GEANT4 processes initialize in ↵ | Stan Seibert | |
background. | |||
2021-05-09 | BVH optimization to sort child nodes by area. Only has a small effect. | Stan Seibert | |
2021-05-09 | Collapse chains of BVH nodes with single children. | Stan Seibert | |
2021-05-09 | Fix bug in grid BVH implementation. Now half as fast as old Chroma. | Stan Seibert | |
2021-05-09 | Speed up recursive grid BVH generation. Now LBNE BVH can be generated in ↵ | Stan Seibert | |
about 60-90 seconds. | |||
2021-05-09 | New BVH algorithm: Recursive Grid | Stan Seibert | |
This is an adaptation of the original Chroma BVH construction algorithm. The generation stage is very slow, but can be fixed. | |||
2021-05-09 | Import memoize decorator directly from pytools as it is not present in the ↵ | Stan Seibert | |
old location in newer pycuda releases. | |||
2021-05-09 | Implementation of "node splitting" which places children into separate | Stan Seibert | |
parent nodes if combining them would result in a parent node that is excessively large compared to the surface area of the children. This doesn't help as much as you might imagine. | |||
2021-05-09 | Bugfixes to BVH traversal and generation code. | Stan Seibert | |
2021-05-09 | Use degree 2 tree by default | Stan Seibert | |
2021-05-09 | Redo node format to include number of children, rather than just leaf bit. | Stan Seibert | |
2021-05-09 | Fix unit test | Stan Seibert | |
2021-05-09 | Add a chroma-bvh hist function that displays a ROOT histogram of the | Stan Seibert | |
areas of the BVH nodes in a particular layer of the tree. | |||
2021-05-09 | Rename node_area() to node_areas() and make it return the array of node areas | Stan Seibert | |
2021-05-09 | Skip L1 cache when loading nodes. | Stan Seibert | |
Node access is very irregular as each thread descends the BVH tree. Each node is only 16 bytes, so the 128 byte cache line size in the L1 cache means that a lot of useless data is often fetched. Using some embedded PTX, we can force the L1 cache to be skipped, going directly to L2. The L2 cache line is 32 bytes long, which means that both children in a binary tree will be cached at the same time. This improves the speed on the default generated binary trees, but does not help an optimized tree yet. | |||
2021-05-09 | Missing return in function | Stan Seibert | |
2021-05-09 | Oops, pdb line snuck into commit. | Stan Seibert | |
2021-05-09 | Make Geometry.flatten() idempotent and avoid loading the BVH twice when ↵ | Stan Seibert | |
using the Camera class. | |||
2021-05-09 | Fix the rendering code to use the new geometry and BVH definition. | Stan Seibert | |
2021-05-09 | Speed up node intersection by 2.5x using tips from "Optimizing ray | Stan Seibert | |
tracing for CUDA" by Hannu Saransaari. The intersect_box() function has been rewritten to be much shorter and use the min() and max() functions, which map directly to hardware instructions. Additionally, the calculations inside intersect_box() have been reorganized to allow the compiler to use the combined multiply-add instruction, instead of doing a subtraction followed by a division (which is way slower). | |||
2021-05-09 | Use fixed point BVH surface area instead of world coordinates for ↵ | Stan Seibert | |
consistency everywhere. | |||
2021-05-09 | If the node_swap optimization is run with a minus sign after the layer ↵ | Stan Seibert | |
number, it will be done to that layer, and all layers above it. | |||
2021-05-09 | Increase look ahead in node_swap BVH optimization to improve surface area ↵ | Stan Seibert | |
minimization | |||
2021-05-09 | Add more BVH manipulation commands: | Stan Seibert | |
* chroma-bvh create [name] [degree] - Creates a new BVH with the specified branching degree. * chroma-bvh node_swap [name] [layer] - Optimizes a BVH layer with a "greedy, short-sighted" algorithm that swaps around nodes to minimize the surface area of the immediate parent layer. Rebuilds the tree above the modified layer when finished. Also modified the chroma-bvh stat command to print the sum of the logarithms of the areas of each layer. It seems to be a rough predictor of the simulation speed of the BVH. | |||
2021-05-09 | Fix silly typos in BVH loading functions | Stan Seibert | |
2021-05-09 | Add list, copy, and remove commands to chroma-bvh | Stan Seibert | |
2021-05-09 | chroma-bvh: command to manipulate BVH trees in cache. Just a stat ↵ | Stan Seibert | |
subcommand for now. | |||
2021-05-09 | Do not cache the individual solids. Speeds up unpickling significantly. | Stan Seibert | |
2021-05-09 | Do not save the BVH when caching the geometry. | Stan Seibert | |
2021-05-09 | Super simple geometry cache management tool: chroma-geo | Stan Seibert | |
2021-05-09 | Make load from string method handle functions that return Mesh, Solid, or ↵ | Stan Seibert | |
Geometry. | |||
2021-05-09 | Add another loader function that is useful for chroma-cam. | Stan Seibert | |
Note that rendering is still broken by the new BVH format. | |||
2021-05-09 | Implement new loader function that turns a string into a Geometry, | Stan Seibert | |
searching through files, named geometries in the cache, and geometry creation functions. The loader function also is responsible for fetching or creating a BVH to go with the geometry. This commit also removes some code that has been replaced by the new system. Other bits will come back in future commits. | |||
2021-05-09 | Pull memoization decorator out to tools module. | Stan Seibert | |