comparison doc/v2_planning/plugin_greenlet.py @ 1200:acfd5e747a75

v2planning - a few changes to plugin proposals
author James Bergstra <bergstrj@iro.umontreal.ca>
date Mon, 20 Sep 2010 11:28:23 -0400
parents a60b3472c4ba
children
comparison
equal deleted inserted replaced
1199:98954d8cb92d 1200:acfd5e747a75
1 """plugin_greenlet - draft of library architecture using greenlets""" 1 """plugin_greenlet - draft of library architecture using greenlets
2 2
3 3 HISTORICAL - NOT ACTUALLY A PROPOSAL
4 """ 4 ====================================
5 5
6 - PICKLABLE - algorithms are serializable at all points during execution 6 This was the original approach for what I renamed to plugin_JB, until I realized that I could
7 7 get the end result without using greenlets at all.
8 - ITERATOR walks through algorithms with fine granularity 8
9 9 Still, greenlets seem like they could be neat and making this program stretched my mind so I
10 - COMPONENTS - library provides components on which programs operate 10 keep it. There's something wrong when you run with the kfold validation, but until that point
11 11 I think it works.
12 - ALGORITHMS - library provides algorithms in clean (no hooks) form
13
14 - HOOKS - user can insert print / debug logic with search/replace type calls
15 e.g. prog.find(CALL(cd1_update)).replace_with(SEQ([CALL(cd1_update), CALL(debugfn)]))
16
17 - PRINTING - user can print the 'program code' of an algorithm built from library pieces
18
19 - MODULAR EXPERIMENTS - an experiment object with one (or more?) programs and all of the objects referred to by
20 those programs. It is the preferred type of object to be serialized. The main components of
21 the algorithms should be top-level attributes of the package. This object can be serialized
22 and loaded in another process to implement job migration.
23
24 - OPTIMIZATION - program can be optimized automatically
25 e.g. BUFFER(N, CALL(dataset.next)) can be replaced if dataset.next implements the right
26 attribute/protocol for 'bufferable' or something.
27
28 e.g. SEQ([a,b,c,d]) can be compiled with Theano if sub-sequence is compatible
29
30 - don't need greenlets to get efficiency, the implementations of control flow ops can manage a
31 stack or stack tree in the vm (like greenlets do I think) we don't really need
32 greenlets/stackless I don't think
33 12
34 """ 13 """
35 14
36 __license__ = None 15 __license__ = None
37 __copyright__ = None 16 __copyright__ = None