<!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>
&gt; Am 03.04.09, 13:39 +0200 schrieb Cyrille Berger:<br>
&gt; &gt;&gt; Can Shiva and CTL programms be automatically converted to OpenCL to get<br>
&gt; &gt;&gt; advantage of its expected hardware support in LLVM [2]? This would relax<br>
&gt; &gt;&gt; the need to care about OpenCL from user side - Krita, Oyranos ...<br>
&gt; &gt;<br>
&gt; &gt; When I started OpenGTL, my goal was to have the possibility to run Shiva<br>
&gt; &gt; and CTL on CPU and GPU, depending on what the hardware support. At that<br>
&gt; &gt; time my idea was to have a GLSL backend, since I haven't started, all<br>
&gt; &gt; options are still opeened :)<br>
&gt;<br>
&gt; Ah, that is a point I did not really understand. So a library can add a<br>
&gt; (GPU) backend to LLVM at runtime? E.g. thus enabling GPU support in<br>
&gt; gallium3d while OpenGTL has no benefit?<br>
&gt; So a (longterm) plan could be:<br>
&gt;    CTL/Shiva -&gt; IL -&gt; GLSL -&gt; IL -&gt; GPU/CPU assembler code ?<br>
In fact either, CTL/Shiva -&gt; GLSL -&gt; IL -&gt; GPU or CTL/Shiva -&gt; IL -&gt; CPU / <br>
GPU. There is little point in doing IL -&gt; GLSL (while probably possilbe, there <br>
is a IL -&gt; 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>&gt; &gt;&gt; Would this be an issue for a LLVM based convertor? Can or must CTL and<br>
&gt; &gt;&gt; Shiva programms be optimised for OpenCL? I read LLVM has to convert to<br>
&gt; &gt;&gt; IL anyway. But optimisation is not always an easy task.<br>
&gt; &gt;<br>
&gt; &gt; I am not sure about the question. Yes LLVM (or gcc for that matter)<br>
&gt; &gt; convert to a IL where the optimisation are done, and then a backend<br>
&gt; &gt; convert to assembly. As far as I can see, it's how gallium3D/mesa is<br>
&gt; &gt; going to do things, the OpenCL/GLSL front-end convert to LLVM's IL and<br>
&gt; &gt; then it's converted to something the GPU can handle (or the CPU). Which<br>
&gt; &gt; also means, that an other solution would be to hook OpenCTL/OpenShiva at<br>
&gt; &gt; the llvm part of the driver, this is less portable, and not sure if the<br>
&gt; &gt; llvm part will be visible.<br>
&gt;<br>
&gt; ... 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>&gt; &gt;&gt; How does you solve multi channel processing in OpenGTL if at all? Does<br>
&gt; &gt;&gt; you simply split processing for non channel crossing operators? Or ist<br>
&gt; &gt;&gt; this to be done by the user?<br>
&gt; &gt;<br>
&gt; &gt; Not sure what is you mean by channel ? You mean multi-threading ?<br>
&gt;<br>
&gt; 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>&gt; So we should have suggested a additional OpenGTL/LLVM/(OpenCL/GLSL) GSoC<br>
&gt; 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>&gt; Well there is the ILM CTL implementation, which deploys some GPU support.<br>
&gt; This would allow single users to hook that as backend into Oyranos, at<br>
&gt; 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>