The part that changed everything is about using atomic operations to query and/or update a hash map and add voxel hits to a list of voxel hits if not already present based on hash map query. I've implemented it in my voxel engine's ray march code and it works well to build a unique list of voxel hits (voxel world space coordinates). I also had to use an atomic operation to add to the list to avoid race conditions.
I will have dynamic direct sunlight working soon...