<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;">On Saturday 04 April 2009, you wrote:<br>
> Am 03.04.09, 13:39 +0200 schrieb Cyrille Berger:<br>
> >> Can Shiva and CTL programms be automatically converted to OpenCL to get<br>
> >> advantage of its expected hardware support in LLVM [2]? This would relax<br>
> >> the need to care about OpenCL from user side - Krita, Oyranos ...<br>
> ><br>
> > When I started OpenGTL, my goal was to have the possibility to run Shiva<br>
> > and CTL on CPU and GPU, depending on what the hardware support. At that<br>
> > time my idea was to have a GLSL backend, since I haven't started, all<br>
> > options are still opeened :)<br>
><br>
> Ah, that is a point I did not really understand. So a library can add a<br>
> (GPU) backend to LLVM at runtime? E.g. thus enabling GPU support in<br>
> gallium3d while OpenGTL has no benefit?<br>
> So a (longterm) plan could be:<br>
> CTL/Shiva -> IL -> GLSL -> IL -> GPU/CPU assembler code ?<br>
In fact either, CTL/Shiva -> GLSL -> IL -> GPU or CTL/Shiva -> IL -> CPU / <br>
GPU. There is little point in doing IL -> GLSL (while probably possilbe, there <br>
is a IL -> C backend, it can only produce brain damaged code).<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>> >> Would this be an issue for a LLVM based convertor? Can or must CTL and<br>
> >> Shiva programms be optimised for OpenCL? I read LLVM has to convert to<br>
> >> IL anyway. But optimisation is not always an easy task.<br>
> ><br>
> > I am not sure about the question. Yes LLVM (or gcc for that matter)<br>
> > convert to a IL where the optimisation are done, and then a backend<br>
> > convert to assembly. As far as I can see, it's how gallium3D/mesa is<br>
> > going to do things, the OpenCL/GLSL front-end convert to LLVM's IL and<br>
> > then it's converted to something the GPU can handle (or the CPU). Which<br>
> > also means, that an other solution would be to hook OpenCTL/OpenShiva at<br>
> > the llvm part of the driver, this is less portable, and not sure if the<br>
> > llvm part will be visible.<br>
><br>
> ... OpenCTL/Shiva as a LLVM frontend ?<br>
It's allready the case.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>> >> How does you solve multi channel processing in OpenGTL if at all? Does<br>
> >> you simply split processing for non channel crossing operators? Or ist<br>
> >> this to be done by the user?<br>
> ><br>
> > Not sure what is you mean by channel ? You mean multi-threading ?<br>
><br>
> e.g. spectral data or Rgb/Cmyk + alpha + z buffer + UV + ???<br>
Well basically, neither CTL nor Shiva knows anything about colors, it's low-level stuff. I indeed consider that the meaning of channels is something that need to be known at the next layer (in oyranos, or koffice's pigment, or in any other CM aware library).<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>> So we should have suggested a additional OpenGTL/LLVM/(OpenCL/GLSL) GSoC<br>
> project ;-)<br>
Maybe, but my feeling is that this year was/is too early for this.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>> Well there is the ILM CTL implementation, which deploys some GPU support.<br>
> This would allow single users to hook that as backend into Oyranos, at<br>
> least for CTL.<br>
There is no support for GPU in AMPAS's CTL implementation at the moment.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>-- <br>
Cyrille Berger<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p></body></html>