예제 #1
0
파일: GPGPUR.cs 프로젝트: rblenis/cudafy
 private void HandleError(cudaError error)
 {
     if (error != cudaError.cudaSuccess)
     {
         throw new CudafyHostException(error.ToString());
     }
 }
예제 #2
0
        public void nppsSet_32s_test()
        {
            int    length = 1024;
            int    value  = 75;
            IntPtr ptr    = Npps.nppsMalloc_32s(length);

            int[] result = new int[length];

            GCHandle gcHandle = GCHandle.Alloc(result, GCHandleType.Pinned);
            IntPtr   h_result = Marshal.UnsafeAddrOfPinnedArrayElement(result, 0);
            UInt64   size     = Convert.ToUInt64(sizeof(int) * result.Length);

            NppStatus status = Npps.nppsSet_32s(value, ptr, length);

            if (status != NppStatus.NPP_SUCCESS)
            {
                Assert.Fail(String.Format("Fail {0}", status.ToString()));
            }

            cudaError cudaStatus = CudaRuntimeApi.cudaMemcpy(h_result, ptr, size, cudaMemcpyKind.DeviceToHost);

            if (cudaStatus != cudaError.cudaSuccess)
            {
                Assert.Fail(String.Format("Fail {0}", cudaStatus.ToString()));
            }

            for (int i = 0; i < result.Length; i++)
            {
                Assert.AreEqual(value, result[i]);
            }

            gcHandle.Free();
            Npps.nppsFree(ptr);
        }
예제 #3
0
 public static void Check(cudaError error, string message)
 {
     if (error != cudaError.cudaSuccess)
     {
         message = string.Format("{0}: {1}", error.ToString(), message);
         Exception exception = new CudaException(message);
         exception.Data.Add("cudaError", error);
         throw exception;
     }
 }