- 博客(69)
- 收藏
- 关注
原创 记一次cuda程序printf没输出的问题
占用的大小是 1048576*4/1024/1024=4 MB,根据网上资料,运行时的栈大小被限定了,生成可执行程序时, 链接器可以指定运行时栈大小, 超过这个尺寸就发生栈溢出。我记录一下怎么查这个问题的,采用增量法,只写第一行代码,有输出,写前三行,有输出,直到` const int ARRAY_SIZE = 1 << 20;天呐,cuda c++连个提示都没有吗,爆栈了就给我一片寂静是吧,好人谁能想到这啊……好的,这里使用了nvcc,内部调用了MSVC编译器,这里应该是爆栈了。
2025-02-04 20:51:42
338
原创 使用pycuda + skcuda 遇到 OSError: CUDA runtime library not found 的解决方案
使用pycuda + skcuda 遇到 OSError: CUDA runtime library not found 的解决方案
2024-07-09 11:31:41
750
1
原创 windows下配置linux环境
最近wsl2的内存占用爆炸,我很烦躁,直接卸载了,想想自己windows下面使用linux的需求也就是用一下gcc grep gdb,就开始研究msys2了。1. ucrt64/bin文件夹下应该能找到gcc.exe,然后将此路径加入环境变量。先pacman -Ss搜索,再按搜出来的名字pacman -S安装。2. ucrt64.exe后可以直接运行gcc。安装cmake+ninja。
2024-01-31 11:16:23
535
原创 哈希表的实现中一定要有链表的存在吗
需要注意的是,增加桶的数量会增加哈希表的内存消耗,因为每个桶都需要一定的存储空间。当发生冲突时,它会以一定的步长探查哈希表的下一个位置,直到找到一个空闲的位置来存储冲突的键值对。- 内存访问不连续:链地址法中链表的节点在内存中的存储位置可能是不连续的,这可能导致缓存不命中,对性能产生一定的影响。- 额外的空间消耗:链地址法需要使用额外的数据结构(如链表)来存储冲突的键值对,这会增加一定的空间消耗。- 紧凑的存储:开放地址法直接将键值对存储在哈希表中的连续位置,没有额外的指针和链表开销,节省了空间。
2024-01-15 10:48:50
455
原创 fmt中几个技法
是一个 C 风格的函数,可以用于处理任意类型的内存块,而不仅限于字符数据。这种技术通常用于编译时的条件编程,通过在模板实例化期间进行类型检查和分支选择,从而根据类型特性实现不同的行为。,这意味着需要将其转换为适当的类型才能访问所找到的字节。的位置,并输出结果。是一个类型特性,用于检查给定的类型是否可以通过特定的参数列表进行构造。是 C++ 标准库中的一个函数,它用于在一段内存中搜索指定的字节值。或将其转换为其他类型的指针,以便进行进一步的操作。的不同,我们可以看到不同的构造函数被调用。
2024-01-12 11:46:41
452
原创 C++11 中引入的几个属性
C++11 中引入的这几个属性平常项目不常见,突然见到可能有点陌生,我挨个列举一下。是 C++11 中引入的一个属性(attribute),用于向编译器发出警告,以确保编译器在某些情况下对函数的返回值进行检查,以避免出现可能导致错误或潜在问题的情况。当你在函数声明之前使用属性时,它会告诉编译器在调用该函数后,如果忽略了带有属性的函数的返回值,编译器会发出警告或错误。例如,考虑以下示例代码:在上面的代码中,函数被标记为,意味着它的返回值不应该被忽略。在main函数中,我们没有使用。
2024-01-05 15:21:29
1690
原创 memset(this, 0, sizeof(*this))的弊端
所以在构造函数中使用memset来初始化this是比较危险的,有可能会带来内存泄露,不建议这么使用,此外,memset可能会清空虚表指针。(this,0,sizeof(*this))是一种危险的写法,它限制了一个类再也不能改动,一旦改动,就会有问题出现。执行memset时不会出现任何问题,成员变量a确实被清0了,但问题也在这里出现,我们会发现。
2023-10-19 14:32:53
345
原创 ffmpeg视频解码器的配置选项含义
lowres是结构体中的一个成员变量,用于指定编解码器的降低分辨率级别。在某些情况下,为了加快编解码的速度或减少计算资源的消耗,可以通过设置lowres参数来降低编解码器的分辨率级别。这将导致编解码器在处理视频时使用较低的分辨率,从而减少计算量。lowres常见的取值范围为0到4,其中0表示不降低分辨率级别,4表示最大程度的降低分辨率级别。需要注意的是,lowreslowres一般情况下,默认情况下不会使用lowres参数,而是使用完整的原始分辨率进行编解码。
2023-10-12 15:46:11
1446
原创 ffmpeg中AVCodecContext和AVCodec的关系分析
和AVCodec是FFmpeg库中两个相关的结构体,它们在音视频编解码中扮演着不同的角色。:是编解码器上下文结构体,用于存储音视频编解码器的参数和状态信息。它包含了进行音视频编解码所需的,如编码器类型、编码参数、解码参数、输入输出格式等。每个音视频流在编解码过程中都需要一个对应的来。在解码过程中,用于接收解码后的音视频数据。在编码过程中,用于传递待编码的音视频数据。AVCodec:是音视频编解码器结构体,用于定义特定的编解码器。它包含了编解码器的类型、名称、支持的音视频格式、编解码函数等。通过。
2023-10-12 13:42:40
1101
原创 视频缩放的概念整理-步长数组
单通道灰度图像:假设图像为单通道灰度图像,每个像素只有一个亮度值。步长数组 [320, 160, 160, 0] 可以对应于每行 320 字节的灰度数据,表示每行像素的亮度值。需要注意的是,即使给出了步长数组,仍然需要其他的信息才能准确描述图像的格式,如图像的宽度、高度、色彩空间、数据类型等。步长数组只是描述了每行数据的跨度,而不提供完整的图像格式信息。
2023-10-12 11:41:29
525
原创 SDL播放pcm无声音的原因
"fopen()"函数中的"r"和"rb"表示以只读方式打开文件,但是前者是文本模式,后者是二进制模式。在文本模式中,即使操作系统使用不同的换行符,都会被转换为’\n’进行处理。在二进制模式下,文件中的所有数据都被视为raw数据,且不进行任何的字符集转换。然后,看了看不出声的程序,是用了。
2023-10-07 16:01:05
671
原创 dll载入时发生的事情
另外,当您在这些 Windows 操作系统之一上运行某一程序时,该程序的很多功能可能是由 DLL 提供的。例如,某些程序可能包含很多不同的模块,而该程序的每个模块都包含在 DLL 中并从中分发。当 DLL 中的函数需要更新或修复时,部署和安装 DLL 不要求重新建立程序与该 DLL 的链接。模块式程序的一个示例是具有多个可以在运行时动态加载的模块的计帐程序。要导出 DLL 函数,您可以向导出的 DLL 函数中添加函数关键字,也可以创建模块定义文件 (.def) 以列出导出的 DLL 函数。
2023-08-25 16:36:53
189
原创 -L和-rpath-link和-rpath
现代连接器在处理动态库时将链接时路径(Link-time path)和运行时路径(Run-time path)分开,用户可以通过-L指定连接时库的路径,通过-R(或-rpath)指定程序运行时库的路径,大大提高了库应用的灵活性。链接器ld的选项有 -L,-rpath 和 -rpath-link,看了下 man ld,大致是这个意思:-L: “链接”的时候,去找的目录,也就是所有的 -l 选项里的库,都会先从 -L 指定的目录去找,然后是默认的地方。
2023-08-14 17:51:41
1876
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人