World: r4wp
[#Red] Red language group
older newer | first last |
Gerard 14-Oct-2012 [2678x4] | Nice Doc, Thanks for taking time to answer. I'll "follow the guide" as we say here ! Have a nice day. Now I'll go reading your link. |
bOK Doc I agree for the speed factor But then you would do the multi-targets road again this time for multiple GPUs , isn't it ? | |
have to do ... | |
In between, here is the PyOpenCL lib link for those interested to see how the OpenCL API is accessed by other languages - and this could pave the way for some Red binding ... http://mathema.tician.de/software/pyopencl | |
DocKimbel 14-Oct-2012 [2682x5] | OpenCL is certainly a quicker way to access it. My plan for direct GPU access is not only motivated by speed gains, but also by reducing complexity, having a simple, lightweight access to GPGPU capabilities. |
Also, for direct GPU access, it will only be doable for GPU that have all the required specification published (unless drivers provides the right API already). | |
I know the french guy who used OpenCL to automatically parallelize some iterators for Scala, so it's definitely something I want to try for Red: http://code.google.com/p/scalacl/ | |
(I'm trying to compile Insight debugger on the RPi, compiling since half an hour...hope it will finish before tonight) | |
Ah, of course it ends up earlier with an obscure compilation error... | |
Kaj 14-Oct-2012 [2687] | I haven't isolated any callback case yet, but the existing cases don't actively use floats |
Gerard 14-Oct-2012 [2688] | Thanks Doc - I know your way is the best you can choose for fine tuning GPU access without adding much overhead ! |
DocKimbel 14-Oct-2012 [2689x2] | Kaj: I've pushed a fix for ARM that should improve the stability, can you do some quick tests to see if some of the issues are fixed? |
cURL example script still crashing... | |
Kaj 14-Oct-2012 [2691x2] | OK |
I've added preliminary support for 64-bits integers to the SQLite binding. They're represented by a float! so they can be passed around, but they're hard to compute with | |
DocKimbel 14-Oct-2012 [2693x2] | Ok, it seems we'll have to return to an explicit callback declaring syntax. In cURL, the callbacks passing (get-word! syntax) occur after the callback declaration, so when the compiler is creating the callback prolog, it has no way to guess that this particular function will be used as callback later.... |
We already have discussed this in the tracker, but I can't find the related tickets... | |
Andreas 14-Oct-2012 [2695] | I also seem to remember this. Maybe it was the problem behind this: https://github.com/dockimbel/Red/issues/204 |
DocKimbel 14-Oct-2012 [2696x6] | #204: that's the one I would have loved to see documented ;-) |
I think #193 might be the closest. | |
Ok, I think I see where lies the issue in the compiler. | |
The compiler is using two ways to encode the fact that a function is used as a callback: - through the CDECL attribute presence (destined to be called by external code) - through the internal CALLBACK flag that is assigned to all functions that get their pointer passed as argument (get-word! syntax). | |
Somewhere in the compiler, these two conventions are conflicting...let see if I can fix that without having to change anything to the current semantics. | |
Kaj: your code is ok, as long as it sets CDECL for marking functions called by external libs. | |
Kaj 14-Oct-2012 [2702x2] | I should be doing that everywhere |
Normally a function can't be used before it's defined. How could I pass a pointer to a function that's not defined yet? | |
DocKimbel 14-Oct-2012 [2704x5] | It can if called from the body of another function. |
(IIRC) | |
Function's body compilation is deferred. During global code compilation, only functions prototypes are collected, so all functions are known before the first function body gets processed. | |
That approach allow to solve cross-reference issues. | |
Basically, Red/System compiler is doing automatically what C compiler requires you to do manually (i.e. specifying function prototypes separately in headers). | |
Kaj 14-Oct-2012 [2709x3] | So there is no forced function order? |
When I put one of the cURL callbacks behind the function that uses it, the code size increases by four bytes, even for Intel. But when I then remove the [cdecl] it goes back to the original size | |
The stack fix has degraded the behaviour. I now get an access violation on all programs | |
DocKimbel 14-Oct-2012 [2712x12] | I'm working on it, the fix is fine, but it seems it doesn't work with __libc_start_main call (and only that one). |
It's like this call doesn't respect the ARM EABI... | |
I will push the fix for callbacks correct prolog/epilog generation in a minute. | |
Fix pushed. | |
cURL binding should now work correctly (except the ending segfault caused by bad libc init call...I'm working on it). | |
Ok, this time, it's the good one :-) | |
(A bad copy/paste earlier changed the position of the first fix before I commited it, libc init is fine). | |
Both cURL and SDL audio test are now working fine on my RPi. | |
BTW, I've also applied the same fix for callbacks on IA-32 backend, so retesting all bindings on Linux/Intel would be needed. | |
Kaj: I can't find the URL for Glib repo? | |
Ok, found it, it's "GLib"... | |
PeterPaint-SDL demo works on RPi now. | |
Kaj 14-Oct-2012 [2724] | That already worked :-) |
DocKimbel 14-Oct-2012 [2725] | Ah! :) |
Kaj 14-Oct-2012 [2726] | The URL for GLib is Red-GLib |
DocKimbel 14-Oct-2012 [2727] | For GTK demos, I get an Xlib error: Xlib: extension "RANDR" missing on display ":1:0" |
older newer | first last |