glip-compute is a command line tool built for GNU/Linux. It requires the host machine to run a X server and allow you to generate graphics, process images and save results to image files without invoking a GUI.
Use GLIP-Lib from the command line to process or generate images.
glip-compute [-p FILENAME] [-u FILENAME] [-i {1, 2, 3, ...} FILENAME]
[-o {1, 2, 3, ...} FILENAME] [-r FILENAME]
Mandatory arguments :
-p, --pipeline Pipeline filename. See the online documentation for more
information about pipeline scripts.
E.g. : -p pipeline.ppl
Optional, passing the inputs/outputs as aguments (single processing
command) :
-i, --input Input to the pipeline, can be indexed by a number or by the
name of the input port (they do not need to be in the
correct order), followed by a filename. All the input
ports must receive an input image.
E.g. : -i 0 inputImage.ext
-i inputPortName inputImage.ext
-o, --output Output to the pipeline, can be indexed by a number or by the
name of the input port (they do not need to be in the
correct order), followed by a filename. Only the ouput
ports listed will be saved, others will be discarded
E.g. : -o 0 outputImage.ext
-o outputPortName outputImage.ext
-u, --uniforms Load a set of uniform variables script. See the online
documentation about these.
E.g. : -u uniformsFile.uvd
Optional, passing the processing commands as a file (can be used to
generate multiple processing commands using the same pipeline) :
-r, --process Load a set of processing commands from a file. See
the section "Processing Commands" for more information
E.g. : -r commandsFile.txt
Optional, passing the processing commands from stdin.
Other options :
-f, --format Set how the input format requirements are passed to the
pipeline. You can use C notation with either %d
indicating the use of the numerical indexing, or %s
indicating the use of the port name instead.
E.g. : -f inputFormat%d
-f someName_%s
-m, --memory Set the amount of memory (given in MB) available to
be reusable on the device. This helps reduce significantly
the overhead induced by loading the image files (textures
are conserved as long as possible on device, depending on
their usage frequency).
Default is 128 MB.
-s, --preserve Preserve the pipeline definition after its first creation.
New inputs sizes will be ignored as required elements.
-d, --display Name of the host, X server and display to target for the
context.
E.g. : -d host:xServer.screenId
-d localhost:0.0
-h, --help Show this help and stops.
-t, --template Show a list of templates script (Pipeline, Uniforms and
Command) and stops.
-v, --version Show the version and stops.
-V, --Version Start a context, show the informations and stop.
You can set the display variable before using this option.
PROCESSING COMMANDS
Processing commands describe which resource to use in order to repeat
the operation with little overhead. These commands are given in a format
close to the format of the Pipeline or Uniforms script. They should be :
PROCESS
{
INPUT( inFilename0.ext, inFilename1.ext, ...)
OUTPUT( outFilename0.ext, outFilename1.ext, ...)
}
This description must match the number of input of the pipeline, and be
given in the correct order. As for the outputs, it is possible to discard
one by using the keyword VOID instead of a filename. Filtering can be
specified per input with the following set of commands :
GL_TEXTURE_MIN_FILTER( filterForInput0, filterForInput1, ...)
GL_TEXTURE_MAG_FILTER( filterForInput0, filterForInput1, ...)
GL_TEXTURE_WRAP_S( filterForInput0, filterForInput1, ...)
GL_TEXTURE_WRAP_T( filterForInput0, filterForInput1, ...)
It is also possible to supply specific Uniforms variables on a per command
basis via two methods. The first, from a file, by adding the following
line in the body of the command :
UNIFORMS( filename.uvd )
The second adding the code directly via the body :
UNIFORMS
{
// Uniforms description goes here.
}
EXAMPLE
For a pipeline with one input and at least one ouput :
glip-compute -p myPipeline.ppl -i 0 inputImage.png -o 0 outputImage.png
To process an image :
To process multiple images :
Example of processing commands, commands.txt :
Use with :
This section describes how to access remote computation capability of a server. It requires the server to be running a X Server with at least one display open. You will not be able to see any graphics via this method alone (graphics will be generated on the display (might be virtual) associated to the distant machine). But this might be sufficient and useful for glip-compute. It also requires you to have a session opened on the distant machine.
Steps :
On a GPU instance, install the required packages :
Install freeimage from source (use the -j option for multi-thread compilation) :
Compile and install GlipLib, GlipCompute :
Start the X server with a display at the address :0 :
Connect with X forwarding, change the targeted display and test :
1.8.8