Hello Matthew,

Thank you for testing and providing feedback on the prototype. I'm glad to
hear you could run it without too much hassle.

#include <qcustomplot.h> needed to be changed to
> #include "qcustomplot.h" to let the compiler know the header is in an
> include folder.

It should've been  "qcustomplot.h" from the start, I must've misstyped it.
Will fix it right away, thanks for pointing it out.

Performance on my A10-5750M laptop isn't great

That's probably because the prototype isn't set up to use your GPU and/or
OpenCL. It just runs the benchmark on the CPU.

1) When running or re-running a benchmark, clearing the output
> automatically would be a good idea rather than forcing the user to click
> the 'reset data' button.

I made it so that outputs stack on multiple runs to see how it behaves when
displaying lots of data bars. It's like that only for testing purposes.

2) The x axis delimiters are very irregular.  For the chart below with
> 0.3Gb/s or 300Mb/s being the largest value if it were broken into 50Mb/s
> sections it may look a little clearer.

Honestly, I didn't have enough time to make the section splits normalized,
so I just cheated a little and made them split in proportion to the current
maximum value. That's why it's so irregular. Will fix it in the future.

 3) labeling each line with the actual benchmark value either on the line
> itself or on the y-axis label would be helpful for comparison/bragging
> reasons.

Of course, it's on my list from the start. Couldn't find that particular
functionality in QCustomPlot, so I'll probably implement it myself.

 4) I noticed the application appears to be running in debug mode.  I am
> not sure if that was a config choice I made or is intended by default.

When running it from Qt Creator, I can choose between debug and release
mode. I guess I'll have to configure it so it runs in release mode by
default for those who don't use Qt Creator. That is also why your
performance was lacking.

5) On the performance front, will there be a self contained executable for
> this in the future?  Perhaps one that can just be executed within the
> viennacl top level directory where the relative paths are always known.

If by executing it within the viennacl top level directory you mean placing
the .exe file into your viennacl folder, then yes, I guess I could make a
separate configuration to achieve that. Note that I am aiming to make it
completely standalone soon, so that you don't have to worry about manual
configuration.

Again, thanks for the feedback, I very much appreciate it.

Best regards,
Namik


On Thu, May 29, 2014 at 3:10 AM, Matthew Musto <matthew.mu...@gmail.com>
wrote:

> Namik,
>
> Great work!  I installed Qt 5.3.0 and it ran really well on Visual Studio
> 2013 Ultimate and Windows 8.1.  My paths exactly matched yours so there was
> nothing I needed to do other than open the *.pro file and click run.
> Congratulations on getting something prototyped so quickly.
>
> I did need to make one modification on line 18 of mainwindow.h to get it
> to compile.  #include <qcustomplot.h> needed to be changed to
> #include "qcustomplot.h" to let the compiler know the header is in an
> include folder.  That should be cross a cross platform compatible change
> and I would recommend it.  I opened a defect on github, but I didn't want
> to fork the project for something so small.
>
> Performance on my A10-5750M laptop isn't great but it does look sharp
> (screenshot below for those who haven't installed this yet).
>
> I do have a number of suggestions after using it for the first time.  Feel
> free to take them all with a grain of salt as I realize this is just a
> proof of concept.
>
> 1) When running or re-running a benchmark, clearing the output
> automatically would be a good idea rather than forcing the user to click
> the 'reset data' button.
>
> 2) The x axis delimiters are very irregular.  For the chart below with
> 0.3Gb/s or 300Mb/s being the largest value if it were broken into 50Mb/s
> sections it may look a little clearer.
>
> 3) labeling each line with the actual benchmark value either on the line
> itself or on the y-axis label would be helpful for comparison/bragging
> reasons.
>
> 4) I noticed the application appears to be running in debug mode.  I am
> not sure if that was a config choice I made or is intended by default.
> Regardless, the following line from Qt Creator leads me to believe
> performance is going to suffer:
> C:\build-ViennaCL_Benchmark-Desktop_Qt_5_3_0_MSVC2013_64bit-Debug\debug\ViennaCL_Benchmark.exe
> exited with code 0
>
> 5) On the performance front, will there be a self contained executable for
> this in the future?  Perhaps one that can just be executed within the
> viennacl top level directory where the relative paths are always known.
> When I run an application through the debugger or VS2013 environment, the
> performance is an order of magnitude slower than if I just execute the
> ensuing *.exe.
>
> That's all I have for now.  I look forward to watching your summer project
> progress and will gladly help test and offer suggestions as things move
> along.
>
> -Matt
>
>
>
>
> On Mon, May 26, 2014 at 6:19 PM, Namik Karovic <namik.karo...@gmail.com>
> wrote:
>
>> Hello,
>>
>> The first prototype of ViennaCL Benchmark is here!
>>
>> Here's a quick breakdown of what's inside:
>> -A single copy-benchmark was placed in a QObject class in order to
>> utilize Qt's signals and slots
>> -Both QML and C++ visualization was implemented, for comparison purposes
>> -QML visualization: I used QChart.js
>> <http://jwintz.me/blog/2014/02/15/qchart-dot-js-qml-binding-for-chart-dot-js/>
>>  which
>> implements Chart.js <http://www.chartjs.org/>. QChart.js is a QML
>> binding for Chart.js
>> -C++ visualization: I found a great plotting library QCustomPlot
>> <http://www.qcustomplot.com/> which not only offers large amounts of
>> plots and charts, but also has excellent documentation easily integrated
>> with QtCreator.
>>
>> Now for a detailed usage comparison:
>> -Integration
>> First off, let me say that integrating QML with C++ wasn't as easy as I
>> had hoped. All qml files need to be set in a qrc file, and all custom qml
>> and js files need to be explicitly marked in order to be properly imported
>> by the qml engine. This is only a problem when dealing with qml for the
>> first time, properly documenting the import process should make it a lot
>> easier.
>>
>> On the C++ side, its as easy as adding qcustomplot.h and qcustomplot.cpp
>> to the project.
>> -Communication with C++ code
>> I've encountered a bug in Qt when using QCustomPlot. When using Qt<5, in
>> my case 4.8.5, everything work fine. But when using any Qt>=5 ( I tried
>> 5.0.2 and 5.2 ), I get a OpenGL compile error
>> in QtGui\qopenglversionfunctions.h . After looking it up, I found out it
>> was reported at https://github.com/go-qml/qml/issues/56 and currently
>> the best fix is to comment the whole trouble-making line 785 ( void
>> (QOPENGLF_APIENTRYP MemoryBarrier)(GLbitfield barriers); ). This bug was
>> supposedly fixed in Qt 5.2, but it seems it's still here.
>> After fixing this issue, everything worked perfectly and QCustomPlot
>> behaved like a normal Qt class.
>>
>> As for QML, interaction with C++ is achieved by registering a C++ class
>> instance variable with setContextProperty(), after which the said
>> variable can be accessed in QML without much trouble. Again, its at first
>> little weird to use QML and C++, but properly documenting the process
>> should make it ok.
>>
>> -Functionality:
>> QChart.js is very simple and not too rich with functionality.
>> QCustomPlot on the other hand is a beast of a library, with a ton of
>> features and options.
>>
>> -The "looks"
>> Out of the box, I think the QML implementation feels a bit better than
>> C++.
>>
>> -Licensing
>> QChart.js: MIT license
>> QCustomPlot: MIT license
>>
>> -Source code size
>> QChart.js: around 65 KB
>> QCustomPlot: whooping 884 KB
>>
>> Well, not that I've spent so much time exploring QML, its time to bring
>> out the dealbreaker. QChart.js does not support dynamic update of charts.
>> That means there's no changing the graph data once it's loaded, so I had to
>> do a dirty trick to make it work: delete the whole graph, then repaint a
>> new one with new data in its place. I can sya how much will this affect
>> performance, but I'm pretty sure it's not going to be satisfactory.
>>
>> TL:DR
>> My final verdict would be to play it safe, and go full C++. QCustomPlot
>> has fantastic features and awesome documentation, and it would be a shame
>> not to use it.
>> QML, on the other hand, does have some nice features, but it seems it's
>> not worth the trouble ( or I just picked the wrong javascript library ).
>>
>> Any comments are welcome.
>>
>> P.S In viennacl/tools/sha1.hpp  line 209: u_int32_t hash[5]; couldn't be
>> compiled on my MinGW 4.8 32bit and Windows 7 Ultimate 64bit. I changed it
>> to: uint32_t hash[5]; and it worked. It seems to be a bug in MinGW. Is it
>> ok for me to continue using uint32_t ? They seem the same to me.
>> P.S.S I encountered an issue when trying to use vector.cpp benchmark.
>> When including benchmark-utils.hpp I'd get an error: multiple definition of
>> printOps function and couldn't compile. I assume I'm using it wrong ( I
>> basically just copied and pasted vector.cpp into a QObject class like I did
>> with copy.cpp )
>>
>> Regards, Namik
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> The best possible search technologies are now affordable for all
>> companies.
>> Download your FREE open source Enterprise Search Engine today!
>> Our experts will assist you in its installation for $59/mo, no commitment.
>> Test it for FREE on our Cloud platform anytime!
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=145328191&iu=/4140/ostg.clktrk
>> _______________________________________________
>> ViennaCL-devel mailing list
>> ViennaCL-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/viennacl-devel
>>
>>
>
>
> --
> --------------------
> Matthew Musto
> matthew.mu...@gmail.com
>
------------------------------------------------------------------------------
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
_______________________________________________
ViennaCL-devel mailing list
ViennaCL-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/viennacl-devel

Reply via email to