/// <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 64 vectors. Each individual vector is an unsigned long long. /// <para/> /// Legal values for set are: /// - <see cref="DirectionVectorSet.JoeKuo6_64"/> (20,000 dimensions) /// - <see cref="DirectionVectorSet.ScrambledJoeKuo6_64"/> (20,000 dimensions) /// </summary> /// <param name="set"></param> /// <returns></returns> public static DirectionVectors64[] GetDirectionVectors64(DirectionVectorSet set) { IntPtr ptr; CurandStatus status = CudaRandNativeMethods.curandGetDirectionVectors64(out ptr, set); Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "curandGetDirectionVectors64", status)); if (status != CurandStatus.Success) { throw new CudaRandException(status); } DirectionVectors64[] vec = new DirectionVectors64[MaxDimensions]; for (int i = 0; i < MaxDimensions; i++) { vec[i] = (DirectionVectors64)Marshal.PtrToStructure(new IntPtr(ptr.ToInt64() + i * 64 * Marshal.SizeOf(typeof(ulong))), typeof(DirectionVectors64)); } return(vec); }
public static extern CurandStatus curandGetDirectionVectors64(out IntPtr vectors, DirectionVectorSet set);
/// <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 64 vectors. Each individual vector is an unsigned long long. /// <para/> /// Legal values for set are: /// - <see cref="DirectionVectorSet.JoeKuo6_64"/> (20,000 dimensions) /// - <see cref="DirectionVectorSet.ScrambledJoeKuo6_64"/> (20,000 dimensions) /// </summary> /// <param name="set"></param> /// <returns></returns> public static DirectionVectors64[] GetDirectionVectors64(DirectionVectorSet set) { return CudaRandDevice.GetDirectionVectors64(set); }
/// <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 64 vectors. Each individual vector is an unsigned long long. /// <para/> /// Legal values for set are: /// - <see cref="DirectionVectorSet.JoeKuo6_64"/> (20,000 dimensions) /// - <see cref="DirectionVectorSet.ScrambledJoeKuo6_64"/> (20,000 dimensions) /// </summary> /// <param name="set"></param> /// <returns></returns> public static DirectionVectors64[] GetDirectionVectors64(DirectionVectorSet set) { IntPtr ptr; CurandStatus status = CudaRandNativeMethods.curandGetDirectionVectors64(out ptr, set); Debug.WriteLine(String.Format("{0:G}, {1}: {2}", DateTime.Now, "curandGetDirectionVectors64", status)); if (status != CurandStatus.Success) throw new CudaRandException(status); DirectionVectors64[] vec = new DirectionVectors64[MaxDimensions]; for (int i = 0; i < MaxDimensions; i++) { vec[i] = (DirectionVectors64)Marshal.PtrToStructure(new IntPtr(ptr.ToInt64() + i * 64 * Marshal.SizeOf(typeof(ulong))), typeof(DirectionVectors64)); } return vec; }
/// <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 64 vectors. Each individual vector is an unsigned long long. /// <para/> /// Legal values for set are: /// - <see cref="DirectionVectorSet.JoeKuo6_64"/> (20,000 dimensions) /// - <see cref="DirectionVectorSet.ScrambledJoeKuo6_64"/> (20,000 dimensions) /// </summary> /// <param name="set"></param> /// <returns></returns> public static DirectionVectors64[] GetDirectionVectors64(DirectionVectorSet set) { return(CudaRandDevice.GetDirectionVectors64(set)); }