GPU OpenCL Reduction操作与group同步
原文地址:https://www.cnblogs.com/xudong-bupt/p/3586518.html
Reduction操作:规约操作就是由多个数生成一个数,如求最大值、最小值、向量点积、求和等操作,都属于这一类操作。
有大量数据的情况下,使用GPU进行任务并行与数据并行,可以收到可好的效果。
group同步:OpenCL只提供了工作组内的各线程之间的同步机制,并没有提供所有线程的...
OpenCL 学习step by step -数组求和(reduction)
原文地址:https://www.cnblogs.com/mikewolf2002/archive/2012/11/24/2785622.html
我们学习一下如何用opencl有效实现数组求和,也就是通常所说的reduction问题。
在程序中,我们设置workgroup size为256,kernel的输入、输出缓冲参数都用uint4的格式,这样我们原始求和的数组大小为256*4...
HDU6315(线段树维护区间最小值和区间求和)
题意
给定一个初始数组b和一个初始值全部为0的数组a,每次操作可以在给定的区间(l,r)内让a[i](l=<i<=r)加一,或者查询区间区间(l,r)中a[i]/b[i](l=<i<=r)(向下取整取整)的和。
题解
a[i]/b[i]向下取整,那么a[i]每次加1,a[i]加b[i]次就对总和的贡献加1。那么我们维护一个b数组最小值,每次更新区间最小值tree[rt...
POJ3254(状压DP)
题意
给你一个n*m的矩阵(农田),1表示可以种植,0表示不能种植。且上下和左右每个单元不能相邻。问有多少种种植方法(可以不种植)。
样例
Sample Input
2 3
1 1 1
0 1 0
Sample Output
9
1 2 3
0 4 0
种植一棵树(1,2,3,4)4种,两棵(13,14,34)3种,三棵(134)1种,零棵树1种,sum = 4+3+1+1 ...
POJ1185(状压DP)
题意
中文题。
题解
首先考虑每一行(横向)的影响,每个战队战火波及范围是两格,所以保证(state & state<<1)和(state & state<<2)都要为0。
并且每行中最多的状态不是1<<10,正因为战火会影响两格,所以一行的状态最多不超过60。所以可以预处理出每行可行的状态。
再考虑列的情况,第i行只会影响到第i-1行...
HDU6278(主席树+二分)
题意
区间第k大
代码
#include<cstdio>
#include<algorithm>
#include<string.h>
#include <string.h>
#include <math.h>
#include <vector>
using namespace std;
typedef long l...
HDU6319 2018多校第三场(单调队列)
题意
给你n个数a[N],求每个m长区间[i,i+m-1](1<=i<=n-m+1)里面的最大值maxval[i]和更新最大值的次数cnt[i](区间从左至右严格大于maxval[i]的次数)。
题解
利用单调队列可以很好的求出每个区间的maxval,但如果正向跑不好得出cnt,反相跑的话发现每次队列中的值就是cnt。因为维护的是一个单调递减队列,每一次加入的值小于队尾的值就直接...
POJ2823(单调队列,二分出队列)
题意
给你n个数和一个区间的长度k,求从前往后每个[i,i+k-1] (1<=i<=n-k+1)区间的最大值和最小值。
题解
用单调队列搞一搞,然后。。。然后就超时了,学习了一下可以二分出队列,就去弄了一下二分(其实k不大的话二分也没啥用啊)。然后。。。然后就超时了。
好吧为什么G++就是会超时呢?用C++就过了。
代码
#include<cstdio>
#i...
HDU6336 2018多校第四场(规律,矩阵前缀和)
题意
给你一个由长度为L的数组A构造的无限大矩阵M,矩阵中的数构造方式如下
int cursor = 0;
for (int i = 0; ; ++i) {
for (int j = 0; j <= i; ++j) {
M[j][i - j] = A[cursor];
cursor = (cursor + 1) % L;
}
}
输入...
HDU6333 2018多校第四场(莫队+组合数)
题意
T组样例,给两个数n,m,求下式。
题解
先观察一手杨辉三角找找规律
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
可以得到
f(n,m+1)=f(n,m)+C(n,m+1)
f(n+1,m)=2f(n,m)-C(n,m).
抽象的看由(n,m)可以得到(n-1,m)(n+1,m)(n,m-1)(n,m+1)
所以可以用莫队来解决。
#includ...
BZOJ2038 小Z的袜子(莫队)
题意
BZOJ2038
题解
询问区间(L, R)选两只袜子颜色相同的概率
ans = C(a,2) + C(b,2) + C(c,2) + ... / C(R-L+1, 2)
找规律可得 (a^2 + b^2 + c^2 - a - b - c) / (R - L + 1)(R - L)
即(a^2 + b^2 + c^2 - (R - L + 1) ) / (R - L + 1)...
阿里、百度、搜狐等公司社招面试记录与总结
这个跳槽季大概面试了近十家公司,也拿到了几个Offer,现在面试告一段落,简单总结下面经,
我现在主要的方向是Java服务端开发,把遇到的问题和大家分享一下,也谈谈关于技术人员如何有方向的提高自己,做到有的放矢。
一、面试遇到的问题
1.百度
百度最近真是炙手可热,贴吧事件刚结束,医疗竞价排名又闹得沸沸扬扬,一些论坛上连带程序员都开始招黑了,友谊的小船可是说翻就翻。
说...
总结记录一下我的第一次社招面试经历
已经凌晨2点多了,看来今天是失眠了,反正睡不着,写篇日记总结一下我的第一次社招面试经历吧。2015年12月1日办理了离职手续,离开了万通中心,也算是和我的第一个东家正式说了再见,其实还是很喜欢国贸的,这是个美妙的地方,容纳着很多金融界人才们的梦想,每每晚上走到这里你会感叹帝都的夜景好美,只可惜这里的多数人都顾不上欣赏这里的风景,每个人都生活在压力下,成为了金钱的奴隶,但这并不是什么坏事,因为他们上...
数据结构--树--线索二叉树(中序,前序,后序)
https://blog.csdn.net/DouBoomFly/article/details/71572601
线索二叉树
在遍历二叉树的时候,会有许多空指针域,这些空间不存储任何事物,白白浪费了内存的资源。
那么在做遍历的时候,提前记录下每个结点的前驱和后继,这样就更加节约了时间。
[ lchild ] [ LTag ] [ data ] [ RTag ...
java 求解字符串中第一次出现的字符的位置
题目:
在字符串中找出第一个只出现一次的字符的位置,如输入“abaccdeff”,则输出“2”。
1
解法:以空间换时间,借助Hashmap实现
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Solution {
public int FirstNotRepe...
查找一个字符串中第一个只出现两次的字符。要求 时o(n) 空o(1)
思路
既然空间复杂度要求O(1),那么我们只能建立常数倍的空间。所以又因为是字符,所以可以使用一个大小为256的数组。用它来当哈希表。所以我的解法中申请了一个pair的键值对的数组。first保存的是出现的次数,second保存的是出现的该字符第一次出现在字符串中的下标。所以我们可以遍历一边字符串,我们就可以得到所以字符出现的次数和该字符第一次出现的下标。再遍历一次数组,定义一个min变量...
给定一个字符串,查找该字符串中第一个重复出现的字符索引。要求:时间复杂度为O(n)。
分析:如果没有给出复杂度的要求,那么本题就比较好解决了,通过两层for循环就可以得出,时间复杂度也就是O(n^2)。既然题目规定了时间复杂度,那就要通过牺牲空间来换时间的方法了。
实现
1.通过增加两个大小为256的数组(ASCII表的大小)num和indexs,其中第一个数组num存储字符串中每个字符出现的次数,数组index中存储对应字符在字符串中第一次出现的索引。
import ja...
Java获取字符串中某个字符串第一次出现的位置(索引)
今天工作,需要将一串信息,包括用户名、密码、邮箱的字符串,将用户名和邮箱截取出来。
原字符串为:yulv # 123456 # [email protected]
此处用Matcher和Pattern类会非常简单,这两个类是利用正则表达式匹配查找的相关类,详细可以参见java Pattern和Matcher详解
我的代码如下:
public class MatcherTe...
MyEclipse10配置PyDev进行Python开发
MyEclipse10配置PyDev进行Python开发
1、下载PyDev 2.7.1 链接如下: http://jaist.dl.sourceforge.net/project/pydev/pydev/PyDev%202.7.1/PyDev%202.7.1.zip
2、下载/python-2.7.3 链接如下:
http://www.python.org/ftp/python...
MyEclipse10中配置开发Python所需要的PyDev 绝对靠谱 不忽悠!
https://sourceforge.net/projects/pydev/files/
在NLP(自然语言处理)这个领域中,Python具有良好的声誉,于是也想学习一下。首先第一步就是需要在计算机上配置Python环境。由于Python自带的编辑器太简单,使用起来不顺手,于是就考虑在相对熟悉的MyEclipse中配置PyDev来进行Python开发。
在网上搜了一下配置方法,发现介绍基于M...
今日推荐
周排行