2010-02-04 4 views
1

무거운 짐을주기 위해 CUDA를 활용하는 파티클 시스템을 구축하려고합니다. 속도와 수명과 같은 입자의 초기 값 중 일부를 무작위로 지정하고 싶습니다. 무작위 수는 시각적 인 효과가 있기 때문에 슈퍼 임의이어서는 안됩니다.cuda에서 의사 랜덤을 생성하는 방법

선형 합동을 제안

Random Number Generation in CUDA

갈 방법입니다 : 나는 동일한 주제를 해결이 게시물을 발견했다. 그것은 구현하는 것이 간단해야하지만, 나는 내 구현에 유용한 것을 얻는데 어려움을 겪고있다. 누구든지 장치에서 실행할 코드를 제공 할 수 있습니까?

Windows 7 64 비트에서 VC++와 함께 CUDA를 사용하고 있습니다.

+0

그리고 정확히 무엇이 문제입니까? 선형 합동 생성자 코드는 Q = (Q * a) + b이고, Q는 문제의 난수입니다. 상수 a와 b는 구현에 따라 다릅니다. http://en.wikipedia.org/wiki/Linear_congruential_generator – mingos

+0

에서 인기있는 조합을 찾을 수 있습니다. 근원지를 묻는 노골적인 공세로 간주됩니다. 더 좋은 트릭은 사람들이 관심을 갖기 위해 무언가를 게시하는 것입니다 (심지어 초보적인 경우라도). 그리고 항상, 설명하고, 왜, 어디서, 그리고 어떤 부분을 구현하는 데 문제가 있습니다. – dirkgently

+0

Dirkgently : 코드를 묻는 이유는 무엇입니까 (특히 12 라인에 해당하는 코드가 덜 낫습니다) 노골적으로 불쾌합니까? –

답변

3

요구 사항에 따라 다양한 오픈 소스 옵션이 있습니다. l' Ecuyer의 MRG32k3a를 구현 한 NAG과 같은 상업적 옵션도 있습니다. 스트림이 상호 연관되지 않도록해야하는 경우에는 LCG 사용에주의하십시오 - 도약/분할을 사용할 수 있지만 매우 오랜 기간이 필요합니다!

오픈 소스로 가고 싶다면 thrust을 (를) 사용하면 간단하다고 볼 수 있습니다. 또한 Mersenne Twister PRNG 샘플 (MT607, MT19937은 포럼에 있음) 및 Sobol 및 Niederreiter QRNGs를 포함하여 NVIDIA SDK에 일부 RNG가 있습니다.

마지막으로 CUDPP에는 난수 생성기도 있습니다.

관련 문제