openCL on consoles for General purpose GPU? - opencl

Can we use openCL on consoles like Xbox One and PS4 for General purpose GPU? If yes, can we use openCL framework like ArrayFire - http://arrayfire.com/ ?

No.
While the AMD GPU hardware on the most recent version of each console is similar enough to desktop hardware that has OpenCL support, the console vendors do not offer OpenCL as a programming API (unless it's not public information and only available under NDA). If enough game devs asked for it perhaps it would happen.

I was also looking for it too! And I've found this discution: here
Apparently, up to now, the only way out is to use HLSL for Xbox, and PSSL on Playstation. According to a guy on the topic above. They (the APIs) are different, but very similar in such a way that shall be possible to write a code that compiles under both platform using some preprocessors.
PS.: I'm also looking for a good answer for that question. So, if you've found anything around, please post here, I'd love to know ^^

Related

Differences between clBLAS and ViennaCL?

Looking at the OpenCL libraries out there I am trying to get a complete grasp of each one. One library in particular is clBLAS. Their website states that it implements BLAS level 1,2, & 3 methods. That is great but ViennaCL also has BLAS routines, linear algebra solvers, supports OpenCL and CUDA backends, and is header only. It seems to me, at the moment, that there doesn't appear to be a reason to use clBLAS over ViennaCL but I was wondering if anyone had any reasons why one would use clBLAS over ViennaCL?
Although similar, this is meant to be an extension of this previous question comparing VexCL, Thrust, and Boost.Compute.
clBlas is implemented by AMD, so one can hope that it would be faster on AMD hardware. That is usually the sole advantage of vendor BLAS implementations. Unfortunately, this seems to not be the case here.
In this talk ViennaCL authors report that due to their autotuning framework they are able to either outperform clBLAS, or show similar performance.

Is it possible to use OpenCL for PowerVR SGX530 GPU device?

Is it possible to use OpenCL for PowerVR SGX530 GPU device? I have to write image recognition software that can run on Droid X smartphone. I would greatly appreciate it if someone could provide links, references, citations, sample code.
It seems it is, but it depends on the SOC vendor, have a look at this:
http://www.imgtec.com/forum/forum_posts.asp?TID=194
Imagination Technologies say that the gpu has OpenCL 1.0 embedded capabilities, but it depends on the SOC vendor whether a driver is available or not
I found that it is not possible to use OpenCL. I'd have to rewrite my algorithm to OpenGL and use shaders and vertexes - then I can gain "General Purpose" programming (welcome back to past, about 4-5 years back to be more exact).
Take a look at the following thread elaborates on what is possible and not possible to do up to date (14th of Nov,2010):
link text
I've seen this example from the folks from Nokia:
http://www.hotchips.org/archives/hc21/1_sun/HC21.23.2.OpenCLTutorial-Epub/HC21.23.270.Pulli-OpenCL-in-Handheld-Devices.pdf
So I ask myself, is there any SDK from any mobile platform/os out there that I could use to test some of my desktop apps to an embedded app? I'd really, really appreciate to be able to program opencl on mobile/tablets systems. Vertex/fragment shader are not much of help because their specs for embedded systems do not include all the extensions we would need to rewrite our opencl code to shader.

OpenCL vs. DirectCompute?

I'm looking for comparisons between OpenCL and DirectCompute, but I haven't found anything. OpenCL's advantages of being cross-platform and having a wider range of supported GPUs don't matter to me. I'm fine with coding on Windows against DX11 GPUs only. Assuming that, what are the pros and cons of each API?
I know this question was raised before, but I'm looking for more details.
I'm not interested in CUDA, since I don't want to restrict myself to only Nvidia hardware.
Probably the biggest difference for a coder is that DirectCompute is programmed by a language which is similar to HLSL, and OpenCL is programmed via a C-like language.
Another difference to consider is that, generally, for commodity level GPUs, the DirectX support is better (faster and less buggy) than OpenGL support on Windows. This may translate to more stable support for DirectCompute, but really, this is just speculation.
Well the major advantage of OpenCL is that it is not just limited to graphics cards. You can make use of your multicore CPU, Graphics Card and potentially any number of other hardware acceleration devices (DSPs etc) all from the same program.
I'm not sure if DirectCompute allows that freedom.
The OpenCL cross-platform-ness is not just a detail, as the host code (the one calling the OpenCL API and submitting kernels) can itself be cross-platform (see link text, link text...).
Write once, run on any GPGPU, anywhere.
Otherwise the OpenCL tooling is really getting better, with an ATI Stream plugin for Visual Studio, the NVidia & ATI SDKs that contains tons of samples, etc...
Another option now is C++ AMP which gives you modern C++ syntax without a need for a seperate compiler while still preserving hardware portability. Please follow links from here for more info and feel free to post questions as you have them: http://blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp-in-a-nutshell.aspx
I use OpenCL because i can easily port my App to Linux but with DirectCompute this is not possible.
I think also that the performance of the OpenCL implementation will increase with time (that it comes at the same Level like CUDA for NVidia Cards) and also that the (driver)bugs will (hopefully ;) ) be eliminated with time.

A terse introduction to Qt?

Is there a terse introduction to GUI programming with Qt, meant for programmers with a decade's worth of experience (but who don't have any exposure to Qt). I am looking for something that gets one started quickly, and covers all the advanced stuff (including best-practices and patterns). Was looking for something like this book - Advanced Qt Programming - which alas, isn't out yet.
I would start with Qt Architecture, Graphics if you need it, IO and Networking, Model/View (learn and love it), Various other APIs, and finally How To's and Best Practices. The Qt Documentation is one of the major strengths of the toolkit. In many cases you won't need other resources. They even give a quick overview of tips for learning here.
Note: I'm linking you to the next release documentation since I think it looks better, the current release is here. When reading things over, just look for the comment on when the feature was introduced to make sure it will be available for the release you are using.
Programming with Qt, Second Edition

mpi under the hood

I need to deliver a presentation on programming in MPI. I need to add a segment on how MPI works under the hood. For Example What happens when I call MPI_Init?
Do you know of any good source from where I can learn these details?
The MPI Spec contains the description of the knobs, sliders, and displays that are on the outside of the "black box" of each API.
The interior details of the black boxes will be implementation dependent...and will also depend on the interconnect (e.g. TCP, IBV, DAPL, etc), the OS (e.g. is the implementation using LSB, or native libraries, etc), and on many other factors to a lesser degree (e.g. message size thresholds will trigger different code paths, and so on). Using "strace" and "ltrace" on the a.out may provide some insight into the actual goings on inside the blackbox.
The best recommendation is to pick an open source implementation and examine the code to determine the internal details.
MPI is a specification, not a particular implementation. The observable behavior is given in the MPI spec. How it works under the hood depends on the particular implementation. If you'd like to take a look at an example implementation, you might be interested in looking at MPICH2 and browsing their source code.
Complement your study of the source code of an implementation of MPI with consideration of how you would implement MPI_Init on your platform of choice. MPI sits on top of already available O/S functionality. I don't mean to suggest that you can figure out how a particular version of MPI is implemented by this approach, but to suggest that you can learn better what is going on under the hood by tackling the problem from another angle.
MPI is only a spec. MPI spec is implemented by various groups and organizations. You will want to pick one implementation, say, MPICH, and you can find their design documentation. That will tell you how the MPI spec is implemented by that group.
If you just want to describe what happens when an application written in MPI is started, you can read about MPI and MPI programming. I highly recommend http://www.citutor.org

Resources