- 博客(30)
- 收藏
- 关注
原创 linux中执行脚本命令的source和“.”和“./”的区别
3. 修改当前 shell 的状态,如改变工作目录、设置 shell 选项等;1. 执行独立的脚本程序,不需要与当前 shell 共享环境变量或状态时;1. 加载环境变量配置文件,无需重新启动终端;2. 执行编译后的可执行文件;2. 加载函数定义;
2025-06-12 18:26:59
256
原创 C标准库函数:字符串操作
/ 自定义 strcpy 函数= '\0') {dest++;src++;// 添加字符串结束符return 0;// 自定义 strlen 函数= '\0') {len++;str++;return len;return 0;通过以上介绍,你可以了解到C语言中标准库提供的字符串操作函数以及如何自定义字符串处理函数。在实际使用中,要注意缓冲区溢出的问题,确保程序的安全性。
2025-05-27 16:30:11
662
原创 【报错解决方案】cannot open shared object file: No such file or directory
通常表明系统无法找到或者无法加载名为xxx.so的共享库文件。:系统上可能根本没有安装所需的库文件。:即使库文件存在,如果其路径没有被包含在系统的库搜索路径(如环境变量)中,也会导致此错误。:库文件可能已损坏,或者应用程序需要的库版本与系统中安装的版本不匹配。1. 确认库文件是否存在首先,你需要确认文件是否真的存在于你的系统中。如果找到了文件,请确保它的路径是正确的。2. 设置如果找到了库文件,但不在标准库路径中,你可以通过设置环境变量来包含该路径。例如,如果库位于然后再次尝试运行你的程序。
2025-05-27 15:07:31
331
原创 mark一个嵌套结构体的调用,再怎么重定义都只看最后一个,比如下面的E
【代码】mark一个嵌套结构体的调用,再怎么重定义都只看最后一个,比如下面的E。
2025-05-23 10:58:35
122
原创 __shared__、__managed__、__device__修饰的内存
虚拟内存,底层映射到GPU、CPU内存。CPU通过CUDA API来访问。CPU、GPU数据共享。
2025-03-06 14:47:37
85
原创 只写char是有符号还是无符号呢
在C语言标准中,**`char` 的符号性(是否有符号)是由实现定义的**,这意味着它可以是 `signed char` 或 `unsigned char`,具体取决于编译器和目标平台。- 在 **x86/x64 架构** 上,大多数编译器(如 GCC、MSVC)将 `char` 定义为 **有符号的**(`signed char`)。- 在 **ARM 架构** 上,通常将 `char` 定义为 **无符号的**(`unsigned char`)。### **1. 默认 `char` 的符号性**
2025-02-22 10:56:49
236
原创 GPU和FPGA的区别
GPU(Graphics Processing Unit,图形处理器)和 FPGA(Field-Programmable Gate Array,现场可编程门阵列)不是同一种硬件。我的理解是,虽然都可以用于并行计算,但是GPU是纯计算的硬件,FPGA是控制+计算的可编程的硬件。FPGA有点像CPU,区别在于,CPU的硬件是固定的,而FPGA的硬件是可编程的。如若理解有偏差,烦请指出,多谢!
2025-02-19 14:48:59
945
原创 《A Philosophy of Software Design》(《软件设计的哲学》)适合成熟的软件开发工程师阅读,增长功力
**避免信息泄漏**:防止模块之间共享不必要的信息,避免一个模块的实现细节影响到其他模块。- **简单而清晰的接口**:接口应该简洁明了,只提供必要的功能,避免过多的参数和复杂的调用方式。- **复杂度的来源**:详细阐述了复杂度可能来源于不必要的依赖关系、重复代码、不清晰的接口设计等。- **增量式设计**:提倡采用增量式的设计方法,逐步构建系统,而不是一开始就试图设计出一个完美的系统。- **复杂度的定义**:书中将复杂度定义为“任何使得软件系统难以理解和修改的因素”,包括代码的耦合性、模糊性等。
2025-02-17 16:37:36
328
原创 C 编程语言时使用的特定术语和概念的定义
它们经过翻译成为可执行程序,在操作系统调用其主函数时执行(除非它本身就是操作系统或其他独立程序,在这种情况下,入口点是由实现定义的)。每个标识符(宏除外)只在程序中称为其作用域的部分有效,并属于四种名称空间之一。有些标识符具有链接性,当它们出现在不同的作用域或翻译单元中时,会指向相同的实体。其他词可以用作标识符,用来标识对象、函数、结构体、联合体或枚举标记、其成员、类型定义名称、标签或宏。函数的定义包括语句和声明序列,其中一些还包括表达式,它们指定了程序要执行的计算。
2025-02-10 16:00:40
164
原创 cuda的maxBlockPerMP是什么?
maxBlockPerMP` 是一个重要的参数,用于指导 CUDA 程序的优化和资源管理。通过理解这个参数的含义和作用,开发者可以更好地设计内核,使其在硬件上高效运行。
2024-11-26 18:00:13
311
原创 【自用】底层driver debug case的方法
(1)如果是crash,从堆栈找到对应出错的地方,一级一级往上找到case或driver不对的地方;(2)如果是hang,暂停之后会停在hang的地方,加环境变量打印已有的调试手段,学着去分析log;(3)如果是fail,对比golden值和输出值,从后往前追case+driver。第一步,单步跟case,记录case测试的核心内容;
2024-11-25 17:27:02
122
原创 CUDA有哪些 `__attribute__` 修饰符?
CUDA 提供了多种 `__attribute__` 修饰符,用于控制编译器行为、优化代码、定义内存类型和限制内核启动配置。这些修饰符可以帮助开发者更好地控制和优化 CUDA 代码的性能和行为。CUDA(Compute Unified Device Architecture)提供了多种 `__attribute__` 修饰符,用于控制编译器行为和优化,以及在特定情况下提供额外的信息。
2024-11-22 17:21:54
873
原创 CUDA的<<<>>>是什么意思
在 CUDA 编程中,`>` 语法用于。这个语法指定了 CUDA 内核的执行配置(execution configuration),包括线程块的数量(blocks)、每个线程块中的线程数量(threads per block)、共享内存大小(shared memory size)和流(stream)。通过正确配置这些参数,可以有效地利用 GPU 的并行计算能力来加速计算任务。
2024-11-18 17:24:41
387
原创 我发现我对CUDA的Unified Memory有误解
不像通常的计算机,用户只能单独访问GPU内存或CPU内存,GPU和CPU之间的数据传输需要靠PCIE等手段。CUDA的Unified memory是CPU和GPU都能访问到的,就不需要数据传输的手段了!之前理解Unified Memory的时候,一直以为UVM分为device memory和host memory,也就是GPU memory和CPU memory,但其实不是的。Unified Memory是一个CUDA特有的feature。
2024-10-11 14:51:20
213
原创 linux上用cmake遇到的build问题解决方案(自用)
一、首先,找到出现红色字体"Error"的地方。三、关于cmake的更多信息,可以查询官网。二、其次,阅读报错信息。
2024-09-05 13:38:24
492
原创 CUDA:kernel函数中,计算线程在数据中的全局索引的标准公式解析(后期理解更深入了再加内容)
在 CUDA 编程中,处理一维、二维或三维线程网格时,blockIdxblockDim和threadIdx变量用于计算每个线程的唯一标识符。对于二维或三维网格,你需要扩展计算公式,以适应多个维度。
2024-09-03 16:03:39
284
原创 句柄(Handle)的简单理解
1. 文件句柄:当你打开一个文件(example.txt)时,操作系统返回一个句柄(FILE*),你可以通过它来读取或写入文件,而不需要知道文件在磁盘上的确切位置。在数据库编程中,数据库连接句柄用于管理与数据库的连接。句柄就是一个让你可以间接操作资源的“代号“,用于管理和操作系统资源。通过句柄,程序可以方便地访问文件、窗口、线程、数据库连接等资源,而不需要关心底层的细节。2. 窗口句柄:在编写图形用户界面程序时,每个窗口都有一个唯一的句柄。你通过这个句柄来标识和操作窗口,比如改变窗口大小或关闭窗口。
2024-07-22 17:57:09
557
原创 结构体一定要用指针来引用吗?结构体用指针来引用的好处。
在 C 语言中,使用指针来引用结构体是一种常见的做法,主要是为了提高函数调用的效率、方便修改结构体内容以及处理动态分配的内存。虽然可以直接传递结构体本身,但在实际应用中,指针提供了更好的性能和灵活性。
2024-07-17 10:10:05
457
原创 内核kernel和core是两个相关但不完全相同的概念
因此,内核是操作系统的重要组成部分,而核心可以在不同上下文中表示不同的概念,通常与硬件的处理能力或软件的主要执行部分相关联。2. 核心(Core)在硬件层面可以指处理器的独立计算单元,在软件层面可以指程序的主要执行部分或模块。1. 内核(Kernel)是操作系统的基础软件部分,管理系统的资源和提供服务给应用程序。
2024-07-15 11:03:31
1141
原创 error:stray “##“in program;error:expected initializer before string constant
3. 第三次尝试:请教同事,他一眼丁真,我用Visual Studio2019打开的code不知道为什么自动给每一行代码中间空了一行,这个空行遇到了宏定义,就让宏定义为空,导致error。1. 第一次尝试:我首先写了类似的短一点的嵌套,清chatgpt解析,没问题。2. 第二次尝试:手写调用该宏的函数,逐层手动写下去,去查看是否正确,没问题。这导致VS打开工程的时候,code显示的style可能不对。(因涉及别人的知识产权,故此处纯描述,不粘贴代码。是版本控制软件p4v在设置的时候,
2024-07-12 16:39:44
680
原创 CUDA是什么?
计算正在从CPU"中央处理"向CPU与GPU"协同处理的方向发展。为了实现这一新型计算模式,英伟达发明了英伟达™ CUDA™并行计算架构。
2024-06-27 11:02:42
18592
1
原创 计算机存储体系简介
寄存器的速度最快,可以在一个时钟周期内访问,其次是高速缓存,可以在几个时钟周期内访问,普通内存可以在几十个或几百个时钟周期内访问。其次,是高速缓存——cache,分为L1,L2等级别。首先,寄存器速度最快,成本最高,因此个数和容量有限。此处,核心概念是存储器分级。计算机中,离CPU越近的存储器,速度越快。
2024-01-09 18:31:24
405
原创 OpenCL 函数clSetKernelArg()返回错误值CL_INVALID_ARG_SIZE分析和理解
根据spec中查询到函数clSetKernelArg()返回错误值CL_INVALID_ARG_SIZE定义如下,下面展开分析。
2023-12-25 17:22:30
817
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人