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

SCM Repository

[diderot] Annotation of /branches/pure-cfg/TODO
ViewVC logotype

Annotation of /branches/pure-cfg/TODO

Parent Directory Parent Directory | Revision Log Revision Log


Revision 950 - (view) (download)

1 : glk 781 ========================
2 :     SHORT TERM ============= (for curvature-based VR)
3 :     ========================
4 :    
5 : jhr 788 IL support for higher-order tensor values (matrices, etc).
6 : jhr 803 tensor construction [DONE]
7 :     tensor indexing [DONE]
8 :     tensor slicing
9 : jhr 853 verify that hessians work correctly [DONE]
10 : jhr 788
11 : jhr 821 Outer products [DONE]
12 : jhr 763
13 : jhr 813 Add M dot v, v dot M, and M dot N [DONE]
14 : jhr 763
15 : jhr 846 Identity matrix [DONE]
16 : jhr 763
17 : jhr 846 Zero tensor [DONE]
18 : jhr 822
19 : jhr 763 trace [DONE]
20 :    
21 : jhr 846 extend norm (|exp|) to tensor[3,3] [DONE]
22 : jhr 763
23 : jhr 846 Matrix addition, subtraction, and scaling [DONE]
24 : jhr 824
25 : jhr 788 Use ∇⊗ etc. syntax
26 : jhr 763 syntax [DONE]
27 :     typechecking
28 :     IL and codegen
29 :    
30 :     Add sequence types
31 :     syntax
32 :     types: ty '{' INT '}'
33 :     value construction: '{' e1 ',' … ',' en '}'
34 :     indexing: e '{' e '}'
35 :    
36 : jhr 784 Infix dot product and cross product [DONE]
37 : glk 781
38 : jhr 784 lerp on scalars and vectors [DONE]
39 :    
40 : jhr 824 Infix "^" operator for pow() [DONE]
41 :    
42 : jhr 897 Code generation support for 1D image data, such as RGBA transfer functions [DONE]
43 : jhr 853
44 : glk 781 ==============================
45 : glk 785 other SHORT TERM ============= (including needed for LIC)
46 : glk 781 ==============================
47 :    
48 : glk 927 test/uninit.diderot:
49 : glk 941 documents need for better compiler error messages when output variables
50 : glk 927 are not initialized; the current messages are very cryptic
51 :    
52 : glk 785 determinant ("det") for tensor[3,3]
53 :    
54 : jhr 897 extend norm (|exp|) to all tensor types [DONE for vectors and matrices]
55 : glk 785
56 : jhr 788 expand trace in mid to low translation
57 :    
58 :     value-numbering optimization
59 :    
60 :     Add type aliases for color types
61 :     rgb = real{3}
62 :     rgba = real{4}
63 :    
64 : glk 781 ==============================
65 : glk 891 MEDIUM TERM ================== (including needed for streamlines & tractography)
66 : glk 781 ==============================
67 :    
68 : glk 945 Want: allow X *= Y, X /= Y, X += Y, X -= Y to mean what they do in C,
69 :     provided that X*Y, X/Y, X+Y, X-Y are already supported.
70 :     Nearly every Diderot program would be simplified by this.
71 :    
72 :     Want: ability to apply "normalize" to a field itself, e.g.
73 :     field#1(2)[2] V = normalize(Vimg ⊛ ctmr);
74 :     so that V(x) = normalize((Vimg ⊛ ctmr)(x)).
75 :     (For now, it would be okay for the differentability of V to be 0;
76 :     later we can teach Diderot the quotient rule of derivatives.)
77 :     Having this would simplify expression of standard LIC method, and
78 :     would also help express other vector field expressions that arise
79 :     in vector field feature exraction
80 : glk 948 Related to this and possibly simpler:
81 :     image(2)[2] Vimg = load(...);
82 : glk 950 field#0(2)[] Vlen = |Vimg ⊛ bspln3|;
83 : glk 948 to get a scalar field of vector length, or
84 : glk 950 field#2(2)[] F = Fimg ⊛ bspln3;
85 :     field#0(2)[] Gmag = |∇F|;
86 : glk 948 to get a scalar field of gradient magnitude, or
87 : glk 950 field#2(2)[] F = Fimg ⊛ bspln3;
88 :     field#0(2)[] Gmsq = ∇F•∇F;
89 :     to get a scalar field of squared gradient magnitude, which is simpler
90 :     to differentiate. Again, though, it would be such a benefit to have
91 :     these expressions, without any differentiability. Hence my indication
92 :     of "field#0" for these above.
93 : glk 945
94 : glk 941 ability to declare a field in such a way so that probe
95 :     positions are *always* clamped to the support of "inside";
96 :     there are many cases where this is the sensible behavior
97 :    
98 : glk 781 ability to emit/track/record variables into dynamically re-sized
99 :     runtime buffer
100 :    
101 :     evals & evecs for symmetric tensor[3,3]
102 :    
103 :     tensor fields: convolution on general tensor images
104 :    
105 : glk 891 Use of Teem's "hest" command-line parser for getting
106 :     any input variables that are not defined in the source file
107 :    
108 :     Save Diderot output to nrrd, instead of "mip.txt"
109 :     For grid of strands, save to similarly-shaped array
110 :     For list of strands, save to long 1-D (or 2-D for non-scalar output) list
111 :     For ragged things (like tractography output), will need to save both
112 :     complete list of values, as well as list of start indices and lengths
113 :     to index into complete list
114 :    
115 : glk 781 ==============================
116 :     other MEDIUM TERM ============ (needed for particles)
117 :     ==============================
118 :    
119 :     run-time birth and death of strands
120 :    
121 :     "initially" supports lists
122 :    
123 :     "initially" supports lists of positions output from
124 :     different initalization Diderot program
125 :    
126 :     spatial data structure that permits strands' queries of neighbors
127 :    
128 : jhr 784 proper handling of stabilize method
129 :    
130 : glk 891 test/vr-kcomp2.diderot: Add support for code like
131 : jhr 796
132 :     (F1 if x else F2)@pos
133 :    
134 :     This will require duplication of the continuation of the conditional (but we should only
135 :     duplicate over the live-range of the result of the conditional.
136 :    
137 : glk 781 ==============================
138 : jhr 797 other MEDIUM TERM ============
139 :     ==============================
140 :    
141 : glk 927 want: warnings when "D" (reserved for differentiation) is declared as
142 :     a variable name (get confusing error messages now)
143 : jhr 797
144 : jhr 824 support for Python interop and GUI
145 :    
146 : jhr 797 ==============================
147 : glk 781 LONG TERM ====================
148 :     ==============================
149 :    
150 : glk 927 Better handling of variables that determines the scope of a variable
151 :     based on its actual use, instead of where the user defined it. So,
152 :     for example, we should lift strand-invariant variables to global
153 :     scope. Also prune out useless variables, which should include field
154 :     variables after the translation to mid-il.
155 : jhr 796
156 : glk 781 co- vs contra- index distinction
157 :    
158 : glk 783 add ":" for tensor dot product (contracts out two indices
159 :     instead of one like •), valid for all pairs of tensors with
160 :     at least two indices
161 :    
162 : glk 781 some indication of tensor symmetry
163 :     (have to identify the group of index permutations that are symmetries)
164 :    
165 :     dot works on all tensors
166 :    
167 :     outer works on all tensors
168 :    
169 :     Einstein summation notation
170 :    
171 :     "tensor comprehension" (like list comprehension)
172 : jhr 784
173 : glk 818 Python/ctypes interface to run-timez
174 :    
175 : jhr 784 ======================
176 :     BUGS =================
177 :     ======================
178 :    
179 : glk 941 test/fields.diderot:
180 :     documents various bugs/questions associated with field expressions
181 :    
182 : jhr 784 test/mip-cam.diderot:
183 :     // generated C code looks like "(float)p_ui_0--0.5e0f"
184 :     //real rayU = 2.0*camUmax*(real(ui) - -0.5)/real(imgResU) - camUmax;
185 :    
186 :     test/vr-kcomp.diderot:
187 :     // HEY (scoping BUG): the strand parameters (e.g. ui, vi) ...
188 :    
189 :     test/zslice2.diderot:
190 :     // but is this not valid syntax for creating field in one shot?
191 :     //field#2(3)[] F = (load("../data/zimg112.nrrd")) ⊛ bspln3;
192 :     // It is valid syntax, but there is a bug in the conversion from HighIL to MidIL
193 :    
194 :     test/zslice2.diderot:
195 :     // HEY (bug) bspln5 leads to problems ...
196 :     // uncaught exception Size [size]
197 :     // raised at c-target/c-target.sml:47.15-47.19
198 :     //field#4(3)[] F = img ⊛ bspln5;

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