- 博客(19)
- 收藏
- 关注
原创 VS性能分析工具
在工程属性链接命令行里加 /PROFILE没用,但是在链接器:配置选项 中选是,就好用了。VS2022性能分析工具 提示不是可识别的可执行映像。VS 性能分析工具 链接器未设置为/PROFILE。
2025-03-14 15:05:21
141
原创 VS交叉编译
gcc 编译出的目标代码质量非常好,编译速度也很快,并且 gcc 是一个交叉平台编译器,它能够在当前处理器平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合嵌入式领域的开发编译。要进行交叉编译,我们需要在主机平台上安装对应的交叉编译工具链(crosscompilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。1、在Windows PC上,利用ADS(ARM 开发环境),使用armcc编译器,则可编译出针对ARM CPU的可执行代码。
2025-02-19 13:53:44
374
原创 CPU c++ 读《程序喵大人学习宝典》收获
读《程序喵大人学习宝典》收获:cache line只有64字节,一级缓存目前一般64KB,二级缓存MB,三级缓存顶多几十MB。所以,命名空间等减少代码编译后体量大小的方法还是有用的。中的异常捕捉可以替代函数返回值,这样用异常更简洁,但是对于和c#接口,没有返回值就不合适了。而且无论是异常捕捉还是函数返回值,都无法避免崩溃。避免崩溃的异常捕捉在c++中是不存在的。中支持动态长度的数组,但是是在栈上的,如果数组越界(或者正常操作但范围超出栈承受了)会覆盖栈上的其他数值。用程序员控制的堆上的空间吧。
2025-02-14 16:23:41
205
原创 类型大小,类型表示范围
范围:-922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807 (922*10^16)范围:-21 4748 3648 ~ 21 4748 3647 (21*10^8)8字节8位可表达位数:2^64=1844 6744 0737 0960 0000。8字节8位可表达位数:2^64=1844 6744 0737 0960 0000。范围:0 ~ 42 9496 7295 (42*10^8)4字节8位可表达位数:2^32=42 9496 7296。
2025-02-13 13:19:59
259
原创 配置文件格式:Xml与ini相比的优缺点
配置要消耗一定时间,导致应用启动慢,不便于测试和维护。因为它有比较严格的格式审查机制,容错性也不是特别好。配置文件之间交替,增大了工作量(与。无法做自动校验,需要人工查找(与。复杂类型数据描绘就显得比较无力。线性的,简练,简单、方便。文档的内容和结构完全分离。配置需要消耗额外的内存。在手写时容易出现错误。描述符多,不容易记忆。当系统很大时,大量的。
2025-02-13 13:11:38
257
原创 问题:samples中纹理类型实用中的,__assume
但使用的时候却是:float4 clrIJ = tex2D<float4>(texImage, x, y);Samples 3中imageDenoising有个问题:声明的。明明是uchar4。
2025-02-13 11:37:55
189
原创 流与事件的等待
何时设置流对事件的等待(事件等待),见6之 concurrentKernels工程。concurrentKernels工程里 见到了多流和事件设置等待的关系。让streams[nstreams-1]流,等待其他流中的事件。
2025-02-13 10:16:45
380
原创 核函数执行时间太长问题的现象及解决
有条件的话,试试配两块卡,一块专门用来计算,不做图形显示,这是官方推荐的方式,或许问题就解决了(不保证,因为只要是。系统,即使不做显示,不保证没这个限制,看驱动如何了,我没实验过)。喂狗的程序得不到执行,系统超时检测不到心跳自然将正在执行的线程杀死。又一个类似情况,数据量很大,一样的代码,最后一个语句用原子操作,运行时提示:内存位置。不用原子操作,用普通加,不提示错误,当然结果不是真正要的。数据太大,核函数执行时间太长的时候,可能出现一种问题:之前的代码运行。的限制,你的显卡经常要共享出来显示屏幕的撒。
2025-02-11 16:11:08
282
原创 Nsight分析
会自动释放其所占内存,我又多释放了一次导致这个问题的出现。也有其他人遇到,运行没问题,分析就报错。程序运行没错,分析时不能加载。程序失败(崩溃):已经在代码中加上。就不能分析,和硬件及。
2025-02-11 15:58:08
153
原创 warp SM线程数目设置 原子操作
硬件每次只能为一个线程束获取一条指令,线程束中一半的线程要执行条件为真的代码段,一半线程线程执行为假的代码段,因此,这时有一半的线程会被阻塞,而另一半线程会执行满足条件的那个分支。但流是基于对缓冲区的拆分进行的,我的理解是:单流的时候可以用的。号线程中的特殊命令(如初始化),而后线程内同步,不能代替初始化后的硬件同步(真正有效的初始化)。对每个线程制定独特的执行路径,即针对线程的分支,也可以有线程间同步,这时不用考虑联合缓存。个数整数倍时,整数倍的线程块数被执行完,剩余的线程块被执行时,其他空闲的。
2025-02-10 16:06:43
554
原创 cuda中 ln exp等数学计算
(立方根), hypot(直角三角形斜边)cuda中 ln exp等数学计算。(求y/x(弧度表示)的反正切值)(参数与1的和的自然对数)
2025-02-10 15:19:30
255
原创 看显卡属性
里面的代码里有关于GPU属性的获取,通过cmd的方式没运行起来,就打开工程,选中。在代码中自己写的,有什么需要找sample中的代码,能得到GPU信息。右键设置为启动项,运行,一闪而过,在程序中加个。来检查设备是否支持,当设备支持时其值应当大于。
2025-02-10 15:18:59
274
原创 显卡使用设置
我从Nvidia的官网上下载了从3.0到5.2的所有版本,一个一个的都试过,发现所有的版本都不能够使用,一开启Nsight就会爆掉。直到有一天,我在搜索这个问题的时候,发现有人说,一台机器上有两个显卡--集成显卡和独立显卡,你编程的时候要先确定你的程序在哪一个显卡上运行的。有了这点,我就试着去获取程序当前跑的显卡的厂商是哪一个,最后悲催的发现居然是Intel。原文:https://blog.youkuaiyun.com/i_dovelemon/article/details/73013313。
2025-02-10 15:12:53
312
原创 使用nvidia-smi命令查看显卡信息
Perf:性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能(即 GPU 未工作时为P0,达到最大工作限度时为P12)。Persistence-M:持续模式的状态。持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态;Bus-Id:涉及GPU总线的东西,domain:bus:device.function;Disp.A:Display Active,表示GPU的显示是否初始化;Volatile GPU-Util:浮动的GPU利用率;GPU:GPU 编号;
2025-02-10 15:08:10
1161
原创 GPU理论之同步
另外说明一点,cudaMemcpy函数对于主机是同步的,但是cudaMemcpyAsyn是异步的,所以,使用 cudaMemcpyAsyn()后加 cudaDevicesynchronize() ,与单一条cudaMemcpy(),效果上是相同的。cudaStreamSynchronize()和上面的两个函数类似,这个函数带有一个参数,cuda流ID,它只阻塞那些cuda流ID等于参数中指定ID的那些cuda例程,对于那些流ID不等的例程,还是异步执行的。或者说,什么时候我们应该加上同步语句呢?
2025-02-10 15:05:07
439
原创 GPU理论之 ipp/npp FFT 神经网络卷积 算法相关
常量内存中不能用指针,可以是数组、变量。用cudaMemcpyToSymbol拷贝到常量内存中,用cudaMemcpyFromSymbol(data, constData, sizeof(data));CUDA自带例子工程在 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0。cudaMemcpyToSymbol第一个参数,对常量内存不用取地址,主机上的变量还要取地址。尝试将GPU内存中值拷贝到常量内存中,失败。也是一样,对常量内存不要取地址。
2025-02-10 14:38:30
651
原创 GPU理论 基础:类型位数,阻塞流,内存锁页方式
/阻塞流的初始化 } kernel1 > ();三,cudaStreamCreate创建的流是阻塞流,这就意味着流中操作可被阻塞,直到空流中的操作完成,直到空流的执行结束。四.(1)当操作被发布到空流中时,在操作被执行之前,CUDA上下文会等待所有先前操作发布到所有的阻塞流中。(2)当操作被发布到阻塞流中时,在操作执行之前,都会被挂起,直至空流中的操作完成。空流是隐式的同步流,在相同的CUDA上下文情况下,它会和其他所有的阻塞流同步。
2025-02-10 14:26:50
1806
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人