当前位置: 首页 > news >正文

婚礼网站建设徐州铜山区建设局网站

婚礼网站建设,徐州铜山区建设局网站,哈尔滨做网站企业,电脑培训班有哪些科目pytorch的C extension写法 这部分主要介绍如何在pytorch中添加自定义的算子#xff0c;需要以下cuda基础。就总体的逻辑来说正向传播需要输入数据#xff0c;反向传播需要输入数据和上一层的梯度#xff0c;然后分别实现这两个kernel,将这两个kernerl绑定到pytorch即可。 a…pytorch的C extension写法 这部分主要介绍如何在pytorch中添加自定义的算子需要以下cuda基础。就总体的逻辑来说正向传播需要输入数据反向传播需要输入数据和上一层的梯度然后分别实现这两个kernel,将这两个kernerl绑定到pytorch即可。 add 但实际上来说这可能不是一个很好的教程因为加法中没有对输入的grad_out进行继续的操作(不用写cuda的操作)。所以实际上只需要正向传播的launch_add2函数。更重要的是作者大佬写了博客介绍。 // https://github.com/godweiyang/NN-CUDA-Example/blob/master/kernel/add2_kernel.cu__global__ void add2_kernel(float* c,const float* a,const float* b,int n) {for (int i blockIdx.x * blockDim.x threadIdx.x; \i n; i gridDim.x * blockDim.x) {c[i] a[i] b[i];} }void launch_add2(float* c,const float* a,const float* b,int n) {// 创建 [(n 1023) / 1024 1 1]的三维向量数据dim3 grid((n 1023) / 1024);//dim3 为CUDA中三维向量结构体// 创建 [1024 1 1]的三维向量数据dim3 block(1024);// 函数add2_kernel实现两个n维向量相加// 共有(n 1023) / 1024*1*1个block , 每个block有1024*1*1个线程add2_kernelgrid, block(c, a, b, n); }binary activation function 正向计算为 x 1 ? 1 : -1;// 也可以使用sign() 函数求符号函数实现这篇文章作者没有自己写正向传播的算子使用的是at::sign // https://github1s.com/jxgu1016/BinActivateFunc_PyTorch/blob/master/src/cuda/BinActivateFunc_cuda.cpp#L17-L22 at::Tensor BinActivateFunc_forward(at::Tensor input) {CHECK_INPUT(input);return at::sign(input); }这篇文章用的Setuptools将写好的算子和pytorch链接起来运行时需要安装一下JIT运行时编译也很香代码直接运行就是cmakelist.txt需要各种环境配置很麻烦。绑定部分见链接。以下是作者实现的反向传播的kernel: // https://github.com/jxgu1016/BinActivateFunc_PyTorch/blob/master/src/cuda/BinActivateFunc_cuda_kernel.cu #include ATen/ATen.h#include cuda.h #include cuda_runtime.h#include vector// CUDA: grid stride looping #define CUDA_KERNEL_LOOP(i, n) \for (int i blockIdx.x * blockDim.x threadIdx.x; i (n); i blockDim.x * gridDim.x)namespace { template typename scalar_t __global__ void BinActivateFunc_cuda_backward_kernel(const int nthreads,const scalar_t* __restrict__ input_data,scalar_t* __restrict__ gradInput_data) {CUDA_KERNEL_LOOP(n, nthreads) {if (*(input_data n) 1 || *(input_data n) -1) {*(gradInput_data n) 0;}} } } // namespaceint BinActivateFunc_cuda_backward(at::Tensor input,at::Tensor gradInput) {const int nthreads input.numel();const int CUDA_NUM_THREADS 1024;const int nblocks (nthreads CUDA_NUM_THREADS - 1) / CUDA_NUM_THREADS;AT_DISPATCH_FLOATING_TYPES(input.type(), BinActivateFunc_cuda_backward, ([] {BinActivateFunc_cuda_backward_kernelscalar_tnblocks, CUDA_NUM_THREADS(nthreads,input.datascalar_t(),gradInput.datascalar_t());}));return 1; }swish // https://github1s.com/thomasbrandon/swish-torch/blob/HEAD/csrc/swish_kernel.cu #include torch/types.h #include cuda_runtime.h #include CUDAApplyUtils.cuh// TORCH_CHECK replaces AT_CHECK in PyTorch 1,2, support 1.1 as well. #ifndef TORCH_CHECK #define TORCH_CHECK AT_CHECK #endif#ifndef __CUDACC_EXTENDED_LAMBDA__ #error please compile with --expt-extended-lambda #endifnamespace kernel { #include swish.husing at::cuda::CUDA_tensor_apply2; using at::cuda::CUDA_tensor_apply3; using at::cuda::TensorArgType;template typename scalar_t void swish_forward(torch::Tensor output,const torch::Tensor input ) {CUDA_tensor_apply2scalar_t,scalar_t(output, input,[] __host__ __device__ (scalar_t out, const scalar_t inp) {swish_fwd_func(out, inp);},TensorArgType::ReadWrite, TensorArgType::ReadOnly); }template typename scalar_t void swish_backward(torch::Tensor grad_inp,const torch::Tensor input,const torch::Tensor grad_out ) {CUDA_tensor_apply3scalar_t,scalar_t,scalar_t(grad_inp, input, grad_out,[] __host__ __device__ (scalar_t grad_inp, const scalar_t inp, const scalar_t grad_out) {swish_bwd_func(grad_inp, inp, grad_out);},TensorArgType::ReadWrite, TensorArgType::ReadOnly, TensorArgType::ReadOnly); }} // namespace kernelvoid swish_forward_cuda(torch::Tensor output, const torch::Tensor input ) {auto in_arg torch::TensorArg(input, input, 0),out_arg torch::TensorArg(output, output, 1);torch::checkAllDefined(swish_forward_cuda, {in_arg, out_arg});torch::checkAllSameGPU(swish_forward_cuda, {in_arg, out_arg});AT_DISPATCH_FLOATING_TYPES_AND_HALF(input.scalar_type(), swish_forward_cuda, [] {kernel::swish_forwardscalar_t(output, input);}); }void swish_backward_cuda(torch::Tensor grad_inp, const torch::Tensor input, const torch::Tensor grad_out ) {auto gi_arg torch::TensorArg(grad_inp, grad_inp, 0),in_arg torch::TensorArg(input, input, 1),go_arg torch::TensorArg(grad_out, grad_out, 2);torch::checkAllDefined(swish_backward_cuda, {gi_arg, in_arg, go_arg});torch::checkAllSameGPU(swish_backward_cuda, {gi_arg, in_arg, go_arg});AT_DISPATCH_FLOATING_TYPES_AND_HALF(grad_inp.scalar_type(), swish_backward_cuda, [] {kernel::swish_backwardscalar_t(grad_inp, input, grad_out);}); }cg ScatWave是使用CUDA散射的Torch实现,主要使用lua语言https://github.com/edouardoyallon/scatwave https://github.com/huangtinglin/PyTorch-extension-Convolution This is a tutorial to explore how to customize operations in PyTorch. https://pytorch.org/tutorials/advanced/cpp_extension.html 台湾博主 Pytorchcpp/cuda extension 教學 tutorial 1 - English CC - B站搬运地址 pytorch的C extension写法 https://github.com/salinaaaaaa/NVIDIA-GPU-Tensor-Core-Accelerator-PyTorch-OpenCV https://github.com/MariyaSha/Inference_withTorchTensorRT 项目介绍了简单的CUDA入门涉及到CUDA执行模型、线程层次、CUDA内存模型、核函数的编写方式以及PyTorch使用CUDA扩展的两种方式。通过该项目可以基本入门基于PyTorch的CUDA扩展的开发方式。 RWKV CUDA 实例手写 CUDA 算子让 Pytorch 提速 20 倍某特殊算子 https://zhuanlan.zhihu.com/p/476297195https://github.com/BlinkDL/RWKV-CUDAThe CUDA version of the RWKV language model 数据加速 用于在 Pytorch 中更快地固定 CPU - GPU 传输的库 环境 Docker images and github actions for building packages containing PyTorch C/CUDA extensions. 一个构建系统用于生成相对轻量级和便携式的 PyPI 轮子其中包含 PyTorch C/CUDA 扩展。使用Torch Extension Builder构建的轮子动态链接到用户PyTorch安装中包含的Torch和CUDA库。最终用户计算机上不需要安装 CUDA。 CG 又发现一个部署工具 研究人员很难将机器学习模型交付到生产环境。解决方案的一部分是Docker但要让它工作非常复杂Dockerfiles预/后处理Flask服务器CUDA版本。通常情况下研究人员必须与工程师坐下来部署该死的东西。安德烈亚斯和本创造了Cog。Andreas曾经在Spotify工作在那里他构建了使用Docker构建和部署ML模型的工具。Ben 曾在 Docker 工作在那里他创建了 Docker Compose。我们意识到除了Spotify之外其他公司也在使用Docker来构建和部署机器学习模型。Uber和其他公司也建立了类似的系统。因此我们正在制作一个开源版本以便其他人也可以这样做。如果您有兴趣使用它或想与我们合作请与我们联系。我们在 Discord 上或给我们发电子邮件 teamreplicate.com.
http://www.hkea.cn/news/14394686/

相关文章:

  • 中国最好的编程学校灰色词seo排名
  • php做网站用html做吗百科创建
  • 网站建设的风格室内设计师一个月多少钱
  • 网站前瞻性 新流量机会内容建设分析wordpress伪静态规则iis
  • 最新的网站开发框架火车头wordpress4.9
  • 微信公众号个人可以做网站么郑州城建
  • 阿里巴巴网站建设销售云南seo
  • 域名查询网站入口学做网站论坛课程
  • linux tomcat 网站目录做暧免费观看网站
  • 沈阳网站备案查询seo自学教程推荐
  • 专注于网站营销服务虚拟产品货源渠道
  • 网站建设服务费要不要折旧呢深圳网站建设小程序
  • 关于 门户网站 建设 请示门户网站 流量
  • 高新区免费网站建设江苏省建设工程质量监督站网站
  • 做软装找产品上哪个网站群辉 wordpress 外网
  • 设计网站页面好处邵阳汽车网站建设
  • 企业展示网站建设潍坊建站公司
  • 做服装设计看哪些网站一个人可以做几个网站
  • 烟台网站推广泰国服务器租用
  • 高端网站建设 房产网站内页是什么意思
  • 常平网站wordpress the terms
  • 商城维护工作内容网站建设自己做网站网站资源哪里来
  • 焊枪公司网站怎么做wordpress tag 插件
  • 公司网站用哪个软件做做网站 科目
  • 海口网站建设推广网站建设需解决问题
  • 杭州建设主管部门的网站沈阳seo合作
  • 浦项建设(中国)有限公司网站小红书app下载安装
  • 辛集建设局官方网站论文发表最正规网站
  • 集团网站建设工作方案顺的网站建设精英
  • 广东上海专业网站建设公司哪家好网站建设和网站搭建哪个好