- 博客(32)
- 收藏
- 关注
原创 Windows下PyTorch开发环境搭建
1. 基于CPU的开发环境前置条件是已经安装好python3(建议安装Anaconda)登陆官网,选择相应版本、Windows、Pip安装、python、无CUDA复制下面的命令行pip install torch1.6.0+cpu torchvision0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html打开Anaconda Prompt,等待安装完毕- 进入python,输入import torch测试是否安装成功,
2020-09-16 15:22:30
888
原创 python编程之numpy(3)-数学和矩阵运算
1. 元素乘除arr = np.array([[1., 2., 3.], [4., 5., 6.]])arr * 2array([[ 2., 4., 6.], [ 8., 10., 12.]])arr * arrarray([[ 1., 4., 9.], [16., 25., 36.]])1 / arrarray([[1. , 0.5 , 0.33333333], [0.25 , 0.2
2020-09-12 15:06:20
434
原创 python编程之numpy(2)-索引、切片
1. 基本操作# 取第二行元素arr = np.array([[1., 2., 3.], [4., 5., 6.]])arr[1]array([4., 5., 6.])# 切片取部分元素arr[0, 0:2]array([1., 2.])2. 根据条件取部分元素zimu = np.array(['A', 'B', 'C', 'A', 'D', 'B', 'A'])data = np.random.randn(7, 4)dataarray([[ 0.34553564, 0.
2020-09-05 15:45:54
212
原创 python编程之numpy(1)- 创建矩阵或向量
1. 基本示例# 创建矩阵np.array([[1, 2, 3], [4, 5, 6.1]])array([[1. , 2. , 3. ], [4. , 5. , 6.1]])只要有一个是浮点数,其它元素自动提升为浮点数2.指定元素类型# 定义类型np.array([1, 2, 3], dtype=complex)array([1.+0.j, 2.+0.j, 3.+0.j])3.基于步长构造序列 arange0-n 的向量arr1 = np.arange(10)
2020-07-20 20:15:17
2511
原创 OpenCL编程(2)- 程序基本流程,以向量相加为例
下面以一个OpenCL的HelloWorld——向量相加,来说明OpenCL程序的基本流程1.查询平台信息OpenCL标准中定义平台模型的概念,一个平台会指定一个主机(host)和对应的一个或多个设备(device)处理器。比如如果是一个CPU+GPU的环境,则CPU是host,GPU是device查询平台信息分为两步,均调用clGetPlatformIDs接口第一步,查询平台个数第二部,查询平台对象示例代码如下: cl_int iStatus = 0; // 函数返回状态 cl_
2020-07-14 20:13:34
377
原创 OpenMP编程(6)—数据作用域(private、firstprivate、lastprivate、shared、default、reduction、copyin、threadprivate)
数据作用域说明:数据作用域定义了程序串行部分中的数据变量中的哪些以及如何传输到程序的并行部分,定义了哪些变量对并行部分中的所有线程可见,以及哪些变量将被私有地分配给所有线程。数据作用域子句可与多种指令(如parallelL、for、sections等)一起使用,以控制封闭区域变量的作用域OpenMP基于共享内存编程模型,所以大多数变量在默认情况下是共享的1. parivate2. firstprivate3. lastprivate4. shared5. shared6. defaul
2020-07-04 21:27:05
3553
原创 OpenMP编程(5)—同步结构(master、critical、barrier、atomic、flush、ordered)
OpenMP的同步结构(Synchronization Constructs)指令包master、critical、barrier、atomic、flush、ordered等1. master指令master指令指定的区域只由主线程执行,团队中其他线程都跳过该区域代码本指令没有隐含的barrier,即其他线程不用再master区域结束处同步,可立即执行后续代码。代码示例如下#pragma omp parallel { #pragma omp master { printf("i
2020-07-02 19:53:51
6673
原创 OpenMP编程(4)—sections、single指令
1. sections指令1.1 sections指令用途SECTIONS指令用于非迭代的多线程共享区。它指定各个section代码段分配给一组线程中部分线程。多个独立的section指令嵌套在sections指令中,每个section由于其中一个线程执行一次。不同的section可以由不同的线程执行。当然对于一个线程来说,如果它运行足够快,是有可能执行多个section。1.2 sections语法格式#pragma omp sections [clause ...] newline
2020-07-01 13:13:56
3100
原创 OpenMP编程(3)—for指令(含schedule、nowait)
1. for指令用途for指令指定紧随其后的循环迭代由一组线程并行执行。2. for指令语法格式#pragma omp for [clause ...] newline schedule (type [,chunk]) ordered private (list) firstprivate (list) lastprivate (li
2020-07-01 09:58:06
3591
原创 OpenMP编程(2)—并行区域(Parallel Region)
1. 并行区域(Parallel Region)概念并行区域是由多个线程执行的代码块,是基本的OpenMP并行结构。当一个线程到达并行指令时,它将创建一组线程并成为主(master)线程,其线程号为0。从这个并行区域开始,代码被复制,所有线程都将执行该代码。在并行区域的结尾有一个隐含的屏障(barrier),只有主线程继续执行超过此点。如果任何线程在一个并行区域内终止,那么该组的所有线程都将终止。2. 并行区域的代码示例 int nthreads, tid; // fork一组线程,并
2020-06-30 19:50:58
1873
原创 OpenMP编程(1)—基础概念
OpenMP是什么一种应用程序接口(API),可用于对程序显式地设置多线程、基于共享内存地并行处理通过来自硬件和软件行业、政府和学术界的相关方之间的协作,实现多处理的开放规范包含三种主要的API组件:编译指令(Compiler Directives)、运行时库(Runtime Library Routines)、环境变量(Environment Variables)OpenMP不是什么不能用于分布式内存并行系统不需要由所有供应商来统一实现不能保证最有效地利用共享内存OpenMP的目标
2020-06-29 23:55:40
534
原创 MPI编程(4)—集合通信MPI_Bcast、MPI_Gather、MPI_Scatter、MPI_Reduce
1. MPI_Bcast:广播消息MPI_Bcast用于将一个进程的buffer中的数据广播到其他进程的相同buffer变量中代码示例如下: int rank, data[10]; MPI_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0) { for (int i = 0; i < 10; ++i) { data[i] = i + 1; } } //进程0广播数据
2020-06-22 20:24:38
5899
原创 MPI编程(3)—点对点通信(阻塞式MPI_Send/MPI_Recv和非阻塞式MPI_Isend/MPI_Irecv)
1.MPI的两种点对点通信方式MPI的点对点通信包括阻塞式和非阻塞式:阻塞式通信调用 MPI_Send/MPI_RecvMPI_Send不会返回,调用MPI_Send发送数据的进程会被阻塞,直到缓存为空MPI_Recv不会返回,调用 MPI_Recv接收数据的进程会被阻塞,直到缓存被填充非阻塞式通信调用 MPI_Isend/MPI_Irecv调用MPI_Isend或MPI_Irecv会马上返回2. MPI_Send/MPI_Recv代码示例MPI_SEND/MPI_RECV的代码示例
2020-06-20 23:43:11
8582
1
原创 MPI编程(2)—window下开发环境搭建
1. 安装包下载MPICH是MPI标准的一种实现,具有高性能和广泛地可移植性,它在10台最顶级(2016年6月的排名)的超级计算机的9台中使用。遗憾的是,MPICH在2013年就停止了对windows版本的更新,最新版本停留在了 mpich2-1.4.1,可以下载供学习用。微软官网提供了MS-MPI,MS-MPI基于mpich2实现,与mpich2兼容,而且一直在更新。MS-MPI中包含了mpich2实现的所有功能,http://www.mpich.org官网也指向该版本,下面就以该版本为例来搭建win
2020-06-20 09:45:39
961
原创 从调用动态库带stl接口崩溃来区分/MDd和/MTd
本文的开发环境是Windows下的Visual Studio。1. 调用动态库带stl的接口引起的程序崩溃1.1 动态库实现接口动态库实现接口很简单,就是对传入的vector中增加元素void MyDll::AddVecElement(vector<int>& vecTest){ for (int i = 0; i < 100000; ++i) { vecTest.push_back(i); }}1.2 调用者代码调用者声明了个vector,并调用动态
2020-06-18 19:21:01
564
原创 MPI编程(1)—基础概念
什么是MPIMessage Passing Interface的简称,信息传递接口定义了消息传递库的协议,本身是接口而不是程序库通常用于分布式存储系统或高性能计算目标可移植:可运行在不同的机器或平台上可扩展:可运行在成千上万的计算节点上灵活性:可接口隔离MPI库的开发者和使用者...
2020-06-17 23:06:03
572
原创 如何评估并行算法性能
1. 加速比(SpeedUp Factor)程序加速比:S(p)=TsTp程序加速比 :S(p)=\frac{_{Ts}}{{_{Tp}}}程序加速比:S(p)=TpTsTs:最优串行算法的执行时间_{Ts}:最优串行算法的执行时间Ts:最优串行算法的执行时间Tp:p个处理器的执行时间_{Tp}:p个处理器的执行时间Tp:p个处理器的执行时间线性加速比:S(p)=p,理论上最大的加速比:不是所有的计算可以并行;因为同步并行处理需要额外计算;不同处理器间需要通信超级线性加速比:S(p)>
2020-06-16 13:10:30
860
原创 初识并行计算
什么是并行计算通过多个处理器一起工作去解决某个问题。传统程序编写后是串行计算的,而并行计算则需要通过多个计算资源解决计算问题。并行计算与分布式计算的区别并行计算:同一时间发生多项不同活动,同一应用规模大而需分散到多个核心或处理器上,通常用于科学计算分布式计算:不同活动跨越多系统或服务器,更关注并发和资源共享,通常用于商业领域为什么需要并行计算1.节省计算时间;2.解决大规模问题,特别是单机无法解决的问题3.更好地利用底层并行硬件...
2020-06-15 20:09:55
538
原创 OpenCL编程(1)- 开发环境搭建(NVIDIA GPU+Win10篇)
基于NVIDIA GPU的OpenCL开发环境搭建的步骤如下:1.下载安装显卡驱动使用鲁大师或驱动精灵下载安装与显卡型号相适应的显卡驱动并安装,若采用默认路径安装,则在路径C:\Program Files\NVIDIA Corporation下可以看到安装好的驱动程序通过CPU-Z查看显卡是否支持OPENCL2. 下载CUDA并安装登录NVIDIA官网下载CUDA并安装,本人下载的是本地安装包,若采用默认安装路径,则安装完成后可在路径C:\Program Files\NVIDIA GPU Co
2020-06-13 00:00:04
3229
原创 初识redis
开源的内存数据结构存储,可用作数据库、缓存和消息代理支持多种数据结构,如字符串、哈希、列表、集合、可进行范围查询的排序集合、位图、超日志、带半径查询的地理空间索引以及数据流Redis具有内置的复制、Lua脚本、LRU逐出、事务和不同级别的磁盘持久性,并通过Redis Sentinel和带有Redis集群的自动分区提供高可用性可进行原子操作,如追加字符串;增加哈希值;追加元素到列表;计算集合的交集、并集和差集;或获取排序集合中排名最高的元素。Redis使用数据集驻留内存以保证优异性能,也可以通过每隔.
2020-06-09 11:43:31
117
原创 搭建windows下可远程访问的jupyter notebook
1. 下载安装anaconda下载最新版本anaconda按照步骤安装好anaconda2. 生成jupyter配置文件在开始菜单中打开Anaconda Prompt输入jupyter notebook --generate-config,生成配置文件记下配置文件路径3. 生成密码在Anaconda Prompt输入python,根据以下代码通过密码生成秘钥4. ...
2020-02-12 12:31:19
872
原创 基于卷积神经网络的查询意图检测【论文笔记】
原文:Query Intent Detection using Convolutional Neural Networks主要贡献:使用卷积神经网路来提取查询向量表示作为查询分类的特征使用该特征来对查询意图分类能有效地检测出查询意图,具有较高的查准率和查全率导言现代搜索引擎为了满足用户的搜索需求,需深入了解用户的查询,识别查询背后的意图。例如,查询“美国总统”将返回巴拉克奥巴马作...
2020-01-13 19:47:00
459
原创 利用点击数据学习Web搜索的深层语义(深度学习)模型【论文笔记】
原文:Learning deep structured semantic models for web search using clickthrough data主要贡献:提出了基于深度学习结构的潜在语义模型,能够将给定查询和文档投影到一个公共的低维空间中,在该空间中两者的相关性很容易计算为空间中的距离;提出了一种单词散列(word hashing)的技术适应大规模Web搜索应用。在真...
2020-01-08 00:08:15
339
原创 Spark的Structured Streaming代码实例(Scala版)
基于scala的StructuredStream开发示例如下:import org.apache.spark.sql.functions._import org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.types._import org.apache.spark.sql.expressions.MutableAggr...
2020-01-05 23:04:23
255
原创 python访问InfluxDB方法及代码封装
封装了python方位InfluxDB的类,代码如下:# coding=utf-8import timeimport datetimefrom influxdb import InfluxDBClientclass InfluxDBVisitor(): def __init__(self): self.host = "XXX.XXX.XXX.XXX" ...
2020-01-05 22:49:40
523
原创 python访问TimeScaleDB方法及代码封装
封装了一个通过python访问TimeScaleDB的类,代码如下:# 导入依赖包# !/usr/bin/python3import timeimport datetimeimport psycopg2class TimeScaleDBVisiter(): def __init__(self): self.beginTime = datetime.datet...
2020-01-05 22:38:53
1198
原创 Spark的Structured Streaming代码实例(python版)
基于python的StructuredStream开发示例如下:from pyspark.sql import Row, SparkSessionfrom pyspark.sql.functions import explodefrom pyspark.sql.functions import splitfrom pyspark.sql.types import *from pyspar...
2020-01-05 18:09:30
483
原创 Spark的Spark Streaming代码实例(python版)
以下为基于python开发的SparkStreaming示例:from pyspark import SparkContextfrom pyspark.streaming import StreamingContextsc = SparkContext("local[2]", "TestStraming")ssc = StreamingContext(sc, 5)#作为TCP客户端...
2020-01-05 17:52:19
683
原创 通过IntelliJ IDEA编写及编译spark(scala)程序
通过IntelliJ IDEA编写及编译spark(scala)程序的步骤如下:创建工程选择File->New->Project,弹出如下界面选择Scala下的SBT,点击Next,进入新工程设置界面设置工程名称,可选择scala版本,点击Finish完成新工程创建如下添加程序文件右键左侧导航栏目录结构src->main->scala,弹出菜单如下...
2020-01-05 16:46:51
1374
原创 python创建TCP服务器
python创建TCPSever,python2和python3基本相同,除了以下区别:python2引用SocketServer库,python3引用socketserver库发送字符串,python2可直接调用self.wfile.write(content),python3需调用self.wfile.write(content.encode()),否则会出现需要传入参数错误:“Type...
2020-01-05 16:21:40
494
原创 windows下spark环境搭建
在windows下spark的环境搭建步骤如下:下载 jdk-8u131-windows-x64.exe。若安装路径为E:\Java\,则增加如下的环境变量:JAVA_HOME=E:\Java\jdk1.8.0_131CLASSPATH=.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;PATH中增加%J...
2020-01-05 15:51:12
264
原创 基于卷积神经网络的Web搜索语义表示学习【论文笔记】
基于卷积神经网络的Web搜索语义表示学习原文: Learning Semantic Representations Using Convolutional Neural Networks for Web Search该文章提出了基于CNN的潜在语义模型,通过搜索查询和网页文档学习低维语义向量。首先通过卷积最大池化操作对词n-gram级的局部上下文进行建模,然后词序列的显著局部特征,组合成全局特...
2020-01-04 22:32:09
458
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人