Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/cuda/TODO
ViewVC logotype

Diff of /branches/cuda/TODO

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1336, Mon Jun 13 04:50:55 2011 UTC revision 1389, Fri Jun 24 17:54:44 2011 UTC
# Line 5  Line 5 
5  SHORT TERM ============= (*needed* for streamlines & tractography)  SHORT TERM ============= (*needed* for streamlines & tractography)
6  ========================  ========================
7    
8  Remove CL from compiler  [GLK:2] Add sequence types (needed for evals & evecs)
   
 [GLK:3] Add sequence types (needed for evals & evecs)  
9      syntax      syntax
10          types: ty '{' INT '}'          types: ty '{' INT '}'
11          value construction: '{' e1 ',' … ',' en '}'          value construction: '{' e1 ',' … ',' en '}'
12          indexing: e '{' e '}'          indexing: e '{' e '}'
13    
14  [GLK:4] evals & evecs for symmetric tensor[2,2] and  [GLK:3] evals & evecs for symmetric tensor[2,2] and
15  tensor[3,3] (requires sequences)  tensor[3,3] (requires sequences)
16    
17  ability to emit/track/record variables into dynamically re-sized  ability to emit/track/record variables into dynamically re-sized
18  runtime buffer  runtime output buffer
19    
20  tensor fields: convolution on general tensor images  tensor fields: convolution on general tensor images (order > 1)
21    
22  ========================  ========================
23  SHORT-ISH TERM ========= (to make using Diderot less annoying to  SHORT-ISH TERM ========= (to make using Diderot less annoying to
24  ========================  program in, and slow to execute)  ========================  program in, and slow to execute)
25    
 value-numbering optimization [DONE]  
   
26  Allow ".ddro" file extensions in addition to ".diderot"  Allow ".ddro" file extensions in addition to ".diderot"
27    
28  Be able to output values of type tensor[2,2] and tensor[3,3];  Be able to output values of type tensor[2,2] and tensor[3,3];
29  (currently only scalars & vectors).  Want to add some regression tests  (currently only scalars & vectors).  Want to add some regression tests
30  based on this and currently can't  based on this and currently can't
31    
32  [GLK:1] Add a clamp function, which takes three arguments; either  [GLK:1] Proper handling of stabilize method
 three scalars:  
   clamp(lo, hi, x)  = max(lo, min(hi, x))  
 or three vectors of the same size:  
   clamp(lo, hi, [x,y])  = [max(lo[0], min(hi[0], x)),  
                            max(lo[1], min(hi[1], y))]  
 This would be useful in many current Diderot programs.  
 One question: clamp(x, lo, hi) is the argument order used in OpenCL  
 and other places, but clamp(lo, hi, x) is much more consistent with  
 lerp(lo, hi, x), hence GLK's preference  
 [DONE]  
   
 [GLK:2] Proper handling of stabilize method  
33    
34  allow "*" to represent "modulate": per-component multiplication of  allow "*" to represent "modulate": per-component multiplication of
35  vectors, and vectors only (not tensors of order 2 or higher).  Once  vectors, and vectors only (not tensors of order 2 or higher).  Once
# Line 55  Line 39 
39  implicit type promotion of integers to reals where reals are  implicit type promotion of integers to reals where reals are
40  required (e.g. not exponentiation "^")  required (e.g. not exponentiation "^")
41    
42  [GLK:5] Save Diderot output to nrrd, instead of "mip.txt"  [GLK:4] Save Diderot output to nrrd, instead of "mip.txt"
43    For grid of strands, save to similarly-shaped array    For grid of strands, save to similarly-shaped array
44    For list of strands, save to long 1-D (or 2-D for non-scalar output) list    For list of strands, save to long 1-D (or 2-D for non-scalar output) list
45    For ragged things (like tractography output), will need to save both    For ragged things (like tractography output), will need to save both
46      complete list of values, as well as list of start indices and lengths      complete list of values, as well as list of start indices and lengths
47      to index into complete list      to index into complete list
48    
49  [GLK:6] Use of Teem's "hest" command-line parser for getting  [GLK:5] ability to declare a field so that probe positions are
 any "input" variables that are not defined in the source file.  
   
 [GLK:7] ability to declare a field so that probe positions are  
50  *always* "inside"; with various ways of mapping the known image values  *always* "inside"; with various ways of mapping the known image values
51  to non-existant index locations.  One possible syntax emphasizes that  to non-existant index locations.  One possible syntax emphasizes that
52  there is a index mapping function that logically precedes convolution:  there is a index mapping function that logically precedes convolution:
# Line 88  Line 69 
69      rgb = real{3}      rgb = real{3}
70      rgba = real{4}      rgba = real{4}
71    
72    Revisit how images are created within the language.
73    The "load" operator should probably go away, and its strangs
74    that strings are there only as a way to refer to nrrd filenames
75    
76  ==============================  ==============================
77  MEDIUM TERM ================== (*needed* for particles)  MEDIUM TERM ================== (*needed* for particles)
78  ==============================  ==============================
# Line 119  Line 104 
104  Allow integer exponentiation ("^2") to apply to square matrices,  Allow integer exponentiation ("^2") to apply to square matrices,
105  to represent repeated matrix multiplication  to represent repeated matrix multiplication
106    
 Alow X *= Y, X /= Y, X += Y, X -= Y to mean what they do in C,  
 provided that X*Y, X/Y, X+Y, X-Y are already supported.  
 Nearly every Diderot program would be simplified by this.  
 [DONE]  
   
107  Put small 1-D and 2-D fields, when reconstructed specifically by tent  Put small 1-D and 2-D fields, when reconstructed specifically by tent
108  and when differentiation is not needed, into faster texture buffers.  and when differentiation is not needed, into faster texture buffers.
109  test/illust-vr.diderot is good example of program that uses multiple  test/illust-vr.diderot is good example of program that uses multiple
110  such 1-D fields basically as lookup-table-based function evaluation  such 1-D fields basically as lookup-table-based function evaluation
111    
 expand trace in mid to low translation [DONE]  
   
112  extend norm (|exp|) to all tensor types [DONE for vectors and matrices]  extend norm (|exp|) to all tensor types [DONE for vectors and matrices]
113    
114  determinant ("det") for tensor[3,3]  determinant ("det") for tensor[3,3]
# Line 150  Line 128 
128  LONG TERM ==================== (make Diderot more interesting/attractive from  LONG TERM ==================== (make Diderot more interesting/attractive from
129  ==============================  a research standpoint)  ==============================  a research standpoint)
130    
131    [GLK:6] Want code-generation working for tensors of order three.
132    Order three matters for edge detection in scalar fields (to get
133    second derivatives of gradient magnitude), second derivatives
134    of vector fields (for some feature extraction), and first
135    derivatives of diffusion tensor fields.
136    
137  IL support for higher-order tensor values (matrices, etc).  IL support for higher-order tensor values (matrices, etc).
138      tensor construction [DONE]      tensor construction [DONE]
139      tensor indexing [DONE]      tensor indexing [DONE]
140      tensor slicing      tensor slicing
     verify that hessians work correctly [DONE]  
141    
142  Better handling of variables that determines the scope of a variable  Better handling of variables that determines the scope of a variable
143  based on its actual use, instead of where the user defined it.  So,  based on its actual use, instead of where the user defined it.  So,
# Line 168  Line 151 
151  (but we should only duplicate over the live-range of the result of the  (but we should only duplicate over the live-range of the result of the
152  conditional.  conditional.
153    
154  [GLK:8] Want: non-trivial field expressions & functions.  [GLK:7] Want: non-trivial field expressions & functions.
155  scalar fields from scalar fields F and G:  scalar fields from scalar fields F and G:
156    field#0(2)[] X = (sin(F) + 1.0)/2;    field#0(2)[] X = (sin(F) + 1.0)/2;
157    field#0(2)[] X = F*G;    field#0(2)[] X = F*G;
# Line 271  Line 254 
254  //    raised at c-target/c-target.sml:47.15-47.19  //    raised at c-target/c-target.sml:47.15-47.19
255  //field#4(3)[] F = img ⊛ bspln5;  //field#4(3)[] F = img ⊛ bspln5;
256    
 test/lic2.diderot:  
 error in addEdge(ENTRY01D8,NULL0006)  
 uncaught exception Fail [Fail: setPred on NULL node NULL0006]  
   raised at common/phase-timer.sml:76.50-76.52  
   raised at IL/ssa-fn.sml:308.7-308.9  
   raised at IL/ssa-fn.sml:245.26-245.70  

Legend:
Removed from v.1336  
changed lines
  Added in v.1389

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0