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 891 - (view) (download)

1 : glk 781 ========================
2 :     SHORT TERM ============= (for curvature-based VR)
3 :     ========================
4 :    
5 : glk 891 vector fields: convolution on vector images
6 :     (image orientation not quite working)
7 : glk 789
8 : jhr 788 IL support for higher-order tensor values (matrices, etc).
9 : jhr 803 tensor construction [DONE]
10 :     tensor indexing [DONE]
11 :     tensor slicing
12 : jhr 853 verify that hessians work correctly [DONE]
13 : jhr 788
14 : jhr 821 Outer products [DONE]
15 : jhr 763
16 : jhr 813 Add M dot v, v dot M, and M dot N [DONE]
17 : jhr 763
18 : jhr 846 Identity matrix [DONE]
19 : jhr 763
20 : jhr 846 Zero tensor [DONE]
21 : jhr 822
22 : jhr 763 trace [DONE]
23 :    
24 : jhr 846 extend norm (|exp|) to tensor[3,3] [DONE]
25 : jhr 763
26 : jhr 846 Matrix addition, subtraction, and scaling [DONE]
27 : jhr 824
28 : jhr 788 Use ∇⊗ etc. syntax
29 : jhr 763 syntax [DONE]
30 :     typechecking
31 :     IL and codegen
32 :    
33 :     Add sequence types
34 :     syntax
35 :     types: ty '{' INT '}'
36 :     value construction: '{' e1 ',' … ',' en '}'
37 :     indexing: e '{' e '}'
38 :    
39 : jhr 784 Infix dot product and cross product [DONE]
40 : glk 781
41 : jhr 784 lerp on scalars and vectors [DONE]
42 :    
43 : jhr 824 Infix "^" operator for pow() [DONE]
44 :    
45 : jhr 853 Code generation support for 1D image data, such as RGBA transfer functions
46 :    
47 : glk 781 ==============================
48 : glk 785 other SHORT TERM ============= (including needed for LIC)
49 : glk 781 ==============================
50 :    
51 : glk 785 determinant ("det") for tensor[3,3]
52 :    
53 :     extend norm (|exp|) to all tensor types
54 :    
55 : jhr 788 expand trace in mid to low translation
56 :    
57 :     value-numbering optimization
58 :    
59 :     Add type aliases for color types
60 :     rgb = real{3}
61 :     rgba = real{4}
62 :    
63 : glk 781 ==============================
64 : glk 891 MEDIUM TERM ================== (including needed for streamlines & tractography)
65 : glk 781 ==============================
66 :    
67 :     ability to emit/track/record variables into dynamically re-sized
68 :     runtime buffer
69 :    
70 :     evals & evecs for symmetric tensor[3,3]
71 :    
72 :     tensor fields: convolution on general tensor images
73 :    
74 : glk 891 Use of Teem's "hest" command-line parser for getting
75 :     any input variables that are not defined in the source file
76 :    
77 :     Save Diderot output to nrrd, instead of "mip.txt"
78 :     For grid of strands, save to similarly-shaped array
79 :     For list of strands, save to long 1-D (or 2-D for non-scalar output) list
80 :     For ragged things (like tractography output), will need to save both
81 :     complete list of values, as well as list of start indices and lengths
82 :     to index into complete list
83 :    
84 : glk 781 ==============================
85 :     other MEDIUM TERM ============ (needed for particles)
86 :     ==============================
87 :    
88 :     run-time birth and death of strands
89 :    
90 :     "initially" supports lists
91 :    
92 :     "initially" supports lists of positions output from
93 :     different initalization Diderot program
94 :    
95 :     spatial data structure that permits strands' queries of neighbors
96 :    
97 : jhr 784 proper handling of stabilize method
98 :    
99 : glk 891 test/vr-kcomp2.diderot: Add support for code like
100 : jhr 796
101 :     (F1 if x else F2)@pos
102 :    
103 :     This will require duplication of the continuation of the conditional (but we should only
104 :     duplicate over the live-range of the result of the conditional.
105 :    
106 : glk 781 ==============================
107 : jhr 797 other MEDIUM TERM ============
108 :     ==============================
109 :    
110 : jhr 824 want: warnings when D (and likely I) is declared as a
111 :     variable name (now get confusing error messages now)
112 : jhr 797
113 : jhr 824 support for Python interop and GUI
114 :    
115 : jhr 797 ==============================
116 : glk 781 LONG TERM ====================
117 :     ==============================
118 :    
119 : jhr 796 Better handling of variables that determines the scope of a variable based on its actual use,
120 :     instead of where the user defined it. So, for example, we should lift strand-invariant variables
121 :     to global scope. Also prune out useless variables, which should include field variables after the
122 :     translation to mid-il.
123 :    
124 : glk 781 co- vs contra- index distinction
125 :    
126 : glk 783 add ":" for tensor dot product (contracts out two indices
127 :     instead of one like •), valid for all pairs of tensors with
128 :     at least two indices
129 :    
130 : glk 781 some indication of tensor symmetry
131 :     (have to identify the group of index permutations that are symmetries)
132 :    
133 :     dot works on all tensors
134 :    
135 :     outer works on all tensors
136 :    
137 :     Einstein summation notation
138 :    
139 :     "tensor comprehension" (like list comprehension)
140 : jhr 784
141 : glk 818 Python/ctypes interface to run-timez
142 :    
143 : jhr 784 ======================
144 :     BUGS =================
145 :     ======================
146 :    
147 : glk 891 test/zslice-k1k2.diderot
148 :     If we allow "-∇F@pos" we should allow "-∇(∇F)@pos",
149 :     but this currently causes:
150 :     uncaught exception Fail [Fail: Error in compiling zslice-k1k2.diderot]
151 :     raised at driver/main.sml:31.39-31.76
152 :    
153 :     test/zslice-k1k2.diderot (and other programs)
154 :     As programs are getting more complicated, the annoyance and confusion
155 :     caused by allowing variables to be redeclared is getting higher!
156 :     GLK sees no valid purpose for redeclaring a variable, even if the type is consistent.
157 :     In zslice-k1k2.diderot, if the green image declaration is:
158 :     field#0(2)[] G = imgG ⊛ tent;
159 :     and the geometry tensor is later declared
160 :     tensor[3,3] G = (P•H•P)/|g|;
161 :     that redeclaration causes no problems, but then usage of G the field
162 :     G@kk
163 :     causes:
164 :     [zslice-k1k2.diderot:52.28-32] Error: type error for binary operator "@"
165 :     expected: (field#'diff0101('dim0100)'shp00FF * tensor['dim0100])
166 :     but found: (tensor[3,3] * vec2)
167 :    
168 : jhr 784 test/mip-cam.diderot:
169 :     // generated C code looks like "(float)p_ui_0--0.5e0f"
170 :     //real rayU = 2.0*camUmax*(real(ui) - -0.5)/real(imgResU) - camUmax;
171 :    
172 :     test/vr-kcomp.diderot:
173 :     // HEY (scoping BUG): the strand parameters (e.g. ui, vi) ...
174 :    
175 :     test/zslice2.diderot:
176 :     // but is this not valid syntax for creating field in one shot?
177 :     //field#2(3)[] F = (load("../data/zimg112.nrrd")) ⊛ bspln3;
178 :     // It is valid syntax, but there is a bug in the conversion from HighIL to MidIL
179 :    
180 :     test/zslice2.diderot:
181 :     // HEY (bug) bspln5 leads to problems ...
182 :     // uncaught exception Size [size]
183 :     // raised at c-target/c-target.sml:47.15-47.19
184 :     //field#4(3)[] F = img ⊛ bspln5;
185 :    
186 :    

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