none
dealing with disparate hardware RRS feed

  • Question

  • At present my Fibonacci program focuses on the CPU. Recently upon achieving a functional vector template I have added double() to the benchmark. I will add matrix soon after I finish some operator overloads that are festering to be done.

    So now the problem is what to do with the float() and double() issue. I can ignore it and use the CPU fine. NVIDIA and ATI both have proprietary solutions to leverage their hardware.

    So I found OpenMP and found that to be helpful as its included with VS 2010. It is also used with gcc so this means learning how to leverage it is practical for a shop that speaks mainframes as well as Windows.

    So I am aware of OpenCL and there is a DLL in the Windows directory. So is there a header with VS 2010?

     


    Vote if answered or helpful, I am running for Office (joke)! IT/Developer, Windows/Linux/Mainframe Need a some parts finish the new server, see the site for remaining items needed
    • Moved by Yi Feng Li Monday, June 14, 2010 8:53 AM OpenMP Issue (From:Visual C++ General)
    Thursday, June 10, 2010 11:05 PM

Answers

  • I agree that GPGPU is still relatively early in the development. NVIDIA and ATI have both agreed to OpenCL which is helpful in the HPC business which I specialize.

    At present my linear algebra is now using OpenMP as all computers have a CPU. Still the performance demands of solutions like the one I mentioned above with 3 stores is a relatively easy one to solve.

    Working with a larger product mix makes things a lot worse. Some algorithms are O(n^3) which means a steep workload. Some of the work I have done gets past the end of the advanced text book. I do not have a text book that actually shows Gauss-Siedel and any theory around it.

    To validate my code I had to resort to some advanced analytic techniques. And there is demand for my code to be open source. I am now working at a very advanced level.

    So getting back to the problem of disparate resources. The GPU is interesting if it can be leveraged for problems outside the narrow confines of games.

    Even the CPU has added some features to increase performance, the SSE, SSE2 etc are such initiatives. I believe those enhancements are enabled by default with VC 2010 x64 projects.

    One suggestion I would make, use a namespace for the GPU templates. This way it can will not clash with existing code, like the std namepace that was introduced with ISO/IEC C++ 2003 to assist with large scale projects.

     


    Vote if answered or helpful, I am running for Office (joke)! IT/Developer, Windows/Linux/Mainframe Need a some parts finish the new server, see the site for remaining items needed, lots of useful goodies on the web site, see resources for the list
    Friday, July 2, 2010 1:26 AM

All replies

  • I do not believe that OpenCL ships with VS2010.  Why do you think that DLL was installed as part of Visual Studio?

     

    -Dana

    • Proposed as answer by rickmolloy Wednesday, June 16, 2010 2:28 PM
    Tuesday, June 15, 2010 5:47 PM
  • I am not sure where that DLL surfaced from. I have dug deeper into OpenCL and I see that the implementation simply replaces the compiler. OpenMP on the other hand is an easy to use #include and #pragma which is much easier to implement.

    OpenMP seems to be widely available so its attractive to me.

    So I now see I am dependent on a vendor supplied compiler. This is not suitable as it is vendor locked.

    Upon further review, I see vendor supplied code for this and that. The problem is that its tightly bound to that vendor. So OpenMP is my tool until I see a better solution.

    Maybe a class library is a better way to exploit the GPU. Anyone care for some ASM coding?

     


    Vote if answered or helpful, I am running for Office (joke)! IT/Developer, Windows/Linux/Mainframe Need a some parts finish the new server, see the site for remaining items needed
    Saturday, June 19, 2010 10:01 PM
  • It sounds like you want to look at HLSL (High level Shading Language) available in DirectX.  (See: http://msdn.microsoft.com/en-us/library/bb509635(v=VS.85).aspx)

    Please mark this as answered if that meets your requirements.

    -Dana

    Sunday, June 27, 2010 5:19 PM
  • I have been looking at OpenCL which simply replaces the compiler, OpenMP which leverages the CPU better.

    I have looked at the manual for the Feb release of DirectX and there is some material there to help with Direct-compute but none of the 2 video cards I have support that.

    So I have looked at vendor SDK offerings and considered a few classes as a wrapper around them so that I am not tightly locked to a vendor.

    So far OpenMP has solved some performance issues. I have been griping over the incompleteness of VS 2010 where I have attempted to use this or that and became frustrated.

     


    Vote if answered or helpful, I am running for Office (joke)! IT/Developer, Windows/Linux/Mainframe Need a some parts finish the new server, see the site for remaining items needed, lots of useful goodies on the web site, see resources for the list
    Sunday, June 27, 2010 5:47 PM
  • One of the projects I am working on involves business decisions.

    Given store A with 9000 products, Store B with 8800 products, and Store C with 9100 products.

    Can a new mix of products be found that can increase sales?

    I am using my tensor library to solve such problems in C++

    The algorithms are brutal and this is what is motivating the demand for performance.

     


    Vote if answered or helpful, I am running for Office (joke)! IT/Developer, Windows/Linux/Mainframe Need a some parts finish the new server, see the site for remaining items needed, lots of useful goodies on the web site, see resources for the list
    Sunday, June 27, 2010 5:51 PM
  • Vegan,

    I am sorry that you find VS2010 incomplete.  I agree that we do not have a great in-box solution for GPGPU programming today.  Our focus for VS2010 was to deliver a great framework and tool set for parallel programming on one or many CPUs -- and we delivered the Concurrency Runtime, PPL and the Agents library; tools such as the concurrency visualizer for performance tuning and the parallel stacks and tasks window in the debugger.  As you might expect, we are now working on designs and plans for V.next (Dev11 is how refer to it). 

    I have pointed out this thread to those working on GPGPU incubations.  If you want to send me more direct requirements, feel free to email me at Dana dot Groff at Microsoft dot Com.

    I am sorry, but I don't think we have an answer beyond what I have suggested (Compute Shader).

    Dana Groff

     

    • Proposed as answer by Dana Groff Friday, July 2, 2010 12:58 AM
    Friday, July 2, 2010 12:58 AM
  • I agree that GPGPU is still relatively early in the development. NVIDIA and ATI have both agreed to OpenCL which is helpful in the HPC business which I specialize.

    At present my linear algebra is now using OpenMP as all computers have a CPU. Still the performance demands of solutions like the one I mentioned above with 3 stores is a relatively easy one to solve.

    Working with a larger product mix makes things a lot worse. Some algorithms are O(n^3) which means a steep workload. Some of the work I have done gets past the end of the advanced text book. I do not have a text book that actually shows Gauss-Siedel and any theory around it.

    To validate my code I had to resort to some advanced analytic techniques. And there is demand for my code to be open source. I am now working at a very advanced level.

    So getting back to the problem of disparate resources. The GPU is interesting if it can be leveraged for problems outside the narrow confines of games.

    Even the CPU has added some features to increase performance, the SSE, SSE2 etc are such initiatives. I believe those enhancements are enabled by default with VC 2010 x64 projects.

    One suggestion I would make, use a namespace for the GPU templates. This way it can will not clash with existing code, like the std namepace that was introduced with ISO/IEC C++ 2003 to assist with large scale projects.

     


    Vote if answered or helpful, I am running for Office (joke)! IT/Developer, Windows/Linux/Mainframe Need a some parts finish the new server, see the site for remaining items needed, lots of useful goodies on the web site, see resources for the list
    Friday, July 2, 2010 1:26 AM