- 博客(144)
- 资源 (1)
- 收藏
- 关注
原创 capter8:共享内存的合理使用
只要同一个线程束内的多个线程不同时访问同一个 bank 中不同层的数据,该线程束对共享内存的访问就只需要。利用共享内存进行线程块之间的合作(通信)之前,都要进行同步,以确保共享内存变量中数据对于所有线程块内的。核函数中循环的每一轮都会被拆解、分配到线程块内的所有线程上执行,而不是一个线程连续执行一次完整循环。由于共享内存访问速度快于全局内存,所以可以通过线程块内的共享内存将全局内存的非合并访问转为合并访问。实现一个线程块中所有线程按照代码出现的顺序执行指令,但是不同线程块之间依然是独立、异步的。
2025-01-24 14:17:01
72
原创 capter7:全局内存的合理使用
如果线程束请求的全局内存地址刚好为 0-127 字节或 128-255 字节,就能与 4 次数据传输所处理的数据完全吻合,这种情况下就是合并访问。以仅使用 L2 缓存的情况为例,一次数据传输指的就是将 32 字节数据从全局内存(DRAM) 通过 32 字节的 L2 缓存片段(cache sector)传输到 SM。考虑一个线程束访问单精度浮点数类型的全局内存变量的场景,一个单精度浮点数占有 4 个字节,故一次访问需要 32*4 个字节的数据。读取全局内存,从而对数据的读取进行缓存、缓解非合并访问的影响。
2025-01-24 14:10:16
33
原创 capter6:CUDA 的内存组织
< CPU >// ----------------------------------------------------------------------------------// 内存// ----------------------------------------------------------------------------------||||< GPU > ||// --------------------------------------------------
2025-01-23 14:34:23
19
原创 capter5:获得 GPU 加速的关键
由于 cuda 程序需要在主机和设备间传递数据,所以当计算强度较小时数据传输的性能对程序总耗时影响更大。同时,可以指定其他编译选项,如 -DUSE_DP 启用双精度版本。因此 cuda 的两种浮点数类型对程序性能的影响就较为明显。可见双精度版本基本上比单精度版本耗时多一倍。,还可以指定 c++ 优化等级 -O3;在编译时,除了指定 GPU 计算能力。
2025-01-23 13:50:32
18
原创 capter4:CUDA 程序的错误检测
同时,只要在核函数调用后还有对其他任何能返回错误值的 API函数进行同步调用,都会触发主机和设备的同步,并捕捉到核函数中可能发生的错误。就是说,主机调用一个核函数之后必须等待其执行完,才能向下执行。即主机调用核函数后不会等待核函数执行完成、而是立刻执行之后的语句。为 1,这样所有核函数的调用都将不再是异步的,而是同步的。一般要获得精确的出错位置,还是需要显式地 同步,例如调用。此外,主机和设备之间的数据拷贝会隐式地同步主机和设备。因为核函数没有返回值,所以无法直接检查核函数错误。核函数的调用是异步的。
2025-01-23 11:36:33
11
原创 capter2:CUDA 中的线程组织
一个利用了 GPU 的 CUDA 程序既有主机代码,又有设备代码(在设备中执行的代码)。主机对设备的调用是通过 核函数(kernel function) 实现的。
2024-12-02 17:12:15
159
原创 OpenCV- 学习笔记(Python)Scale Invariant Feature Transform(SIFT)
旋转之后的主方向为中心取8x8的窗口,求每个像素的梯度幅值和方向,箭头方向代表梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算,最后在每个4x4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点,即每个特征的由4个种子点组成,每个种子点有8个方向的向量信息。如下图所示,中间的检测点要和其所在图像的3×3邻域8个像素点,以及其相邻的上下两层的3×3领域18个像素点,共26个像素点进行比较。在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。
2024-05-28 11:48:30
685
原创 (十二)扩充与补充
小程序默认的导航栏与 APP 一样都位于顶部固定位置。但是默认导航栏可能会影响小程序整体风格,且无法满足特定的设计需求,这时候,就需要进行自定义导航栏。在 app.json 或者 page.json 中,配置 navigationStyle 属性为 custom,即可 自定义导航栏在设置以后,就会移除默认的导航栏,只保留右上角胶囊按钮。
2024-05-22 15:24:24
194
原创 (十一)开放能力
手机验证组件,用于帮助开发者向用户发起手机号申请,必须经过用户同意后,才能获得由平台验证后的手机号,进而为用户提供相应服务。小程序为开发者提供了客服能力,同时为客服人员提供移动端、网页端客服工作台便于及时处理消息。当小程序需要让用户完善个人资料时,我们可以通过微信提供的头像、昵称填写能力快速完善。当小程序需要让用户完善个人资料时,我们可以通过微信提供的头像、昵称填写能力快速完善。手机号验证组件分为两种:手机号快速验证组件 以及 手机号实时验证组件。转发功能,主要帮助用户更流畅地与好友分享内容和服务。
2024-05-22 15:20:28
113
原创 (十)分包加载
小程序的代码通常是由许多页面、组件以及资源等组成,随着小程序功能的增加,代码量也会逐渐增加,体积过大就会导致用户打开速度变慢,影响用户的使用体验。在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,微信客户端会把对应分包下载下来,下载完成后再。开发者可以将功能相对独立的页面配置到独立分包中,因为独立分包不依赖主包就可以运行,可以很大程度上提升分包页面的启动速度。从独立分包中页面进入小程序时,不需要下载主包,当用户进入普通分包或主包内页面时,主包才会被下载。
2024-05-22 15:01:13
66
原创 (九)npm 使用
在实际的开发中,随着项目的功能越来越多、项目越来越复杂,文件目录也变的很繁琐,为了方便进行项目的开发,开发人员通常会对目录结构进行调整优化,例如:将小程序源码放到 miniprogram 目录下这时候需要开发者在 project.config.json 中 指定的位置 和目标 miniprogram_npm的位置配置 project.config.json 的 miniprogramRoot 指定小程序源码的目录。
2024-05-22 14:55:22
405
原创 (八)自定义组件
一个小程序完整的生命周期由应用生命周期页面生命周期和组件生命周期三部分来组成小程序冷启动,钩子函数执行的顺序保留当前页面,进入下一个页面,钩子函数执行的顺序销毁当前页面,进入下一个页面,钩子函数执行的顺序小程序热启动,钩子函数执行的顺序小程序冷启动,钩子函数执行的顺序。
2024-05-22 14:47:00
193
原创 (七)微信原生 API
小程序开发框架提供丰富的微信原生 API,可以方便的调起微信提供的能力,例如:获取用户信息、微信登录、微信支付等,小程序提供的 API 几乎都挂载在 wx 对象下,例如:wx.request()、wx.setStorage() 等**,wx 对象实际上就是小程序的宿主环境微信所提供的全局对象**异步 API支持callbackPromise当接口参数 Object 对象中不包含 success/fail/complete 时将默认返回 Promise。
2024-05-22 13:45:55
72
原创 (六)生命周期
应用生命周期是指应用程序进程从创建到消亡的整个过程小程序的生命周期指的是小程序从启动到销毁的整个过程一个小程序完整的生命周期由应用生命周期页面生命周期和组件生命周期三部分来组成小程序生命周期伴随着一些函数,这些函数由小程序框架本身提供,被称为生命周期函数,生命周期函数会按照顺序依次自动触发调用。帮助程序员在特定的时机执行特定的操作,辅助程序员完成一些比较复杂的逻辑。
2024-05-22 12:07:11
443
原创 (五)WXML 语法
在将数据声明好以后,在 WXML 使用 **Mustache 语法(双大括号 {{ }})**将变量包起来,从而将数据绑定。5. 在给 wx:key 添加属性值的时候,不需要使用双大括号语法,,否则结构会展示出来,通过 display 样式属性 来实现的。,否则结构不会进行展示,通过 移除/新增节点 的方式来实现。进行修改,setData() 方法接收对象作为参数,,通过赋值的方式修改数据无法改变页面的数据。,即以后数据不会改变,或者不必关注其顺序,小程序页面中使用的数据均需要在。遍历的 array 中。
2024-05-22 11:47:21
109
原创 (四)事件系统
事件传参:在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在事件处理函数中获取这些自定义数据,从而完成业务逻辑的开发,然后通过事件对象进行获取自定义数据event.target 是指事件触发者, event. currentTarget 是指事件绑定者使用 data- 方法传递参数的时候,多个单词由连字符 - 连接,连字符写法会转换成驼峰写法使用 data- 方法传递参数的时候,而大写字符会自动转成小写字符。
2024-05-22 11:20:09
376
原创 (三)小程序样式和组件
页面的结构由 HTML 进行编写,例如:经常会用到 div、p、 span、img、a 等标签页面的样式由 CSS 进行编写,例如:经常会采用 .class 、#id 、element 等选择器但在小程序中不能使用 HTML 标签,也就没有 DOM 和 BOM,CSS也仅仅支持部分选择器小程序提供了 WXML 进行页面结构编写,同时提供了 WXSS 进行页面的样式编写WXML提供了 view、text 、image、navigator 等标签来构建页面结构,只不过在小程序中将标签称为组件WXSS。
2024-05-09 09:59:35
257
原创 (二)小程序配置文件
配置文件介绍JSON 是一种轻量级的数据格式,常用于前后端数据的交互,但是在小程序中,,用于配置项目或者页面属性和行为,每个页面或组件也都有一个对应的 json 文件。
2024-05-08 14:41:47
91
原创 (一) 小程序基础知识
主体文件页面文件主体文件又称 全局文件,能够作用于整个小程序,影响到小程序的每个页面,主体文件必须放到项目的根目录下小程序入口文件小程序的全局配置文件小程序的全局样式注意事项:主体文件的名字必须是 app,app.js 和 app.json 文件是必须的页面文件是每个页面所需的文件,小程序页面文件都存放在 pages 目录下,一个页面一个文件夹.js:页面逻辑.wxml:页面结构.wxss:页面样式.json:小页面配置注意事项:.js 文件和 .wxml 文件是必须的。
2024-05-08 14:19:12
126
原创 vtk.vtkProcrustesAlignmentFilter()使用方法
vtk.vtkProcrustesAlignmentFilter 是 VTK 库中的一个过滤器用于根据最优刚体变换对一组数据进行尺度、平移和/或旋转对齐。
2024-04-19 17:38:23
539
原创 vtk.vtkMultiBlockDataGroupFilter()用法解释
vtk.vtkMultiBlockDataGroupFilter是VTK库的一个过滤器,它用于将多块数据集组合成组数据集。这个过滤器的主要应用场景是你拥有多个块数据,每个块都由一个单独的数据集表示,且你想将它们汇聚到一个组数据集中以进行统一的处理和操作。
2024-04-19 17:29:42
397
原创 vtk.vtkAssembly()用法解释
vtk.vtkAssembly 是 VTK库中的一个重要类,允许通过将多个vtkActor对象组合在一起来创建复杂的3D模型。每个 vtk.vtkAssembly 对象都可以包含其他 vtk.vtkAssembly 对象,构成一个层级的组合结构。
2024-04-19 17:23:25
791
原创 Pytorch:torch.stack 和 torch.as_tensor
torch.stack 和 torch.as_tensor 是 PyTorch 中的两个函数,它们用于处理 tensor 的创建和操作,但它们各自的用途和功能是不同的。
2024-03-28 15:29:32
423
原创 Pytorch:torch.utils.data.DataLoader
torch.utils.data.DataLoader 是PyTorch提供的一个功能,用来包装数据集并提供批量获取数据(batch loading)、打乱数据顺序(shuffling)、多进程加载(multiprocessing loading)等功能。当进行深度学习训练时,有效地加载和管理数据集是非常重要的,DataLoader 类能够大大简化这一工作流程。
2024-03-28 15:21:08
475
原创 Pytorch:torchvision.transforms.Compose
transforms.Compose 是PyTorch库中torchvision.transforms模块提供的一个功能,它允许将多个图像变换操作组合起来。当你在处理图像,并需要依次应用多个变换(如缩放、裁剪、归一化等)时,Compose可以把这些变换串联成一个单一的操作,这样你就可以非常方便地在数据集上应用这个组合操作。
2024-03-28 15:07:28
1092
原创 Python:json.dumps()
json.dumps() 是Python中json模块提供的一个方法,用于将Python对象(如字典、列表、字符串等)转换为其JSON编码的字符串。其最常用于将Python数据结构转换成JSON格式的数据,这进而可以作为HTTP响应发送给前端,或者保存在文件中。
2024-03-28 15:00:36
974
原创 Pytorch:torch.utils.tensorboard.SummaryWriter
SummaryWriter 通常是指在TensorBoard日志记录库中的一个类,这是TensorFlow的一个组件,可以用于记录和展示神经网络训练过程中的各种参数。PyTorch也提供了与TensorBoard兼容的工具torch.utils.tensorboard.SummaryWriter。
2024-03-28 14:55:02
1228
1
原创 Batch Normalization(批量归一化)和 Layer Normalization(层归一化)
Batch Normalization(批量归一化)和 Layer Normalization(层归一化)都是深度学习中用于改善网络训练过程的归一化技术。尽管它们的目标相似,即通过规范化中间层的激活值来加速训练过程并提高性能,但它们在细节上有所不同。
2024-03-21 11:15:36
1372
原创 Pytorch: torch.mean()
在PyTorch中,函数 torch.mean 用于计算张量的平均值(均值)。其可以对整个张量计算平均值,也可以沿某个或多个维度计算平均值。这个操作对于正则化数据、在神经网络中进行层间规范化等场合特别有用。
2024-03-21 10:50:23
2972
原创 Pytorch:torch.nn.functional.pad()
torch.nn.functional.pad 是PyTorch函数,用于在张量的各个轴上添加填充。这个函数是 torch.nn.functional 模块下的一个实用函数,它可以自由地添加不同数量的填充到输入张量的任意边界。
2024-03-20 13:55:02
643
原创 Pytorch:nn.Upsample() 和nn.ConvTranspose2d()
nn.Upsample 是一个在PyTorch中进行上采样(增加数据维度)的层,其通过指定的方法(如nearest邻近插值或linear、bilinear、trilinear线性插值等)来增大tensor的尺寸。这个层可以在二维或三维数据上按照给定的尺寸或者放大比例来调整输入数据的维度。
2024-03-20 11:42:00
2830
2
原创 U-Net代码复现--更新中
本文记录自己的学习过程,内容包括:代码解读:Pytorch-UNet深度学习编程基础:Pytorch-深度学习(新手友好)
2024-03-20 10:41:04
983
原创 Pytorch:torch.utils.checkpoint()
在PyTorch中,torch.utils.checkpoint 模块提供了实现梯度检查点(也称为checkpointing)的功能。这个技术主要用于训练时内存优化,它允许我们以计算时间为代价,减少训练深度网络时的内存占用。
2024-03-20 10:29:29
1413
原创 Pytorch:torch.cuda.empty_cache()
torch.cuda.empty_cache() 是PyTorch中用来释放未被分配的缓存的内存的函数。在使用GPU进行计算时,CUDA会在内部维护一个内存缓存池,以便更快地分配和释放。但有时候,这些缓存的内存在不再需要的时候,它们不会被自动返回到操作系统。
2024-03-20 10:07:30
3649
原创 Pytorch:模型的加载和保存 torch.save,torch.load,torch.nn.Module.state_dict 和 torch.nn.Module.load_state_dict
在PyTorch中,模型的保存和加载是通过几个关键的函数来完成的,它们分别是 torch.save,torch.load,torch.nn.Module.state_dict 和 torch.nn.Module.load_state_dict。
2024-03-20 10:02:40
1250
carvana-image-masking-challenge:train-masks
2023-11-28
carvana-image-masking-challenge: train.zip
2023-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人