上一页 1 2 3 4 5 6 ··· 13 下一页
摘要: C++中的不规则二维数组 本文介绍了一个在C++中保存不定长二维数组的数据结构。在这个结构中,我们使用了一个含有指针和数组长度的结构体,用这样的一个结构体构造一个结构体数组,用于存储每一个不定长的数组。最后可以将这个不定长数组的内存地址赋值给一个结构体指针,那么这个结构体指针中就包含了所有不定长数组所需的内容。类似的使用场景,更多的出现在Python和C++两个不同的语言进行交互的时候,这样操作可以兼具Python的易开发特性和C++的高性能特性。 阅读全文
posted @ 2024-03-06 16:58 DECHIN 阅读(176) 评论(3) 推荐(2) 编辑
摘要: 从Python语言的角度看C++的指针 本文主要是站在一个有一定的Python经验的C++新手的角度,学习一下C++中的指针使用方法。指针其实就是一个内存地址的标记,同时在用法上也跟Python中的迭代器很相似,可以通过指针移位来标记下一个需要读取或者更新的位置。通过这一篇文章,可以掌握指针对象的赋值、多重指针的使用和数组指针的使用,以及最后我们介绍了一个基于指针数组来实现的空间格点划分算法。由于是C++初学者,代码质量不高,也可能有更好的实现方式。 阅读全文
posted @ 2024-03-05 10:54 DECHIN 阅读(275) 评论(0) 推荐(2) 编辑
摘要: MindSponge分子动力学模拟——使用MDAnalysis工具进行后分析(2024.02) 这篇文章我们主要介绍了MindSponge分子动力学模拟软件如何跟后分析工具MDAnalysis相配合的方法,其主要操作流程就是调用MindSponge自带的CallBack来输出拓扑文件和轨迹文件给MDAnalysis,然后就可以调用MDAnalysis的相关分析函数接口,十分的方便。 阅读全文
posted @ 2024-02-29 16:37 DECHIN 阅读(136) 评论(0) 推荐(1) 编辑
摘要: Python3中的“指针” 假如你在Python中初始化了一个变量a的值,然后用a来初始化另一个变量b,此时你希望得到的b的数值是跟a同步变化的,还是独立变化的呢?Python这个编程语言虽然没有指针类型,但是Python中的可变参量也可以像指针一样,改变一个数值之后,所有指向该数值的可变参量都会随之而改变。就比如说改变a的值,会同步的去改变b的值。那么我们应该对这种类型的赋值有所了解,才能够避免在实际的编程中犯错。 阅读全文
posted @ 2024-02-27 11:01 DECHIN 阅读(296) 评论(0) 推荐(0) 编辑
摘要: Python报错symbol lookup error: xxx.so: undefined symbol: cufftxxx解决办法 解决了Python调用CUDA算子的so动态链接库中,无法找到cufft的cufftExecR2C函数的问题。 阅读全文
posted @ 2024-02-26 16:35 DECHIN 阅读(45) 评论(0) 推荐(0) 编辑
摘要: MindSponge分子动力学模拟——定义Collective Variables(2024.02) 随着分子动力学模拟技术的应用推广、AI软件的发展和硬件算力水平的提升,我们可以更快的在分子层面去观察和研究分子体系内的相互作用。但是分子模拟的性能再好,也不一定可以复现一些在自然宏观状态下有可能发生的化学反应或者是物质相变。因此我们需要通过定义一些对反应路径有决定性影响的物理量,然后结合增强采样技术,去更快的复现和推导我们所需要的反应机理。本文主要介绍分子动力学模拟软件MindSponge在这一领域的应用和代码实现。 阅读全文
posted @ 2024-02-19 16:15 DECHIN 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 关于分子力场中键能项和角能项的思考 本文介绍了在分子力场中经常有可能被使用到的键长和键角项的谐振势模型,并且分别从自动微分的Python代码实现以及解析形式的矢量化编程形式给出了初步的实现方案。虽然力场形式较为简单,但是在实际的计算中,我们统计出来,至少需要21P+28S的计算量,其中P指键的数量,S指键角的数量。这里提到的矢量化计算的实现方案,虽然从计算的角度来说有大量的冗余,但由于一般情况下,一个分子系统单个原子的成键数量都在4以内(比如C原子的sp3杂化),因此矢量化计算的实现方案也不失为一个很好的参考。 阅读全文
posted @ 2024-02-02 16:15 DECHIN 阅读(160) 评论(0) 推荐(1) 编辑
摘要: MindSpore导入CUDA算子 本文介绍了在MindSpore标准格式下进行CUDA算子开发的方法和流程,可以让开发者在现有的AI框架下仍然可以调用基于CUDA实现的高性能的算子。并且,除了常规的数值计算之外,在MindSpore框架下,我们还可以通过实现一个bprop函数,使得我们手写的这个CUDA算子也可以使用MindSpore框架本身自带的自动微分-端到端微分技术。 阅读全文
posted @ 2024-01-31 15:29 DECHIN 阅读(160) 评论(0) 推荐(0) 编辑
摘要: Linux命令行从x度网盘下载数据 本文介绍了详细的在Linux机器上使用wget命令行下载某度网盘中共享的加密文件,用这种相对低成本的平台来存放一些大文件,相比于免费的Gitee和Github等大型开源管理平台还是要稳定一些。因为可以直接命令行下载,那么就可以直接把下载脚本写到python开源库的setup文件中,便于实现自动化的安装。 阅读全文
posted @ 2024-01-26 17:50 DECHIN 阅读(294) 评论(0) 推荐(1) 编辑
摘要: Julia编程基础 本文介绍了Julia这一主要面向自然科学的编程语言的基本安装与使用,建议读者最好在熟练使用Python的前提下再阅读本文。如果是对Python的语法非常熟悉的人,应该很容易看懂本文并初步掌握Julia的基本语法和使用逻辑。Julia最吸引人的地方在于他简单如Python的语法,但兼具了C++和Fortran的高性能。但是缺点也非常明显,作为一门新的编程语言,受众又少,没有太多的轮子可以用。反过来想,也很适合用来开发一些新的轮子。 阅读全文
posted @ 2024-01-22 19:11 DECHIN 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 无法访问Github仓库的极简治标法 Github访问受限,是国内众多IP所经常面临的问题。这里我经过大量的踩坑之后,还是认为使用Gitee将Github的仓库直接同步过来,作为一个私有的镜像,是最便利高效的方法。当然,这个只能满足日常使用第三方库的需求,治标但不治本,对于那些仅仅只是想使用某些Github仓库代码的童鞋来说,也是完全够用了。 阅读全文
posted @ 2024-01-22 11:14 DECHIN 阅读(115) 评论(0) 推荐(0) 编辑
摘要: Numpy计算近邻表时间对比 本文介绍了在Python的numpy框架下计算近邻表的两种不同算法的原理以及复杂度,另有分别对应的两种代码实现。在实际使用中,我们更偏向于第二种算法的使用。因为对于第一种算法来说,哪怕是一个10000个原子的小体系,如果要计算两两间距,也会变成10000*10000这么大的一个张量的运算。可想而知,这样计算的效率肯定是比较低下的。 阅读全文
posted @ 2024-01-09 23:30 DECHIN 阅读(228) 评论(0) 推荐(0) 编辑
摘要: Python设置进程名称 更好的管理系统进程,是每一个程序员的进阶必经之路。尤其是使用多进程、多用户的场景,系统内的进程是非常混乱的。如果在运行程序时都能控制好进程名称,那么就可以直接通过进程名称来监管和控制进程的执行和输出。本文介绍了setproctitle这样一个工具的简单使用,可以在python代码内部对进程进行管理。 阅读全文
posted @ 2024-01-02 11:37 DECHIN 阅读(309) 评论(1) 推荐(2) 编辑
摘要: Python代码中的偏函数 本文介绍了在Python中使用偏函数partial的方法,并且介绍了两个使用partial函数的案例,分别是concurrent并行场景和基于jax的自动微分场景。在这些相关的场景下,我们用partial函数更多时候可以使得代码的可读性更好,在性能上其实并没有什么提升。如果不想使用partial函数,类似的功能也可以使用参考链接中所介绍的方法,实现一个装饰器,也可以做到一样的功能。 阅读全文
posted @ 2023-12-21 17:49 DECHIN 阅读(260) 评论(0) 推荐(0) 编辑
摘要: Python追踪内存占用 本文介绍了一个工具tracemalloc,可以在Python代码的执行过程中对每一步的内存占用进行记录。 阅读全文
posted @ 2023-12-20 16:20 DECHIN 阅读(116) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 13 下一页