summaryrefslogtreecommitdiff
path: root/NEWS
blob: 3a6333b576efae58527c76016992185b7781d239 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
=========
Changelog
=========

Here you can see the full list of changes between each ufo-core release.


Version 0.6
===========

Released on January 24th 2014.

Due to the inclusion of Autotools builds, we restructured and cleaned up
installation paths, along the lines of GLib. That means headers are installed
into major API version dependent directories, e.g. now /usr/include/ufo-0/ufo.
We also split hardware-dependent and -independent files, thus kernels go into
/usr/share/ufo now. In the same vein, we also lowered the SO version down to 0,
so please if you have installed from source, make sure to remove any traces of
an old UFO installation before installing the latest version.

Minor changes include:

- Added "time" property to scheduler.
- Scheduler can now use and existing arch graph and return associated resources.
- By default only GPU devices are used.
- Documentation is now hosted at ufo-core.readthedocs.org.
- Added "num-processed" property.

Developers
----------

- Replace GList for loops with g_list_for macro
- Include compat.h
- Renamed and install mkfilter as ufo-mkfilter.
- ufo-core is now monitored by Travis CI
- Removed the python/ subdir which is replaced by ufo-python-tools
- Removed unnecessary clprof tool.

Bugfixes
--------

- Fix and simplify deploy script
- Require json-glib in pkgconfig
- Link to documentation on rtd.org
- Fix .gir generation
- Fix installation path for header files
- Do not error on deprecated declarations


Version 0.5
===========

Released on October 28th 2013.

- Added MPI support as an alternative to ZMQ.
- Added basic math operations for use with filters.
- UFO can now be used reliably in a multithreaded Python context. That means,
  calling ``ufo_scheduler_run`` in a Python thread will "just work". This change
  allows run-time injection of NumPy buffers into the task graph.

Developers
----------
- Add ``-DDEBUG`` when debug is enabled so we can #ifdef it
- Add GLib version guards
- ufo-core compiles with Clang
- CMake 2.6 is used solely throughout the sources
- Add convenience function ufo_buffer_new_with_size
- Add a shim macros to support both zmq 2 and 3
- Add ``UFO_USE_GPU`` env var to restrict to single GPU
- Added ufo_resource_manager_get_cached_kernel that always returns the same
  kernel object when given the same file and kernel name. Note, that you have to
  guard it properly and do not call ``clSetKernelArg`` from multiple threads at
  the same time.
- Add profile tracing to produce a JSON trace event file, that can be read and
  visualized with Google's Chrome browser. It can be enabled with
  UfoScheduler::enable-tracing set to TRUE.

Bug fixes
---------
- Fix #6: Don't use enum values as bit flags
- Fix bug: no plugin name is sent to remote nodes
- Fix copy segfault in when source has not alloc'd
- Removed dependency on a C++ compiler
- Fix reduction problem


Version 0.4
===========

Released on July 18th 2013.

Major changes
-------------

- Rewrote internal architecture for better scheduling.
- Remove profiler levels and add more output
- Implement input data partitioning: On clusters where distributed data access
  is possible, we can achieve perfect linear scalability by partitioning the
  input data set.
- Install SIGTERM handler for cleanup of node server


Features
--------

- Add ufo_task_graph_get_json_data
- Streamline and simplify scheduling
- Provide function to flatten graph
- Provide graph copy functionality
- Add node indices for copies
- Add all paths as OpenCL include paths
- Write out JSON version
- Search in UFO_PLUGIN_PATH env var


Bug fixes
---------

- Fix problems with AMD platforms
- Fix timestamp readout
- Fix potential single integer overflow
- Exit when JSON tasks could not be found
- Fix remote tasks getting stuck
- Unref expanded nodes explicitly
- Fix #189: don't copy nodes with more than one input
- Fix #219: Warn instead of segfault
- Fix annotation for older GI compiler
- Fix problem with first remote data item
- Fix platform selection
- Fix problems with objects that are not unreffed
- Refactor buffer and add support for #184
- Refactor resources and fix #183
- Fix buffer for broadcast operations


Version 0.3
===========

Released on February 8th 2013.

Major breakage
--------------

- A graph is now a simple data structure and not a specific graph of task nodes.
  This is implemented by a TaskGraph.

- Filters are now called TaskNodes and connected with
  ``ufo_task_graph_connect_nodes`` and ``ufo_task_graph_connect_nodes_full``
  respectively.


Graph expansion
---------------

With 0.2, Using multiple GPUs was possible by manually splitting paths in the
graph and assigning GPUs. Now, task graphs are automatically expanded depending
on the number of available GPUs and remote processing slaves that are started
with the newly added ``ufod`` server software.


Minor improvements
------------------

- A ``deploy.sh`` script has been added for easier deployment of the software
  stack. This is especially useful to install everything in the home directory
  of the user, who only needs to setup ``LD_LIBRARY_PATH`` and
  ``GI_TYPELIB_PATH`` correctly to run the software.


Version 0.2
===========

Released on November 8th 2012.

Major breakage
--------------

- Filters are now prefixed again with ``libfilter`` to allow introspected
  documentation. Thus, any filter built for 0.1 cannot be used because they are
  simply not found.

- :c:func:`ufo_plugin_manager_get_filter` received a new third parameter
  ``error`` that reports errors when opening and loading a UfoFilter from a
  shared object.

- :c:func:`ufo_resource_manager_add_program` is removed.

- The kernel file name must be passed to :c:func:`ufo_resource_manager_get_kernel`.

- The ``CHECK_ERROR`` macro defined in ``ufo-resource-manager.h`` was renamed to
  ``CHECK_OPENCL_ERROR`` to better reflect its real purpose.

- The old JSON specification has been changed to reflect the possibilities of
  the current API. Thus, JSON files that worked under Ufo 0.1 cannot be read
  with Ufo 0.2.

- Removed the otherwise unused :c:func:`ufo_buffer_get_transfer_time` and
  replaced this with the more flexible :c:func:`ufo_buffer_get_transfer_timer`.

- Rename :c:func:`ufo_filter_initialize` to
  :c:func:`ufo_filter_set_plugin_name` that reflects its true meaning.


Scheduling
~~~~~~~~~~

A more scheduable way to run filters has been implemented with the virtual
:c:func:`process_cpu` and :c:func:`process_gpu` methods. Contrary to the old
way, they act on *one* working set at a time that is passed as an array of
pointers to :c:type:`UfoBuffer`. Sometimes, a filter needs to setup data
depending on the input size. For this reason, the virtual method
:c:func:`initialize` takes a second parameter that is again a list of pointers
to buffer objects.

Moreover, the :c:type:`UfoScheduler` class has been added that is combining
the work previously accomplished by :c:func:`ufo_filter_process` and
:c:func:`ufo_graph_run`. The scheduler orchestrates the filters and
assigns resources in a meaningful way.

If written in the new kernel style, producer filters must return a boolean flag
denoting if data was produced or not.


General improvements
--------------------

- The manual was restructured considerably.

- Saving graphs as JSON files has been added via
  :c:func:`ufo_graph_save_to_json()`.

- Filters can now wait until their properties satisfy a condition using
  :c:func:`ufo_filter_wait_until`, see also :ref:`filters-block`.

- A new method :c:func:`ufo_resource_manager_get_kernel_from_source` so that
  filters can load kernels directly from source.

- Streamlined error handling: Filters should not issue ``g_warnings`` or
  ``g_errors`` on their own anymore but create an error with ``g_error_new`` and
  return that.


Version 0.1.1
=============

- Ticket #55: tests/test-channel blocks indefinitely