Hi Toby,

alright, finally some first testing experience. This is a bunch of very 
basic information, as I'm only now in the state where I can mimic a new 
PyViennaCL user ;-)

* Installation: Works nicely from the PPA, no problems with my Linux 
Mint Maya (based on Ubuntu 12.04, so this is expected).

* Found the PyViennaCL documentation, but it was *not* installed 
automatically, but listed as 'suggested' package. I think this can be 
addressed in the installation instructions and does not require a change 
in behavior.

* First Step: As a Python newbie, I had no real idea about what which 
commands to run. I started with
  import pyviennacl as p
as usual, and then managed to create matrices as
  A = p.Matrix(5,5);
  B = p.Matrix(5,5);
  C = A + B;
and even print the result
  print(C);
(prints a 5x5 matrix consisting of zeros - good!)

* Okay, so let's try to print individual elements of A and B:
  A(1,1);        # error!
  A.item(1,1);   # error!
  A[1,1];        # returns pyviennacl.pycore.HostScalar information
  print(A[1,1]); # works!
Okay, this was a bit lengthy, we should have some more 'newbie 
information' in the docs :-)

* Let's assign some elements:
  A[1,1].assign(2.0);   # error: Cannot assign to HostScalar
  A[1,1] = 2.0;         # same
Here I searched the docs and found that it's not possible to assign 
stuff directly. Okay, so I created a numpy array (which I had to look up 
how to do that, of course ;-) ) and got:
  Drow = numpy.array([1, 2, 3, 4, 5]);
  D = numpy.array([Drow, Drow, Drow, Drow, Drow]);
  C = B + A; # error!
Type conversion tricked me, A became a matrix of integers. Here I see 
the motivation for allowing mixed precision operations in ViennaCL 
asap... Alright, so restart with
  Drow = numpy.array([1.0, 2.0, 3.0, 4.0, 5.0]);
  D = numpy.array([Drow, Drow, Drow, Drow, Drow]);
  C = B + A;
  print(C);
and voila! Cool!

Okay, let's stop here for now. Summary: Great, simple operations just 
work nicely and it integrates well in the Python environment. What can 
be done to make the user experience even better?
  - Allow element-wise manipulation. Sure, this is terribly slow, but it 
helps a lot with prototyping, which is an important use case with Python.
  - Provide a few 'first steps' tutorials with the documentation. If 
that's already there and I simply couldn't find it, make it more 
visible. This way more emphasis is on the 'get simple stuff going' 
rather than internals of the scheduler which people won't read through 
for a start.
  - Ideally, each of the items in the  linalg package has a short code 
snippet on how to call/use it.
  - Correct the version number in the 'PyViennaCL 1.5.0 documentation' 
string in the HTML docs. ;-)
  - Think about numeric type conversions. If a numpy-array of numeric 
type T1 is assigned to a PyViennaCL matrix of type T2, should the 
PyViennaCL matrix change to T1? Maybe issue a warning?

Anyway, I think we are pretty close to a release here, I'll give the 
whole installation a try on Windows as well :-)

Thanks and best regards,
Karli


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
ViennaCL-devel mailing list
ViennaCL-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/viennacl-devel

Reply via email to