MilesCranmer commited on
Commit
d5ec823
1 Parent(s): e8b8d89

Use @fastmath for evaluating on array

Browse files
Files changed (2) hide show
  1. README.md +7 -2
  2. julia/sr.jl +1 -1
README.md CHANGED
@@ -299,10 +299,10 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
299
  - [x] Sympy evaluation
300
  - [x] Threaded recursion
301
  - [x] Test suite
302
- - [ ] Add true multi-node processing, with MPI, or just file sharing. Multiple populations per core.
303
- - Ongoing in cluster branch
304
  - [x] Performance: - Use an enum for functions instead of storing them?
305
  - Gets ~40% speedup on small test.
 
 
306
  - [ ] Consider allowing multi-threading turned off, for faster testing (cache issue on travis). Or could simply fix the caching issue there.
307
  - [ ] Dump scores alongside MSE to .csv (and return with Pandas).
308
  - [ ] Consider returning only the equation of interest; rather than all equations.
@@ -320,6 +320,7 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
320
  - [ ] Use NN to generate weights over all probability distribution conditional on error and existing equation, and train on some randomly-generated equations
321
  - [ ] Add GPU capability?
322
  - Not sure if possible, as binary trees are the real bottleneck.
 
323
  - [ ] Idea: use gradient of equation with respect to each operator (perhaps simply add to each operator) to tell which part is the most "sensitive" to changes. Then, perhaps insert/delete/mutate on that part of the tree?
324
  - [ ] For hierarchical idea: after running some number of iterations, do a search for "most common pattern". Then, turn that subtree into its own operator.
325
  - [ ] Additional degree operators?
@@ -332,4 +333,8 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
332
  - [ ] Call function to read from csv after running
333
  - [ ] Add function to plot equations
334
  - [ ] Sort this todo list by priority
 
 
 
 
335
 
 
299
  - [x] Sympy evaluation
300
  - [x] Threaded recursion
301
  - [x] Test suite
 
 
302
  - [x] Performance: - Use an enum for functions instead of storing them?
303
  - Gets ~40% speedup on small test.
304
+ - [ ] Add true multi-node processing, with MPI, or just file sharing. Multiple populations per core.
305
+ - Ongoing in cluster branch
306
  - [ ] Consider allowing multi-threading turned off, for faster testing (cache issue on travis). Or could simply fix the caching issue there.
307
  - [ ] Dump scores alongside MSE to .csv (and return with Pandas).
308
  - [ ] Consider returning only the equation of interest; rather than all equations.
 
320
  - [ ] Use NN to generate weights over all probability distribution conditional on error and existing equation, and train on some randomly-generated equations
321
  - [ ] Add GPU capability?
322
  - Not sure if possible, as binary trees are the real bottleneck.
323
+ - Could generate on CPU, evaluate score on GPU?
324
  - [ ] Idea: use gradient of equation with respect to each operator (perhaps simply add to each operator) to tell which part is the most "sensitive" to changes. Then, perhaps insert/delete/mutate on that part of the tree?
325
  - [ ] For hierarchical idea: after running some number of iterations, do a search for "most common pattern". Then, turn that subtree into its own operator.
326
  - [ ] Additional degree operators?
 
333
  - [ ] Call function to read from csv after running
334
  - [ ] Add function to plot equations
335
  - [ ] Sort this todo list by priority
336
+ - [ ] Consider printing output sorted by score, not by complexity.
337
+ - [ ] Performance: try inling things?
338
+ - [ ] Multi targets (vector ops)
339
+
340
 
julia/sr.jl CHANGED
@@ -247,7 +247,7 @@ function evalTreeArray(tree::Node)::Array{Float32, 1}
247
  elseif tree.degree == 1
248
  return unaops[tree.op].(evalTreeArray(tree.l))
249
  else
250
- return binops[tree.op].(evalTreeArray(tree.l), evalTreeArray(tree.r))
251
  end
252
  end
253
 
 
247
  elseif tree.degree == 1
248
  return unaops[tree.op].(evalTreeArray(tree.l))
249
  else
250
+ return @fastmath binops[tree.op].(evalTreeArray(tree.l), evalTreeArray(tree.r))
251
  end
252
  end
253