CUDA & C++ | 双变量加法

#include <iostream>#include <cuda.h>#include <cuda_runtime.h>#include <stdio.h>__global__ void gpuAdd(int d_a, int d_b, int* d_c) { *d_c = d_a + d_b;}int main(void) { int h_c; int* d_c; cudaMalloc((void**)&d_c, sizeo
分类: 其他 发布时间: 03-07 08:28 阅读次数: 0

CUDA & C++ | 向量加法并行计算

#include "stdio.h"#include<iostream>#include <cuda.h>#include <cuda_runtime.h>#define N 10__global__ void gpuAdd(int* d_a, int* d_b, int* d_c) { int tid = threadIdx.x; // handle the data at this index if (tid < N) d_c[tid] =
分类: 其他 发布时间: 03-07 08:28 阅读次数: 0

CUDA &C++ | 线程索引方法,多块多线程加法计算

#include "stdio.h"#include<iostream>#include <cuda.h>#include <cuda_runtime.h>//Defining number of elements in Array#define N 50000__global__ void gpuAdd(int* d_a, int* d_b, int* d_c) { int tid = threadIdx.x + blockIdx.x * blockD
分类: 其他 发布时间: 03-07 08:28 阅读次数: 0

rdkit&nlp | 运用正则表达式对smiles进行分词

对smiles化学表达式进行分词中文语料数据为一批短文本或者长文本,比如:句子,文章摘要,段落或者整篇文章组成的一个集合。一般句子、段落之间的字、词语是连续的,有一定含义。而进行文本挖掘分析时,我们希望文本处理的最小单位粒度是词或者词语,所以这个时候就需要分词来将文本全部进行分词。同样,对化学文本进行处理时我们希望处理的最小单位粒度是元素或者键def smi_tokenizer(smi): """ Tokenize a SMILES molecule or reaction "
分类: 其他 发布时间: 03-07 08:27 阅读次数: 0

CUDA & C++ | 原子操作数组

无原子操作当进行“读取-修改-写入”操作序列的时候,大量的线程修改一段较小的内存区域将带来很多麻烦。例如将d_out[i]++,这段代码先将d_out[i]的原值从储存器中读取出来,然后执行了+1操作,再将结果回写到储存器。然而多个线程在这个区域操作可能会得到错误的结果。下面例子,理想情况下每个相同的内存中的元素位置将有1000个线程进行(+1)的运算,数组中的每个位置的元素将被增加1000(次个1),单输出结果并非如此。这是因为很多线程同时读取同样的位置,然后增加同样的值,并将它们储存到显存中。#i
分类: 其他 发布时间: 03-07 08:27 阅读次数: 0

CUDA & C++ | 使用CUDA流在锁页内存中进行向量加法

CUDA流是GPU上的工作队列,队列里的工作将以特定的顺序执行。每个CUDA流可以被视为单个任务,因此我们可以启动多个流来执行多个任务,多个互相独立的内核函数同时执行。使用多个CUDA进行向量加法我们将会使用2个并行的CUDA流并执行该内核,每个流中的内核处理一半的数据量#include "stdio.h"#include<iostream>#include <cuda.h>#include <cuda_runtime.h>//Defining number
分类: 其他 发布时间: 03-07 08:27 阅读次数: 0

CUDA&numba | 使用python分别在cpu和gpu全局内存和gpu共享内存进行矩阵乘法运算

矩阵乘法导入相关的包from numba import cuda,float32import numbaimport numpy as npimport mathimport time在cpu上进行运算@numba.jit(nopython=True)def matmul_cpu(A,B,C): for x in range(A.shape[0]): for y in range(B.shape[1]): tmp = 0.
分类: 其他 发布时间: 03-07 08:27 阅读次数: 0

OpenMP&C++ | 并行规约计算

openmp规约语法#include <omp.h>#include <stdio.h>#include <iostream>#include <ctime>using namespace std;int paraSumRed() { clock_t startTime, endTime; startTime = clock();//计时开始 int sum = 0; cout << "Before:" <<
分类: 其他 发布时间: 03-07 08:26 阅读次数: 0

rdkit&python | 通过反应获得断键位点与类型

对反应事先进行mapping‘CH2:15[Mg+:19].[CH2:20]1[O:21][CH2:22][CH2:23][CH2:24]1.[Cl-:14].[OH:1][c:2]1[n:3][cH:4]c:5[cH:12][cH:13]1>>[OH:1][c:2]1[n:3][cH:4]c:5[cH:12][cH:13]1’逻辑是根据生成物与产物之间的mapping number的不同,得到断键位置与键的类型GetBondTypeAsDouble()def get_changed_b
分类: 其他 发布时间: 03-07 08:26 阅读次数: 0

python | 保存log

import loggingdef run(): logging.info('hello world')def setup_logger(fname=None, silent=False): if fname is None: logging.basicConfig( level=logging.INFO if not silent else logging.CRITICAL, format='%(name)-12s:
分类: 其他 发布时间: 03-07 08:26 阅读次数: 0

rdkit&gnn | 图神经网络分子构建图表征源码(ongoing)

创建图结构class MolGraph(object): def __init__(self): self.nodes = {} # dict of lists of nodes, keyed by node type def new_node(self, ntype, features=None, rdkit_ix=None): new_node = Node(ntype, features, rdkit_ix) self.nodes
分类: 其他 发布时间: 03-07 08:25 阅读次数: 0

rdkit&nlp | 对化学smiles进行词嵌入

对smiles化学反应处理def separate_reactant_reagent(smiles): """ Reactants and reagent separation (atom mappings) :param smi: :return: """ smiles = smiles.split(' |f')[0] # remove useless information reactant = smiles.split('>')[0]
分类: 其他 发布时间: 03-07 08:25 阅读次数: 0

deepchem&rdkit | seq2seq自动编码器生成新分子

自编码结构本文介绍了一种将分子的离散表示转化为和的方法从多维连续表示。这个模型允许我们生成新的分子以进行有效的探索和优化化合物的开放空间。对一个seq2seq神经网络进行训练现有数十万种化学结构要构建三个耦合函数:一个编码器、一个解码器和一个预测器。编码器将分子的离散表示转换为实数连续向量,解码器将这些连续向量转换回离散的分子表征。预测器估计化学物质分子的潜在连续向量表示的性质。分子的连续表示使我们能够通过在潜在空间中进行简单的操作比如解码随机向量,扰乱已知化学结构,或者分子之间的插值自动生成新颖的化学结
分类: 其他 发布时间: 03-07 08:25 阅读次数: 0

rdkit&python | 化学反应指纹应用于反应分类与相似性计算

生成反应指纹最终的指纹图是由产物和反应物的原子对指纹图的差值构成的,并通过计算物化性质将试剂包含在内from rdkit import Chemfrom rdkit.Chem import rdChemReactionsfrom rdkit.Chem import DataStructsrxn1 = rdChemReactions.ReactionFromSmarts('CCCO>>CCC=O')rxn2 = rdChemReactions.ReactionFromSmarts(
分类: 其他 发布时间: 03-07 08:25 阅读次数: 0

rdkit&python | 基于类药性规则对分子进行筛选

定量评估类药性Lipinski五规则def durglike_filter(mol): mw = Descriptors.MolWt(mol) logp = Descriptors.MolLogP(mol) hbd = rdMolDescriptors.CalcNumLipinskiHBD(mol) hba = rdMolDescriptors.CalcNumLipinskiHBA(mol) rb = Descriptors.NumRotatableBonds(m
分类: 其他 发布时间: 03-07 08:24 阅读次数: 0

python | 解决文件无法找到问题

import osdirpath = os.path.dirname(os.path.abspath(__file__))在文件前加上dirpath
分类: 其他 发布时间: 03-07 08:24 阅读次数: 0

nlp&python | 使用bert提取分子表征(ongoing)

介绍BERT在自然语言处理(NLP)领域取得了巨大的成功。使用未经标记的数据集进行训练,可以得到能学会复杂的语言表示形式的大规模模型。那么,我们可以将类似的研究方法应用于化学表示中,尤其是SMILES序列:自监督学习任务1.Masked language modeling(MASKEDLM)BERT提出的规范任务,通过训练模型来预测mask的真实身份。使用序列输出和输入的mask之间的交叉熵损失来优化任务。2.SMILES equivalence (SMILES-EQ)给定第一个smiles
分类: 其他 发布时间: 03-07 08:24 阅读次数: 0

SQLServer自增id日常用法

在SQLServer数据库中某一个表要设置自增字段,字段类型必须为数值类型,比如decimal、int、numeric、smallint、bigint、tinyint等类型,需要注意的是decimal和numeric类型如果要设置成自动增长列,则小数位数必须为0,否则设置不成功。设置自增的关键字语法是:createtable表名(字段名字段类型identity(m,n)),字段类型必须是数值型,且
分类: 编程语言 发布时间: 03-07 08:24 阅读次数: 0

python | 程序运行log输出到文件

f_result=open('result.txt', 'w') sys.stdout=f_result
分类: 其他 发布时间: 03-07 08:24 阅读次数: 0

python&hiq | 计算LiH分子的哈密顿量(ongoing)

import timefrom hiqfermion.drivers import MolecularData, PyscfCalculatorstart_time = time.time() # begin timegeometry = [['H', [0, 0, 0]], ['Li', [0, 0, 1.4]]] #两个原子间距离为1.4埃basis = 'sto-3g' #计算基multiplicity = 1 #重数charge = 0 #电荷数mole = MolecularDa
分类: 其他 发布时间: 03-07 08:23 阅读次数: 0