porting (parts) of GSL

Hi there,

I started playing with CUDA some days ago. Now I want to move into more serious stuff. But therefor I need several functions not available within the SDK. The GSL (http://www.gnu.org/software/gsl/) is a collection of C-functions containing more than I need.

It would be great to have at least a subset of the functionality available on our device. I would start with the random number generators.

Some questions on how to procceed:
0) Does it make sense? Is work in that direction done already?

  1. Would one generate separate functions for the host and the device. Like hostFunc() and devFunc() or is there a more elegant way to do so? Well, the hostFunc() could just be left as func() in the GSL and a new function devFunc() could be generated.

  2. Anybody interested in joining into this effort. My time (as probably the time of many of you) is limited, a joined effort would increasee power. Going paralllel all way :)

  3. A scalable parallel random number generator can be found here http://sprng.cs.fsu.edu/. Maybe we should adopt that one instead of GSL?

Any comments welcome.


Footnote on random numbers:

  1. I know that generating random numbers with differnt seeds and merging the results is theroretically unsound but in my tests for seeds 1 to 100 and got decent results.

In the next SDK, there will be an example with an implementation of the Dynamic Creator Mersenne Twister (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/DC/dc.html).

We have also implemented a couple of random number generators from SPRNG (don’t know yet if/when they will appear in the SDK).

What exactly do you need from GSL?


Hi Massimiliano,

thanks for the fast reply. When will the next SDK be made available?

I have no dedicated needs for GSL at the moment other than the random numbers. The distributions would be nice in particular. but those could be extracted on the fly when needed. All the other stuff will be usefull at its time.

During the day I migrated a Mersenne Twister from C++ to device code. Works, but taking the first random number from every stream is not a very good idea. So I just isolated the “Parallel Multiplicative Lagged Fibonacci Generator” from sprng. I will make it to device code tomorrow and make it available on my homepage (unless there are license issues which I will also check tomorrow).

Do you have a list of your ongoing work? I guess a lot of people are doing work in parallel and this would be a waste of resources.

So long