- 博客(37)
- 收藏
- 关注
原创 【超算/先进计算学习】日报8
在学习的第一阶段,我们首先对需要优化的程序——Darknet框架进行了了解,其具有灵活性高、结构明晰、安装简单方便等特点;rm [-rf] [filename or directoryName] 目录以及文件的删除。mv [filename] [object_directiryName] 文件/目录的移动。cp [source_filename] [dest_filename] 文件/目录的拷贝。mv [old_filename] [new_filename] 文件/目录的重命名。
2023-04-28 23:08:28
1101
原创 【超算/先进计算学习】日报7
通过对 darknet 项目进行优化,了解了传统程序优化的基本流程,并对之前所学的内容有了很好的检验,个人认为学习阶段最终结果并不重要,重要的是掌握项目优化的思路和所用的工具。这个是 去掉 -pg 选项的执行情况,个人认为提升不是很大就没有再继续了,想要优化到极致的可以反复上述过程,不断寻找耗时长的函数对其使用尽可能多的优化手段!注意:每次对源码进行修改之后都要重新 make,加上 -pg 选项只是为了之后方便了解程序运行的详情,方便优化,但这本身会产生一定的开销,最终版需要去掉。
2023-04-25 22:17:26
404
4
原创 【超算/先进计算学习】日报6
当一个循环体中包含一个以上的循环,且循环语句之间不包含其他语句,则称这个循环为紧嵌套循环,交换紧嵌套中两个循环的嵌套顺序是提高程序性能最有效的变换之一。实际上,循环交换是一个重排序变换,仅改变了参数化迭代的执行顺序,但是并没有删除任何语句或产生任何新的语句,所以循环交换的合法性需要通过循环的依赖关系进行判定。最近对传统性能优化的一些方法进行了学习,了解了传统性能优化的原理 (与计算机体系结构和缓存的关系),通过这些优化方法程序的执行效率确实得到了显著的提高,是非常重要且实用的技术。
2023-04-24 19:26:38
668
原创 【超算/先进计算学习】日报5
main函数分别调用了testfunc1函数( 10 )次,testfunc4函数( 1 )次,testfunc3函数( 1 )次,testfunc2函数( 1 )次。Gprof 是一款易用的动态分析工具,除了函数的调用关系,同时还能给出函数的调用时间分布,为我们的性能分析提供参考,快速定位程序的热点函数位置。今天主要对程序性能分析的概念和常用工具进行了了解,并使用 gprof 对一些简单程序进行了分析和解读,还是挺有收获的。静态分析,即利用代码静态分析工具,对代码进行数据对象、函数接口封装和调用分析。
2023-04-22 19:49:49
828
原创 【超算/先进计算学习】日报4
基于块划分的方式,例如:如果有两个进程,会把一个向量的上半部分划给 P0,下半部分划给 P1,同样将矩阵的上半部分划给 P0,下半部分划给 P1,中间需要进行信息交换处会由 PETSc 自动进行管理。SpMV 优化的重点在于改良稀疏矩阵的存储结构,提升稀疏矩阵向量乘时的 Cache 命中率,并充分利用 CPU 内部硬件特性,或者多核平台来改善效率。1、如果 A 的性质不那么好,是病态的,或者主对角线上的元素很小,或者特征值很小,那么收敛起来就会非常慢。算法库:是计算领域的基础软件库,是发挥硬件算力的基石。
2023-04-21 16:54:16
782
3
原创 【超算/先进计算学习】日报3
对于一个可执行文件 saxpy.exe,通过 slurm 系统,编写 shell 脚本 yhrun.sh,通过 yhrun 命令把程序二进制文件提交到计算节点进行串行计算,使用 yhbatch 命令,提交 yhrun.sh 脚本,使程序在后台运行。今天的学习内容较少,初次了解作业管理系统slurm,感觉这种远程计算的方式还是挺新鲜的,期待之后的学习内容 (≧∇≦)ノ。-n:指定程序使用的总进程数目,每个节点启动约 n/N 个进程,整除。frame [n],简写 f [n],查看调用栈的 #n 层。
2023-04-19 18:55:55
903
原创 【超算/先进计算学习】日报2
现有一个程序,包含main.cpp、kernel.cpp源文件,并使用了/home/opt/路径下的第三方库mymath,其中opt路径下包含头文件./include/mymath.h和库文件./lib/libmymath.so。示例:需要编译 main.c、kernel.c 成 exe,其使用了 /home/opt/ 路径下的第三方库 math,其中 opt 目录下包含:/include/mymath.h、/lib/mymath.so。前面那个 -l 是大写的 i,后面那个 -l 是小写的 L。
2023-04-18 17:14:24
548
原创 【超算/先进计算学习】日报1
使用C语言编写的神经网络框架支持训练和测试各种计算机视觉算法可用于进行实时物体检测1、相比于TensorFlow等具有更好的移植性2、灵活性高,可以便捷的从底层对其进行代码改进与扩展3、结构明晰,可以方便的对源代码进行查看、解读和修改4、安装简单方便,通过自带的makefile可进行附加项的选择Makefile变量中各种开关的作用GPU=0:是否使用GPU加速CUDNN=0:是否使用nvidia官方的cudnn神经网络OPENCV=0:是否使用opencv。
2023-04-17 19:51:31
1073
1
原创 【2D游戏制作笔记】给游戏战斗增加一点打击感
这里的敌人受击特效在一个场景中可以公共使用,在战斗时同屏的受击特效是有上限的,可以考虑使用对象池来统一管理这个特效,为受击特效创建一个“特效池”,在第一次创建之后并不会销毁而是关闭启用,之后战斗时可以继续复用。可以通过改变图像的颜色实现这一效果,有一个小坑是代码中color(r, g, b, a)的值是当前值与最大值的比例,也就是最大为1,而不是255。对于相机,可以改变的可以不只有位置这一个维度的信息,同时可以适当给相机一定的角度和大小的改变。以下内容是对自己制作过程中遇到问题的记录,不一定科学准确。
2023-01-13 13:34:36
588
原创 【2D游戏制作笔记】如何做出较好的角色操作手感
一个简单解决办法是在进入贴墙状态时开启一个计时器,按下与墙面相反的方向键时计时器将会减少,否则更新,当计时器减为0时将解除贴墙状态,而计时器时间就是一个操作空间,在这个时间内是仍处于贴墙状态的。以上操作看似简单,但我在实际制作时会遇到一些问题,如何协调”从贴墙状态解除“与下面几个操作的关系我是认为比较重要的。一般情况下,贴在左墙按下右方向键将会解除贴墙状态,如果贴墙状态下可以刷新二段跳跃,在解除贴墙后再跳跃则只能进行一次跳跃,这不是我所希望的。
2023-01-05 14:42:49
501
1
原创 【数据挖掘】期末
SL描述了两个基因对之间的致死性关系,但是两个基因之间的致死性关系实际上是很多因素的影响的,这些因素可能包括细胞成分、分子功能、化合物等等,而知识图谱就是描述某些数据之间的数据库,我们可以将上述的这些影响因素使用知识图谱存储起来,通过有监督方式的学习过程,通过这些信息构建一个基因相似性关系,通过多轮的学习过程,不断更新这个基因相似性关系,之后通过相似性预测基因之间的致死性信息。
2022-12-23 06:00:00
637
原创 【数据挖掘】决策树C4.5算法Python实现
文章内容为对数据挖掘实验作业的记录,如果您是为了作业而来看的这篇文章,还请不要无脑拷贝,本人编程能力较弱,代码写的并不优雅,注释尽可能写的详细了。和上一篇文章ID3算法实现的过程基本一致,不同之处在于C4.5使用信息增益率作为选择标准,为了区别于上一种方式,这里对连续值的处理使用遍历来查找一个使信息增益率最优的值。这学期真是挺忙的 >_
2022-11-24 23:16:43
5774
6
原创 【数据挖掘】决策树ID3算法Python实现
文章内容为对数据挖掘实验作业的记录,如果您是为了作业而来看的这篇文章,还请不要无脑拷贝,本人编程能力较弱,代码写的并不优雅,注释尽可能写的详细了。这学期真是挺忙的 >_
2022-11-24 23:09:02
2700
3
原创 【数据挖掘】特征化分析(信息增益)
这是一个数据挖掘选修课的作业,要求是类概念描述和特征化分析,两个词连搜都搜不到,如果你不知道我写的是什么,说实话我也不知道…使用的语言为python,是直接在Jupyter中写的,中间会有一些输出方便随时进行验证。
2022-10-27 16:55:42
1301
原创 【数据挖掘】主成分分析Python实现
是对一个数据挖掘作业的记录,数据集是老师提供的几种癌症的数据,我是直接在Jupyter中写的,中间会输出一些内容验证之类的参考的大佬文章仅作记录,至于原理还有很多不懂的地方,结果我也不知道该是什么样的,把用这么多维特征来区分的事物降到两维来进行区分,我自己感觉已经很神奇了哈哈!
2022-10-23 19:38:55
2222
2
原创 【计算机网络实验二】网络基础编程实验 (Python-Socket)
通过本次实验,对socket编程有了初步的了解,学习了如何使用套接字采用TCP进行数据的收发、用UDP进行数据的收发,socket是应用层与TCP/IP协议中间的抽象层,作为一组接口,其将复杂的TCP/IP协议隐藏在socket接口后面,减轻了程序员编程的负担
2022-10-18 16:56:13
3854
原创 【Kaggle】Classify Leaves
作为第二个练手的题目,代码规范上有很多不清楚的地方,参考了好多其他大佬的分析流程和代码,在此做一下记录。
2022-07-30 12:58:19
949
4
原创 【Kaggle】House Prices
作为第一个练手的题目,代码规范上有很多不清楚的地方,参考了好多其他大佬的分析流程和代码,在此做一下记录。
2022-07-30 12:57:37
984
原创 【操作系统导论】第40章课后习题解答
首先是初始状态,可以看到在初始状态下只有一个类型为d的项,这是一个目录,第二个参数a:0表明第0个数据块属于该目录,第三个参数r:2表明目录的引用计数为2之后可以看到indoes中增加了一条[d a:1 r:2]的条目,同时inodes[0]中的r由2变为了3,这说明在根目录下新创建了一个目录,数据块1属于该目录,同时数据块0中增加了(u,1)条目,说明在根目录下创建了名为u的目录这一步可以看到inodes中增添了[f ...
2022-06-12 19:03:48
381
原创 【操作系统导论】第38章课后习题解答
目录前言38.1题目描述38.2题目描述分析及解答38.3题目描述分析及解答38.4题目描述分析及解答38.5题目描述分析及解答前言内容仅作记录,请谨慎参考。38.1题目描述使用命令:./raid.py -s 1 -n 5 -L 5 -R 20 -5 LS -c可以模拟大小为20个块使用左对称RAID5策略,随机读5个数据的结果:不断改变-s的值,进行多次的读取,可以推出在左对称算法下数据块在磁盘的布局:同样的方法,使用命令:./raid.py -s 1 -n 5 -L 5 -R
2022-05-27 18:59:11
882
原创 【操作系统导论】第37章课后习题解答
目录前言作业前的准备安装python库Readme中的关键信息37.1题目描述分析及解答前言内容仅作记录,请谨慎参考。作业前的准备安装python库这次作业的文件夹名称为file-disks如果尝试使用提供的disk.py进行一次模拟:会被提示缺少必要的库,我们需要在Linux下安装python名为tk的库需要两条命令:sudo apt-get install python-pipsudo apt-get install python-tkReadme中的关键信息从中得到关键信息
2022-05-27 18:38:47
1162
原创 【计算机系统】ShellLab实验
目录前言实验前的准备实验过程trace01trace02、trace03evalbuiltin_cmd测试比较trace04evalwaitfgsigchld_handler测试比较trace05builtin_cmd测试比较trace06sigint_handler测试比较trace07测试比较trace08sigstp_handler测试比较trace09、trace10builtin_cmddo_bgfg测试比较trace11~trace16测试比较写在后面前言使用的课本为《深入理解计算机系统》的
2022-05-24 18:33:40
2501
原创 【操作系统导论】第30章课后习题解答
目录前言30.1题目描述分析及解答30.2题目描述分析及解答30.4题目描述分析及解答30.8题目描述分析及解答30.9题目描述分析及解答30.10题目描述分析及解答30.11题目描述分析及解答前言内容仅作记录,请谨慎参考。30.1题目描述分析及解答查看main-two-cvs-while.c的代码,对代码功能进行分析通过代码中的四个方法:do_fill()、do_get()、producer()、comsumer()我们可以知道,这是使用条件变量解决生产者/消费者的方案。在do_fi
2022-05-12 21:11:47
1052
原创 【计算机系统】Buflab实验
目录前言实验前的准备Level 0:CandleLevel 1:SparklerLevel 2:FirecrackerLevel 3:DynamiteLevel 4:Nitroglycerin前言内容仅作记录,请谨慎参考。实验前的准备首先查看实验文文件:可以看到里面一共有三个文件:bufbomb、hex2raw、makecookie从实验指导书中可以了解到这三个文件的具体作用:bufbomb是我们要攻击的程序makecookie会根据我们的用户id生成一个“cookie”hex2raw
2022-04-29 18:26:42
2364
1
原创 【操作系统导论】第28章课后习题解答
目录前言28.1题目描述分析及解答28.2题目描述分析及解答28.3题目描述分析及解答28.4题目描述分析及解答28.5题目描述分析及解答28.6题目描述分析及解答28.7题目描述分析及解答前言内容仅作记录,解答有参考别人的地方,请谨慎参考。关于锁,文中我很随意的说法是“上锁”与“开锁”,文雅一点的说法可以说“获取锁”和“释放锁”。28.1题目描述分析及解答首先输入指令:./x86.py -p flag.s运行程序:可以看到两个线程在执行,再使用指令:cat flag.s查看汇编代码:
2022-04-29 18:00:05
2097
原创 【操作系统导论】第26章课后习题解答
目录前言26.1题目描述分析及解答26.2题目描述分析及解答26.3题目描述分析及解答26.4题目描述分析及解答前言内容仅作记录,解答有参考别人的地方,请谨慎参考26.1题目描述分析及解答使用cat loop.s查看程序代码:这段代码首先将寄存器%dx中的值减1,test指令表示将寄存器%dx中的值与0做与运算,jgte表示“大于等于”则跳转。这里的halt指令表示停止这个线程。输入指令:./x86.py -p loop.s -t 1 -i 100 -R dx运行程序该进程
2022-04-29 17:45:47
1231
原创 【操作系统导论】第22章课后习题解答
目录前言22.1题目描述分析及解答FIFOLRUOPT22.2题目描述分析及解答22.3题目描述分析及解答22.4题目描述分析及解答前言内容仅作记录,解答有参考别人的地方,请谨慎参考22.1题目描述分析及解答FIFO输入命令:./paging-policy.py -s 0 -n 10 -p FIFO进行程序模拟,追踪策略为:FIFO在FIFO策略决定替换哪个页面时将选择第一个进入的页进行替换访问顺序为:8、7、4、2、5、4、7、3、4、5,cache能容纳3个页具体访问过程如
2022-04-20 22:38:49
2307
2
原创 【操作系统导论】第20章课后习题解答
目录前言20.1题目描述分析及解答20.2题目描述分析及解答20.3题目描述分析及解答前言内容仅作记录,解答有参考,请谨慎参考20.1题目描述分析及解答当使用多级页表的方式进行虚拟地址转换时,仍然只需要一个寄存器即可,将寄存器的不同位存储不同的信息,例如将划分为3个部分,分别存储VPN和Offset,其中VPN又分为两部分分别存储页目录索引(PDI)和页表索引(PTI),用这样的方式,使用一个寄存器即可完查找。20.2题目描述分析及解答输入命令./paging-multilev
2022-04-20 09:00:40
1190
原创 【计算机系统】Bomblab实验
目录前言第一个第二个第三个第四个第四关代码func4函数第五个第六个隐藏关寻找隐藏关隐藏关代码func7函数前言内容仅作记录,请谨慎参考,思路可能差不多,但每个人的炸弹是不一样的第一个08048b90 <phase_1>: 8048b90: 83 ec 1c sub $0x1c,%esp//栈顶指针%esp-0x1c,即开辟一个大小为0x1c字节的栈空间 8048b93: c7 44 24 04 5c a1 04 movl $0x804a15c,0x4(%esp)/
2022-04-09 15:09:30
1667
原创 【操作系统导论】第18章课后习题解答
目录前言18.1题目描述分析及解答18.2题目描述分析及解答(1) 地址空间中页的百分比为0时:(2) 地址空间中页的百分比为25时(3) 地址空间中页的百分比为50时(4) 地址空间中页的百分比为75时(5) 地址空间中页的百分比为100时18.3题目描述分析及解答前言内容仅作记录,请谨慎参考18.1题目描述分析及解答按照题目要求分别输入(项数太多,仅截图最后部分):./paging-linear-translate.py -P 1k -a 1m -p 512m -v -n 0.
2022-04-08 16:15:32
1463
原创 【操作系统导论】第17章课后习题解答
目录前言17.1题目描述分析及解答17.3题目描述分析及解答17.4题目描述分析及解答前言内容仅作记录,请谨慎参考17.1题目描述分析及解答使用命令:./malloc.py -n 10 -H 0 -p BEST -s 0来产生随机分配和释放:可以看到,模拟程序模拟了一块大小为100的空间,基地址为1000,头部的大小为0,同时采用最优匹配的匹配策略。第一次分配大小为3的空间,将会返回1000,此时List有一个块大小为97free之后将会返回0,此时List有两个块大小分别为3
2022-04-03 17:40:02
1517
原创 【操作系统导论】第16章课后习题解答
目录前言16.1题目描述分析及解答16.2题目描述分析及解答16.3题目描述分析及解答前言内容仅作记录,请谨慎参考16.1题目描述分析及解答(1) 输入命令./segmentation.py -a 128 -p 512 -b 0 -l 20 -B 512 -L 20 -s 0得到如下模拟程序:从模拟结果中我们可以看到,虚拟地址空间大小为128,物理地址空间大小为512同时物理空间被分成了两个段,其中第一个段segmentation 0的基址为0,大小为20,正向增长;第二个段se
2022-04-03 17:28:44
1458
原创 【操作系统导论】第15章课后习题解答
目录前言一、15.1题目描述:分析与解答:二、15.3题目描述:分析即解答:前言内容仅作记录,请谨慎参考一、15.1题目描述:分析与解答:通过计算机底层的地址转换机制我们可以知道,CPU会先将虚拟地址VA与限制寄存器(limit)中的值进行比较,当虚拟地址VA的值小于该值时,将虚拟地址VA加上基址寄存器中的值所得到的结果作为对应的物理地址PA;当虚拟地址VA的值不小于限制寄存器(limit)中的值时则会导致内存访问出现问题,即不能成功进行地址转换。使用程序relocation.py模拟虚
2022-04-03 17:20:29
1401
3
原创 【HNU 夏季程序设计】310.Maya历法
目录前言一、问题描述二、思路分析1.题意分析2.解题策略三、代码总结前言文章仅分享一下个人的思路和可以在我们学校网站全通过的代码,如果有更好的思路欢迎评论分享。本人目前还是个菜鸟,代码写的并不优美,有需要注意的地方还请提出来呀! q(≧▽≦q) 一、问题描述在学术休假期间,M.A. Ya教授在古老的Maya历法上有一个惊人的发现。从一个古老的令人棘手的信息中,教授发现Maya文明以365天为一年,称为Haab,包含19个月。前18个月每月有20天,月份名字为:pop、no、zip、zotz.
2021-08-15 11:45:34
301
原创 【HNU 夏季程序设计】406.数塔
目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport p.
2021-07-17 16:36:25
261
原创 【HNU 夏季程序设计】302.导弹防御系统
目录前言一、问题描述二、思路分析1.如何存储导弹信息2.如何确定每个导弹的最大拦截数总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、问题描述【问题描述】某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来.
2021-07-15 20:00:21
216
原创 【HNU 夏季程序设计】207.棋盘
目录前言一、问题描述二、思路分析1.输入2.如何确定棋盘?3.举个例子三、代码总结前言文章仅分享一下个人的思路和可以在我们学校网站全通过的代码,如果有更好的思路欢迎评论分享。本人目前还是个菜鸟,代码写的并不优美,有需要注意的地方还请提出来呀! q(≧▽≦q) 一、问题描述棋盘是指一个行和列编号从1~N的NxN的二进制矩阵,当行号和列号之和为偶数时该矩阵对应位置为黑色的(1),否则为白色的(0)。以下图示为N=1、2、3时的棋盘。给出一个NxN的二进制矩阵,请找出位于该矩阵内的最大尺寸的..
2021-07-13 17:58:36
552
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人