Tutorial by Examples: i

$data = $result->mysqli_fetch_array(MYSQLI_BOTH);
The key of parallelism is to use multiple threads to solve a problem (duh.) but there are some differences to classical multithreaded programming in how threads are organized. First lets talk about your typical GPU, for simplicities sake I'll focus on A GPU has many processing cores, which make it...
OpenCL Kernels can be either executed on the GPU or the CPU. This allows for fallback solutions, where the customer may have a very outdated system. The programmer can also choose to limit their functionality to either the CPU or GPU. To get started using OpenCL, you'll need a 'Context' and a 'Devi...
Kernels can be compiled at runtime on the target device. To do so, you need the kernel source code the target device on which to compile a context built with the target device A quick terminology update: A program contains a collection of kernels. You can think of a program as a complete C/C...
To initiate any operation on your devices, you'll need a command queue for each device. The Queue keeps track of different calls you did to the target device and keeps them in order. Most commands can also be executed either in blocking or non-blocking mode. Creating a queue is pretty straightforwa...
So now we come down to the real stuff, executing your kernels on the parallel device. Please read about the hardware basics to fully understand the kernel dispatching. First you'll need to set the kernel arguments before actually calling the kernel. This is done via err = Cl.SetKernelArg(_kernel, ...
scons describes running phases itself. Running it over an empty SConstruct yields this: $ scons scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... scons: `.' is up to date. scons: done building targets. To suppress phase messages, add -Q op...
Prepare helloworld.go (find below) package main import "fmt" func main(){ fmt.Println("hello world") } Run GOOS=linux GOARCH=arm go build helloworld.go Copy generated helloworld (arm executable) file to your target machine.
Detailed instructions on getting coded-ui-tests set up or installed.
For-loop has no business being its own documentation page!
boolean has no business being its own documentation page!
Detailed instructions on getting Nokogiri set up or installed.
There isn't much to add to Nokogiri's "Parsing an HTML/XML Document" tutorial, which is an easy introduction to the subject, so start there, then return to this page to help fill in some gaps. Nokogiri's basic parsing attempts to clean up a malformed document, sometimes adding missing clo...
Nokogiri is somewhat like a browser, in that it will attempt to provide something useful even if the incoming HTML or XML is malformed. Unfortunately it usually does it silently, but we can ask for a list of the errors using errors: require 'nokogiri' doc = Nokogiri::XML('<node><foo/&gt...
To read an array from the device back to the host, one calls clEnqueueReadBuffer($queue, $memobj, $blocking, $offset, $size, $target, 0, null, null); The $queue is the CommandQueue which was used to allocate the memory on the device. The $memobj contains the address to the device memory, $offset...
Reading an image is almost like reading an array. The only difference beeing that the size and offset need to be three-dimensional. clEnqueueReadImage($queue, $memobj, $blocking, $offset, $size, $stride, $slice_pitch, $target, 0, null, null); The $stride defines how many bytes a row has. Normall...
To copy a texture to the device there are two steps necessary Allocate the memory on the device Copy the image to the device _mem = clCreateImage2D($context, $mem_flags, $image_format, $width, $height, $stride, $source, &err); The $mem_flags define how the memory is allocated. It can...
Writing an array consists of two steps: Allocating the memory Copying the data To allocate the memory, a simple call to _mem = clCreateBuffer($queue, $mem_flags, $size, $host_ptr, &err); is enough. If you decided to copy the host pointer via the mem_flags, you are done. Otherwise you ...
To properly work with the data each thread needs to know its position in the threadblock/global thread pool. This can be archieved with get_local_id($dim); get_global_id($dim); Those two functions return the position of the thread relative to the threadblock or all threads. get_working_dim(); ...
Each fundamental opencl type has a vector version. You can use the vector type by appending the number of desired components after the type. Supported number of components are 2,3,4,8 and 16. OpenCL 1.0 does not offer three components. You can initialize any vector using two ways: Provide a sing...

Page 1090 of 1143