上一页 1 2 3 4 5 6 7 8 9 ··· 17 下一页
摘要: IPython刷新函数模块 在IPython中或者Jupyter Notebook中,一个函数被加载以后,如果这个函数或者模块的主体被修改了,那么就算是在IPython中重新Import一次,在程序执行中也只是去加载内存中的模块,而不是我们修改之后的内容。而IPython支持了一些魔术命令配置,其中autoreload这个魔术命令可以允许我们去配置是否需要重载函数模块。其中不仅包含通用性的全局配置,还支持指向性的配置方法。 阅读全文
posted @ 2024-03-25 09:47 DECHIN 阅读(146) 评论(0) 推荐(0) 编辑
摘要: MindSponge分子动力学模拟——自建力场(2024.03) 基于力场的分子动力学模拟,其实可以看做是一个最简单的机器学习模型,具有计算成本低的特点,在药物研发、生物化学和计算物理学等研究领域存在广泛的应用。那么,如何去快速的开发一个新的力场,在传统的MD模拟软件中其实可能是一个不小的门槛,而基于MindSpore框架开发的MindSponge分子动力学模拟软件,则具有这种便捷开发的特性。本文通过一个简单的示例,介绍了如何在MindSponge分子动力学模拟框架内构建一个自定义的分子力场,可以正常的执行分子动力学模拟迭代过程并保存相应的结果和输出。 阅读全文
posted @ 2024-03-22 17:46 DECHIN 阅读(255) 评论(0) 推荐(0) 编辑
摘要: MindSpore报错处理:TypeError: For 'set_context', the parameter device_id can not be set repeatedly, origin value [0] has been in effect. 本文主要介绍了一个在使用MindSpore框架进行编程的时候遇到的一个小问题--重复设定运算设备的编号。之所以会出现这个问题,是因为在调用的包里面有对MindSpore的引用,里面还包含了一些基于MindSpore的运算和即时编译,因此如果不给定设备编号的话,MindSpore内部会默认分配一个设备编号。而如果我们在自己的测试案例中又希望指定一个设备编号,那么就要把这个set_context句柄放在引用的最前面。 阅读全文
posted @ 2024-03-22 10:13 DECHIN 阅读(145) 评论(0) 推荐(0) 编辑
摘要: MindSpore自定义算子中的张量维度问题 当我们使用GPU进行快速运算时,虽然可以用成熟的深度学习框架如MindSpore和PyTorch等进行实现,但其实从速度上来说,最快不过直接使用C/C++的CUDA来实现。也正是因为如此,在MindSpore框架中支持了对CUDA实现的算子的直接调用,只是在格式规范上有一定的要求。本文主要介绍MindSpore调用本地CUDA算子的一些规范化和技巧。 阅读全文
posted @ 2024-03-12 16:31 DECHIN 阅读(159) 评论(0) 推荐(0) 编辑
摘要: Python定位函数定义地址 Python众多的第三方库,为我们的日常代码开发带来了极大的便利性,同时在开发过程中也需要注意这样的一个问题:开发的代码中有些命名可能跟第三方库冲突,例如本文介绍的基于MindSpore框架开发的过程中,定义一个本地的Cell类之后,发现本地的函数get_parameters跟Cell类本身的get_parameters冲突,因此可以使用Python的内置函数__code__对冲突函数的地址进行定位,然后进行修改。 阅读全文
posted @ 2024-03-11 15:51 DECHIN 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 将MindSpore运行结果输出到log文件 在Linux运行程序时,正确输出和错误输出会分成两条路线分别输出到不同的位置,默认输出是将两者按照顺序分别输出到屏幕上,而我们也可以通过设定将二者按照顺序输出到一个指定的log文件中。同时为了避免受到窗口交互的影响,我们可以使用Linux挂起的方式来运行一个程序,这样我们既不用担心任务被中断,也可以同时不断的通过log文件内容来查看任务的运行情况,还可以通过ps指令来查看任务进程运行的时长等信息。 阅读全文
posted @ 2024-03-11 10:30 DECHIN 阅读(183) 评论(0) 推荐(1) 编辑
摘要: CUDA指针数组Kernel函数 继上一篇文章学习使用C++存储一个不规则二维数组之后,这里介绍如何在C语言版的CUDA中实现一个不规则的二维数组。总体的实现思路跟前面一篇文章一样,使用了一个二维的指针数组来存储。其中主要的不同点大概就是在Host和Device之间的内存交互上,需要不断的分配、拷贝和释放内存,最终我们还是用一个CUDA的Kernel函数实现了一个不规则数组的输出。 阅读全文
posted @ 2024-03-07 17:41 DECHIN 阅读(238) 评论(0) 推荐(0) 编辑
摘要: C++中的不规则二维数组 本文介绍了一个在C++中保存不定长二维数组的数据结构。在这个结构中,我们使用了一个含有指针和数组长度的结构体,用这样的一个结构体构造一个结构体数组,用于存储每一个不定长的数组。最后可以将这个不定长数组的内存地址赋值给一个结构体指针,那么这个结构体指针中就包含了所有不定长数组所需的内容。类似的使用场景,更多的出现在Python和C++两个不同的语言进行交互的时候,这样操作可以兼具Python的易开发特性和C++的高性能特性。 阅读全文
posted @ 2024-03-06 16:57 DECHIN 阅读(298) 评论(3) 推荐(2) 编辑
摘要: 从Python语言的角度看C++的指针 本文主要是站在一个有一定的Python经验的C++新手的角度,学习一下C++中的指针使用方法。指针其实就是一个内存地址的标记,同时在用法上也跟Python中的迭代器很相似,可以通过指针移位来标记下一个需要读取或者更新的位置。通过这一篇文章,可以掌握指针对象的赋值、多重指针的使用和数组指针的使用,以及最后我们介绍了一个基于指针数组来实现的空间格点划分算法。由于是C++初学者,代码质量不高,也可能有更好的实现方式。 阅读全文
posted @ 2024-03-05 10:54 DECHIN 阅读(358) 评论(0) 推荐(2) 编辑
摘要: MindSponge分子动力学模拟——使用MDAnalysis工具进行后分析(2024.02) 这篇文章我们主要介绍了MindSponge分子动力学模拟软件如何跟后分析工具MDAnalysis相配合的方法,其主要操作流程就是调用MindSponge自带的CallBack来输出拓扑文件和轨迹文件给MDAnalysis,然后就可以调用MDAnalysis的相关分析函数接口,十分的方便。 阅读全文
posted @ 2024-02-29 16:36 DECHIN 阅读(363) 评论(0) 推荐(1) 编辑
摘要: Python3中的“指针” 假如你在Python中初始化了一个变量a的值,然后用a来初始化另一个变量b,此时你希望得到的b的数值是跟a同步变化的,还是独立变化的呢?Python这个编程语言虽然没有指针类型,但是Python中的可变参量也可以像指针一样,改变一个数值之后,所有指向该数值的可变参量都会随之而改变。就比如说改变a的值,会同步的去改变b的值。那么我们应该对这种类型的赋值有所了解,才能够避免在实际的编程中犯错。 阅读全文
posted @ 2024-02-27 11:01 DECHIN 阅读(777) 评论(0) 推荐(0) 编辑
摘要: Python报错symbol lookup error: xxx.so: undefined symbol: cufftxxx解决办法 解决了Python调用CUDA算子的so动态链接库中,无法找到cufft的cufftExecR2C函数的问题。 阅读全文
posted @ 2024-02-26 16:34 DECHIN 阅读(186) 评论(0) 推荐(0) 编辑
摘要: MindSponge分子动力学模拟——定义Collective Variables(2024.02) 随着分子动力学模拟技术的应用推广、AI软件的发展和硬件算力水平的提升,我们可以更快的在分子层面去观察和研究分子体系内的相互作用。但是分子模拟的性能再好,也不一定可以复现一些在自然宏观状态下有可能发生的化学反应或者是物质相变。因此我们需要通过定义一些对反应路径有决定性影响的物理量,然后结合增强采样技术,去更快的复现和推导我们所需要的反应机理。本文主要介绍分子动力学模拟软件MindSponge在这一领域的应用和代码实现。 阅读全文
posted @ 2024-02-19 16:15 DECHIN 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 关于分子力场中键能项和角能项的思考 本文介绍了在分子力场中经常有可能被使用到的键长和键角项的谐振势模型,并且分别从自动微分的Python代码实现以及解析形式的矢量化编程形式给出了初步的实现方案。虽然力场形式较为简单,但是在实际的计算中,我们统计出来,至少需要21P+28S的计算量,其中P指键的数量,S指键角的数量。这里提到的矢量化计算的实现方案,虽然从计算的角度来说有大量的冗余,但由于一般情况下,一个分子系统单个原子的成键数量都在4以内(比如C原子的sp3杂化),因此矢量化计算的实现方案也不失为一个很好的参考。 阅读全文
posted @ 2024-02-02 16:15 DECHIN 阅读(312) 评论(0) 推荐(1) 编辑
摘要: MindSpore导入CUDA算子 本文介绍了在MindSpore标准格式下进行CUDA算子开发的方法和流程,可以让开发者在现有的AI框架下仍然可以调用基于CUDA实现的高性能的算子。并且,除了常规的数值计算之外,在MindSpore框架下,我们还可以通过实现一个bprop函数,使得我们手写的这个CUDA算子也可以使用MindSpore框架本身自带的自动微分-端到端微分技术。 阅读全文
posted @ 2024-01-31 15:29 DECHIN 阅读(332) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 17 下一页