コード例 #1
0
        /// <summary>
        /// Get an array of direction vectors that can be used for quasirandom number generation.
        /// <para/>
        /// The array contains vectors for many dimensions. Each dimension
        /// has 32 vectors. Each individual vector is an unsigned int.
        /// <para/>
        /// Legal values for set are:
        /// - <see cref="DirectionVectorSet.JoeKuo6_32"/> (20,000 dimensions)
        /// - <see cref="DirectionVectorSet.ScrambledJoeKuo6_32"/> (20,000 dimensions)
        /// </summary>
        /// <param name="set"></param>
        /// <returns></returns>
        public static DirectionVectors32[] GetDirectionVectors32(DirectionVectorSet set)
        {
            IntPtr       ptr;
            CurandStatus status = CudaRandNativeMethods.curandGetDirectionVectors32(out ptr, set);

            Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "curandGetDirectionVectors32", status));
            if (status != CurandStatus.Success)
            {
                throw new CudaRandException(status);
            }

            DirectionVectors32[] vec = new DirectionVectors32[MaxDimensions];

            for (int i = 0; i < MaxDimensions; i++)
            {
                vec[i] = (DirectionVectors32)Marshal.PtrToStructure(new IntPtr(ptr.ToInt64() + i * 32 * Marshal.SizeOf(typeof(uint))), typeof(DirectionVectors32));
            }

            return(vec);
        }
コード例 #2
0
		/// <summary>
		/// Get an array of direction vectors that can be used for quasirandom number generation.
		/// <para/>
		/// The array contains vectors for many dimensions. Each dimension
		/// has 32 vectors. Each individual vector is an unsigned int.
		/// <para/>
		/// Legal values for set are:
		/// - <see cref="DirectionVectorSet.JoeKuo6_32"/> (20,000 dimensions)
		/// - <see cref="DirectionVectorSet.ScrambledJoeKuo6_32"/> (20,000 dimensions)
		/// </summary>
		/// <param name="set"></param>
		/// <returns></returns>
		public static DirectionVectors32[] GetDirectionVectors32(DirectionVectorSet set)
		{
			IntPtr ptr;
			CurandStatus status = CudaRandNativeMethods.curandGetDirectionVectors32(out ptr, set);
			Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "curandGetDirectionVectors32", status));
			if (status != CurandStatus.Success) throw new CudaRandException(status);

			DirectionVectors32[] vec = new DirectionVectors32[MaxDimensions];

			for (int i = 0; i < MaxDimensions; i++)
			{
				vec[i] = (DirectionVectors32)Marshal.PtrToStructure(new IntPtr(ptr.ToInt64() + i * 32 * Marshal.SizeOf(typeof(uint))), typeof(DirectionVectors32));
			}

			return vec;
		}