Basically, I am wondering what sort of speed I will get by parallelizing a algorithm to work with GPUs. I am wondering if someone has implemented queueing theory/Amdahl's law with a UI or if everyone implements their own solution?

PS: Yes I am aware that it all depends on the nature of the algorithm (Why do you think I refer to Amdahl's law). I am also aware that many manufacturers present things in terms of FLOPs and that this is not necessarily the best metric to use.

There also tends to be just one pipe going in and out, so there is probably a fair amount of data to be transferred on to the card and off of the card.

Since no one has commented on a general tool that could help someone develop algorithms/code for GPUs, are there any rules of thumb to help them tailor their code to run on a specific GPU?

  • It will depend entirely on the nature of the algorithm, how much the algorithm could potentially benefit from parallelization, and how well the algorithm maps onto the GPU's computational paradigm. Apr 30 '18 at 16:40
  • 1
    As for tools, your best tool is a profiler. Apr 30 '18 at 17:04
  • Marketers use FLOPS as a "theoretical limit to possible speed-up", but most algorithms are inherently impossible to achieve the theoretical maximum FLOPS on a CPU/GPU, because algorithms are not purely about FLOPS.
    – rwong
    Apr 30 '18 at 17:18
  • 1
    There is one excellent tool called a stop watch.
    – gnasher729
    Apr 30 '18 at 19:56

There are some approaches supporting you for performance prediction. However, to be honest, most of them (if not all) have a slight speculative character, so prediction is not always meeting the reality.

You may start investigations using PEPS (see i.e. https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjt2run1OTaAhUDaFAKHWVgCyQQFggqMAA&url=https%3A%2F%2Flink.springer.com%2Fchapter%2F10.1007%2F978-3-540-27866-5_27&usg=AOvVaw0HEZSu-L0Lo9h-6Wx631q6),

or this one: https://rd.springer.com/chapter/10.1007/11549468_24

or PACE et al: https://warwick.ac.uk/fac/sci/dcs/research/pcav/publications/pubs/pace_-_a_toolset_to_investigate_and_predict_performance_in_parallel_systems.pdf

or my own research http://www.shaker.de/de/content/catalogue/index.asp?lang=de&ID=8&ISBN=978-3-8265-4625-9&search=yes

Concerning the usage of a GPU, consider the aspect on how to hide processing on one side (which means you do soemthing in parallel with a cpu and a gpu, as well as pipeline aspects for the GPU).

Still the best: measure the effects!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.