ray

使用Python玩转GPU

旧街凉风 提交于 2020-05-04 09:32:31
问题 随着机器学习对模型运算速度的需求越来越强烈, 一直想进行GPU编程,但一直以来这些都是c++的专利 一想到c++里的各种坑,就提不起劲来,毕竟这样来来回回填坑的投入产出,生产效率就会大打折扣 解决方案 让人欣喜的是,随着Python阵营的不断发展壮大,使用python进行GPU编程也越来越便捷了 那么具体有些什么样的包,能针对GPU做些啥事呢? 看看一些具体的代码,就能大概明白: 首先是pycuda,这是它的一个例子: mod = SourceModule(""" __global__ void multiply_them(float *dest, float *a, float *b) { const int i = threadIdx.x; dest[i] = a[i] * b[i]; } """) 由上面的代码我们可以看出,pycuda将调用gpu的c++代码做了包装,可以在python里直接使用 再看看numba: @cuda.jit def increment_by_one(an_array): pos = cuda.grid(1) if pos < an_array.size: an_array[pos] += 1 我们可以发现,numba更进一步,直接使用装饰器的办法让调用GPU的过程更简洁方便 再看看cupy: import numpy as np

学认识了我该做的事如果

江枫思渺然 提交于 2020-05-03 17:59:49
sdfsdf 服务网格作为一个改善服务到服务通信的专用基础设施层,是云原生范畴中最热门的话题。随着容器愈加流行,服务拓扑也频繁变动,这就需要更好的网络性能。服务网格能够通过服务发现、路由、负载均衡、心跳检测和支持可观测性,帮助我们管理网络流量。服务网格试图为无规则的复杂的容器问题提供规范化的解决方案 将供应链搬出中国,似乎成了过去两三个月新冠肺炎疫情衍生出的热门话题。 年初新冠肺炎疫情爆发,让中国供应链的生产活动几乎完全停顿,影响席卷全球:苹果的新 5G 有可能因疫情而延期推出,特斯拉新款芯片无法及时交付、陷入“芯片门”纠纷。其余像三星、小米、索尼等著名跨国企业,均受到供应链停摆的影响。 因此,ywudcnz.answers.yahoo.com/question/index?qid=20200427205935AAkrXNC?ZB0=43lys=36p answers.yahoo.com/question/index?qid=20200427205947AAF9GD5?EH4=77szw=52n in.answers.yahoo.com/question/index?qid=20200427205947AAF9GD5?XN3=76qki=46h malaysia.answers.yahoo.com/question/index?qid=20200427205947AAF9GD5

vue cesium 加载倾斜摄影数据并在上面添加自定义标注

余生长醉 提交于 2020-05-02 01:43:48
在main.js引入 import Cesium from 'cesium/Cesium' import '../node_modules/cesium/Build/Cesium/Widgets/widgets.css' Vue.prototype.Cesium = Cesium; // 以下是组件内容 <template> <div class="cesium-wrap"> <div id="cesiumContainer"></div> <el-form ref="form" :model="form" label-width="80px" class="cesiumForm" v-if="showForm" size="mini"> <el-form-item label="id"> <el-select v-model="form.id" placeholder="请选择" @change="changeLing"> <el-option v-for="item in lingList" :key="'ling' + item.id" :label="item.name" :value="item.id"></el-option> </el-select> </el-form-item> <el-form-item label="名称"><el-input v-model=

Cesium坐标系及坐标转换详解

最后都变了- 提交于 2020-05-01 11:37:03
前言 Cesium项目中经常涉及到模型加载、浏览以及不同数据之间的坐标转换,弄明白Cesium中采用的坐标系以及各个坐标系之间的转换,是我们迈向三维GIS大门的前提,本文详细的介绍了Cesium中采用的两大坐标系以及之间转换的各种方法。 Cesium中的坐标系 Cesium中常用的坐标有两种WGS84地理坐标系和笛卡尔空间坐标系,我们平时常用的以经纬度来指明一个地点就是用的WGS84坐标,笛卡尔空间坐标系常用来做一些空间位置变换如平移旋转缩放等等。二者的联系如下图。 其中,WGS84地理坐标系包括 WGS84经纬度坐标系(没有实际的对象)和 WGS84弧度坐标系(Cartographic); 笛卡尔空间坐标系包括 笛卡尔空间直角坐标系(Cartesian3)、平面坐标系(Cartesian2),4D笛卡尔坐标系(Cartesian4)。 WGS84坐标系 World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统,坐标原点为地球质心,其地心空间直角坐标系的Z轴指向BIH (国际时间服务机构)1984.O定义的协议地球极(CTP)方向,X轴指向BIH 1984.0的零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系。我们平常手机上的指南针显示的经纬度就是这个坐标系下当前的坐标,进度范围[-180,180],纬度范围[-90,90]。

Cesium-空间分析之通视分析(附源码下载)

纵饮孤独 提交于 2020-05-01 07:09:47
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品。它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以及多平台,易用性上都有高质量的保证。 通视分析 通视分析是指以某一点为观察点,研究某一区域通视情况的地形分析。利用DEM判断地形上任意两点之间是否可以互相可见的技术方法,分为视线通视分析和可视域分析,前者判断任意两点之间或者多点之间能否通视,后者对于给定的观察点,分析观察所覆盖的区域。 其中可视域是从一个或者多个观察的可以看见的地表范围。可视域分析是在栅格数据数据集上,对于给定的一个观察点,基于一定的相对高度,查找给定的范围内观察点所能通视覆盖的区域,也就是给定点的通视区域范围,分析结果是得到一个栅格数据集。在确定发射塔的位置、雷达扫描的区域、以及建立森林防火瞭望塔的时候,都会用到可视域分析。可视域分析在航海、航空以及军事方面有较为广泛的应用。 本章节首先处理这两种分析中的较为简单的通视分析,即给定的任意两点之间是否可见。 简单的认知 先上几张图,对于通视分析有个基本的直观了解,图片均来源于百度,如有侵权,请告知。 Cesium中通视分析的做法 原理:采用射线法来判别两点之间是否有其他物体所遮挡(比如Entity、Primitive、Terrain、3DTiles等)

[总结]2020年1月 OI学习/刷题记录

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-28 10:38:01
2020/1/1 UOJ #275. 【清华集训2016】组合数问题 Lucas+数位DP UOJ #276. 【清华集训2016】汽水 二分答案+点分治 Luogu P3690 【模板】Link Cut Tree (动态树) LCT UOJ #274. 【清华集训2016】温暖会指引我们前行 LCT 2020/1/2 UOJ #277. 【清华集训2016】定向越野 计算几何+最短路 UOJ #285. 数据分块鸡 DP+决策单调性+可持久化线段树+二分 UOJ P1501 [国家集训队]Tree II LCT Luogu P5887 Ringed Genesis 模拟+BFS Luogu P2147 [SDOI2008]洞穴勘测 LCT 2020/1/3 Luogu P5891 Fracture Ray 暴力+线段树(Hacked) UOJ #336. 【清华集训2017】无限之环 费用流 UOJ #337. 【清华集训2017】Hello world! 分块+并查集 UVA 10843 Anne's game Prufer 2020/1/4 UOJ #338. 【清华集训2017】小 Y 和地铁 搜索 Hello 2020 A B C rank1144 2020/1/5 UOJ #339. 【清华集训2017】小 Y 和二叉树 贪心 UOJ #340. 【清华集训2017】小

ML-Agents(八)PushBlock

℡╲_俬逩灬. 提交于 2020-04-28 10:30:23
目录 ML-Agents(八)PushBlock 一、前言 二、环境与训练参数 三、场景基本结构 四、代码分析 Agent脚本 Agent初始化 Agent重置 Agent动作反馈 其他 五、训练 训练配置参数 训练过程 六、总结 ML-Agents(八)PushBlock 一、前言 我们这次来学习一个新的实例——Push Block。这个示例的效果如下: 如图可以看到,这个示例训练的效果就是让agent把白色的方块推到场景中绿色条形区域就算完成任务。注意每完成一次任务,重置的时候地面会显示绿色,表明此次agent成功将白色方块推到目标区域,若失败,则地面会显示一下红色。 我们可以先根据之前示例,想一下这个agent应该如何进行训练。首先可能想到的应该是利用Viusal Observations来对这个功能进行训练,其实本质上这个示例和Grid World有点相似,利用 Render Texture Sensor 或者 Camera Sensor 来对其进行训练。实际上官方在Push Block示例中,也有个场景叫 VisualPushBlock ,这个场景就是想尝试使用 Camera Sensor 来对agent进行训练,你还会发现它使用的是第一人称摄像机,当然官方并没有把这个训练完成(即没有训练模型)。 这个示例主要我们可以学习到的就是如何利用射线传感器进行数据采集,即 Ray

Unity 随机地图房间通道生成

こ雲淡風輕ζ 提交于 2020-04-21 13:19:41
之前的博客中已经说了随机房间生成: https://www.cnblogs.com/koshio0219/p/12604383.html 但实现房间生成只是整个地图生成最初最简单的一步。下面讨论如何随机生成连接房间的通道。 房间的通道一般要满足以下特性和特征: 1.保证所有随机生成的房间都可以通过通道从起点到达终点,不出现未连接或连接中断的情况。 2.通道在生成的过程中不能穿过房间内部。 3.考虑是简洁直接的连接方式,还是更为曲折的通道。 现在,眼前出现了很多随机生成的房间,那么问题是:到底哪两个房间需要连接一条通道呢,如果以最快的速度得出所有需要连接的通道列表呢? 这时,我们先不用将空间中生成的这些房间仅仅当前是房间来看待,实质上它们就是分布在空间中的一些点的集合,每一个点都能求出当前离它们最近的点是哪一个, 那么一个非常简单的算法是,我们可以记录两个列表:已经处于连接状态的点的列表(闭合列表),尚未取得连接的点的列表(开放列表)。 先随机一个点作为起点,连接离该起点最近的点,将起点和改点置入闭合列表中,再以第二个点作为起点连接最近的点,以此方式不断循环,直至所有的开放列表清空,所有通道的连接数据即全部计算完毕。 上面这样虽然可以很快得出所有连接的通道列表,但缺乏连接的随机性,也无法产生分支路径,游戏性很低。 因此,可以考虑给每个连接的点增加额外分支的概率

线性渐变

倖福魔咒の 提交于 2020-04-20 10:12:34
渐变   渐变是由两种或多种颜色之间的渐进过渡组成,它是一种特殊的图像类型,分为线性渐变和径向渐变,这两类渐变还会细分为单次和重复两种。渐变图像与传统图像相比,它的优势包括占用更少的字节,避免额外的服务器请求,调试成本更低等。在平时,发挥自己的想象,利用渐变可以创造出许多奇妙的视觉特效。 一、线性渐变   线性渐变会使用linear-gradient()函数,可沿着一条梯度线(gradient line),从某一边或某个角度绘制渐变背景,该背景的默认方向是从元素顶部到底部,如下图所示。 div { background: linear-gradient(#FC0, #F60); } 1)梯度线   梯度线会穿过元素的中心点,沿顺时针旋转,如下图所示,旋转了50°。梯度线的起点是元素最近的顶点和梯度线的垂线的交叉点,终点是元素最远的顶点和梯度线的垂线的交叉点,注意,垂线和梯度线都要在同一象限内。象限是指平面直角坐标系中的横轴和纵轴所划分的四个区域。   图中的0%和100%分别表示第一个和最后一个色标的位置,百分数参照的是梯度线的长度。注意,梯度线上的各点颜色会沿着垂直线向外延伸,如下图所示。 2)方向   梯度线的方向可以结合关键字to向四条边(top、bottom、left和right)延伸,默认是to bottom。下面的样式会修改成向右渐变,效果如下图所示。 div {

【Ray Tracing in One Weekend 超详解】 光线追踪1-5

我只是一个虾纸丫 提交于 2020-04-18 08:22:34
一天一篇,今天来学习第7章 (散射)漫反射材质 Chapter7: Diffuse Materials Preface 从这一章开始,我们将通过光线追踪制作一些逼真的材质。 我们将从漫射(磨砂)材料开始。 先看效果 :    正文 不发光的漫射物体仅仅呈现其周围的颜色,但是它们用它们自己的固有颜色来调和这些色彩。 从漫反射表面反射的光方向是随机的,比如:如果我们将三条光线发送到一个漫反射表面,它们将各自具有不同的随机行为: 引用书上的图:                           diagram 7-1 它们也可能被吸收而不是被反射。 表面越暗,光线越可能被吸收。 (这就是为什么它是黑的!) 任何随机化方向的算法都会产生看起来很粗糙的表面。 最简单的方法之一是理想的漫反射表面。 原文还提到了 Lambertian 发射面 我们来看一下,如何实现上述功能 图说一切:                            diagram 7-2 图解 先简述一下各个原件:左黄球是以eye为中心的一个单位圆,右黄球是一个和左黄球一样的圆,至于怎么生成的,后续说 左黄球上有两个随机点,蓝紫色的s1,红紫色的s2,对应于右黄球上为s1' 和s2' 红色为视线;深绿色为反射线;三个黑球为漫反射球体,黑色只是用颜色来区分各个原件的功能,并不是黑色的漫反射球(画完才发现