سؤال

أحاول بناء نظام الجسيمات باستخدام CUDA للقيام بالرفع الثقيل. أريد أن أشعل عشوائيا بعض القيم الأولية للجزيئات مثل السرعة والحياة. لا يجب أن تكون الأرقام العشوائية عشوائيا بشكل رائع لأنها مجرد تأثير مرئي. لقد وجدت هذا المنشور الذي يعالج نفس الموضوع:

جيل رقم عشوائي في كودا

التي تشير إلى التناظر الخطي هي الطريقة التي يجب أن تذهب. يبدو أنه ينبغي أن يكون بسيطا في التنفيذ، ولكن أواجه مشكلة في الحصول على أي شيء مفيد لتنفيذه. هل يمكن لأي شخص تقديم بعض الرمز الذي سيتم تشغيله في الجهاز؟

أنا أستخدم CUDA مع VC ++ على نظام التشغيل Windows 7 64bit.

هل كانت مفيدة؟

المحلول

مولدات عدد عشوائي CUDA PSEDO

  1. المدرجة في NVIDIA SDK على سبيل المثال C/src/MersenneTwister/ و C/src/quasirandomGenerator

  2. متاح كآلات منفصلة ومصدر:

    2. ورقة لانجدون و شفرة المصدر لانغدون

    2.B. Mersenne الإعصار على GPU

نصائح أخرى

اعتمادا على متطلباتك هناك عدد من خيارات مفتوحة المصدر. هناك أيضا العديد من الخيارات التجارية مثل تذمر الذين نفذوا l'ecuyer's mrg32k3a. كن حذرا من استخدام LCG إذا كنت بحاجة إلى التأكد من عدم ترتيب تدفقاتك - يمكنك استخدام LeapFrog / تقسيم ولكن ستحتاج إلى فترة طويلة جدا!

إذا كنت ترغب في الانتقال إلى المصدر المفتوح، فعليك بالتأكيد النظر في استخدام دفع لأنه بساطة. هناك أيضا بعض RNGS في NVIDIA SDK، بما في ذلك عينة Mersenne Twister PRNG (MT607، MT19937 على المنتديات) و Sobol و NiederReiter Qrngs.

أخيرا، كودب يحتوي أيضا على مولد رقم عشوائي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top