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

SCM Repository

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

View of /branches/cuda/TODO

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1155 - (download) (annotate)
Sun May 8 14:43:30 2011 UTC (8 years, 3 months ago) by glk
Original Path: trunk/TODO
File size: 6989 byte(s)
more ideas
NOTE: GLK's approximate ranking of 5 most important tagged with

other SHORT TERM =============  (including needed for LIC)

  clamp(x, minval, maxval)  = max(minval, min(maxval, x))
or three vectors of the same size:
  clamp([x,y], minvec, maxvec)  = [max(minvec[0], min(maxvec[0], x)),
                                   max(minvec[1], min(maxvec[1], y))]
This would be useful in many current Diderot programs.
One question: clamp(x, minval, maxval) is the argument order
used in OpenCL and other places, but clamp(minval, maxval, x)
would be more consistent with lerp(minout, maxout, x).

Level of differentiability in field type should be statement about how
the provided differentiability.

[GLK:1] Add sequence types (needed for evals & evecs)
	types: ty '{' INT '}'
	indexing: e '{' e '}'

    tensor construction [DONE]
    tensor indexing [DONE]
    tensor slicing
    verify that hessians work correctly [DONE]

Use ∇⊗ etc. syntax
    syntax [DONE]
    IL and codegen

documents need for better compiler error messages when output variables
are not initialized; the current messages are very cryptic

determinant ("det") for tensor[3,3]

expand trace in mid to low translation

value-numbering optimization

Add type aliases for color types
    rgb = real{3}
    rgba = real{4}

MEDIUM TERM ================== (including needed for streamlines & tractography)

[GLK:1] evals & evecs for symmetric tensor[3,3] (requires sequences)

[GLK:2] Save Diderot output to nrrd, instead of "mip.txt"
  For grid of strands, save to similarly-shaped array
    to index into complete list

[GLK:3] Use of Teem's "hest" command-line parser for getting
any input variables that are not defined in the source file

[GLK:4] ability to declare a field so that probe positions are
to non-existant index locations.  One possible syntax emphasizes that
there is a index mapping function that logically precedes convolution:
  F = bspln3 ⊛ (img ◦ clamp)
  F = bspln3 ⊛ (img ◦ repeat)
  F = bspln3 ⊛ (img ◦ mirror)


runtime buffer

Nearly every Diderot program would be simplified by this.

[GLK:5] Want: non-trivial field expressions & functions:
to get a scalar field of vector length, or 
to get a scalar field of gradient magnitude, or 
to get a scalar field of squared gradient magnitude, which is simpler
to differentiate.  However, there is value in having these, even if
the differentiation of them is not supported (hence the indication
of "field#0" for these above)

Want: ability to apply "normalize" to a field itself, e.g.
  field#0(2)[2] V = normalize(Vimg ⊛ ctmr);
so that V(x) = normalize((Vimg ⊛ ctmr)(x)).
Having this would simplify expression of standard LIC method, and
would also help express other vector field expressions that arise
in vector field feature exraction.

tensor fields: convolution on general tensor images

other MEDIUM TERM ============ (needed for particles)

and when differentiation is not needed, into faster texture buffers.

run-time birth of strands

"initially" supports lists

"initially" supports lists of positions output from 
different initalization Diderot program

spatial data structure that permits strands' queries of neighbors

proper handling of stabilize method


	(F1 if x else F2)@pos

This will require duplication of the continuation of the conditional

at least two indices


a variable name (get confusing error messages now)

support for Python interop and GUI

Python/ctypes interface to run-time

Allow the convolution to be specified either as a single 1D kernel
(as we have it now):
different from the rest.  What is very unclear is how, in such cases,
respect to some of the axes.


Better handling of variables that determines the scope of a variable
for example, we should lift strand-invariant variables to global
scope.  Also prune out useless variables, which should include field
variables after the translation to mid-il.

co- vs contra- index distinction

some indication of tensor symmetry

dot works on all tensors

outer works on all tensors

Einstein summation notation

"tensor comprehension" (like list comprehension)


//  uncaught exception Size [size]

ViewVC Help
Powered by ViewVC 1.0.0