public static Tensor Invoke(CudaCode kernels, string funcName, Tensor result, Tensor src) { try { TSCudaContext context = CudaHelpers.TSContextForTensor(src); CudaContext cudaContext = context.CudaContextForTensor(src); cudaContext.SetCurrent(); Tensor writeTarget = TensorResultBuilder.GetWriteTarget(result, src, false, src.Sizes); long elementCount = writeTarget.ElementCount(); byte[] ptx = kernels.GetPtx(context.Compiler); if (result == src) { ApplyOpInvoke.Invoke(context, cudaContext, ptx, "t1_" + funcName, writeTarget, elementCount); } else { ApplyOpInvoke.Invoke(context, cudaContext, ptx, "t2_" + funcName, writeTarget, src, elementCount); } return(writeTarget); } catch (Exception e) { Logger.WriteLine($"Error = '{e.Message}', Call stack = '{e.StackTrace}'"); throw; } }
public static Tensor Invoke(CudaCode kernels, Tensor result, Tensor srcY, Tensor srcX) { TSCudaContext context = CudaHelpers.TSContextForTensor(srcY); CudaContext cudaContext = context.CudaContextForTensor(srcY); cudaContext.SetCurrent(); Tensor writeTarget = TensorResultBuilder.GetWriteTarget(result, srcY, false, srcY.Sizes); long elementCount = writeTarget.ElementCount(); byte[] ptx = kernels.GetPtx(context.Compiler); ApplyOpInvoke.Invoke(context, cudaContext, ptx, "atan2", writeTarget, srcY, srcX, elementCount); return(writeTarget); }
public static Tensor Invoke(CudaCode kernels, string funcName, Tensor result, Tensor src, float value) { TSCudaContext context = CudaHelpers.TSContextForTensor(src); CudaContext cudaContext = context.CudaContextForTensor(src); cudaContext.SetCurrent(); Tensor writeTarget = TensorResultBuilder.GetWriteTarget(result, src, false, src.Sizes); long elementCount = writeTarget.ElementCount(); byte[] ptx = kernels.GetPtx(context.Compiler); if (result == src) { ApplyOpInvoke.Invoke(context, cudaContext, ptx, "t1_" + funcName, writeTarget, value, elementCount); } else { ApplyOpInvoke.Invoke(context, cudaContext, ptx, "t2_" + funcName, writeTarget, src, value, elementCount); } return(writeTarget); }
public static Tensor Invoke(CudaCode kernels, string funcName, Tensor result, Tensor lhs, Tensor rhs, Tensor rhs2) { var context = CudaHelpers.TSContextForTensor(lhs); var cudaContext = context.CudaContextForTensor(lhs); cudaContext.SetCurrent(); var writeTarget = TensorResultBuilder.GetWriteTarget(result, lhs, false, lhs.Sizes); var elementCount = writeTarget.ElementCount(); var ptx = kernels.GetPtx(context.Compiler); if (result == lhs) { ApplyOpInvoke.Invoke(context, cudaContext, ptx, "t1_" + funcName, writeTarget, rhs, rhs2, elementCount); } else { ApplyOpInvoke.Invoke(context, cudaContext, ptx, "t2_" + funcName, writeTarget, lhs, rhs, rhs2, elementCount); } return(writeTarget); }
public static Tensor Invoke(CudaCode kernels, Tensor result, Tensor rhs) { try { TSCudaContext context = CudaHelpers.TSContextForTensor(rhs); CudaContext cudaContext = context.CudaContextForTensor(rhs); cudaContext.SetCurrent(); long elementCount = result.ElementCount(); byte[] ptx = kernels.GetPtx(context.Compiler); ApplyOpInvoke.Invoke(context, cudaContext, ptx, "t1_atomicAdd", result, rhs, elementCount); return(result); } catch (Exception e) { Logger.WriteLine($"Exception message = '{e.Message}', Call stack = '{e.StackTrace}'"); throw; } }