小编Ash*_*ppa的帖子

主力:删除键值数组中的重复项

我有一对大小相等的数组,我将它们称为键和值。

例如:

K: V
1: 99
1: 100
1: 100
1: 100
1: 103
2: 103
2: 105
3: 45
3: 67
Run Code Online (Sandbox Code Playgroud)

键已排序,并且与每个键关联的值也已排序。如何删除与每个键及其对应键关联的重复值?

也就是说,我想将上面的内容压缩为:

1: 99
1: 100
1: 103
2: 103 <-- This should remain, since key is different
2: 105
3: 45
3: 67
Run Code Online (Sandbox Code Playgroud)

我查看了Thrust中可用的流压缩函数,但找不到任何可以实现此目的的函数。Thrust 可以做到这一点吗?或者我是否需要编写自己的内核来标记模板中的重复项,然后删除它们?

cuda thrust stream-compaction

5
推荐指数
1
解决办法
3819
查看次数

CUDA:在数组中获取最大值及其索引

我有几个块,每个块在整数数组的单独部分上执行.例如:阻塞一个从数组[0]到数组[9],阻塞二从数组[10]到数组[20].

我可以获得每个块的数组最大值索引的最佳方法是什么?

示例块a a [0]到[10]具有以下值:
5 10 2 3 4 34 56 3 9 10

所以56是指数6的最大值.

我无法使用共享内存,因为数组的大小可能非常大.因此它不适合.是否有任何图书馆允许我这么快?

我知道减少算法,但我认为我的情况不同,因为我想得到最大元素的索引.

cuda

5
推荐指数
1
解决办法
3864
查看次数

将值分配给指向C中记录的指针中的键

对不起,如果标题有点令人困惑.我正在做的是创建一个结构,如:

struct record
{
    int value;
    int key;
};
Run Code Online (Sandbox Code Playgroud)

然后使用typedef调用指针来记录"Item",如下所示:

typedef struct record* Item;
Run Code Online (Sandbox Code Playgroud)

基本上我正在跟踪Robert Sedgewick(第三版)在C语言中如何在C语言中完成它,如果有人碰巧有这本书的话.

我遇到的麻烦是从控制台读取一个值,然后将其分配给键.这就是我所拥有的,以及我得到的错误:

void setKey(Item *element, int x)
{
    element->key = x;
}

void standInput(Item A[], int length)
{
    int i;
    int x;
    for(i = 0; i < length; i++)
    {
        printf("Enter a value for spot %i: ", i+1);
        scanf("%d", &x);
        setKey(A[i], x);
    }
}

gcc Item.h
Item.h:33:6: warning: conflicting types for ‘setKey’
Item.h:23:3: note: previous implicit declaration of ‘setKey’ was here
Run Code Online (Sandbox Code Playgroud)

如果我能在正确的方向上轻推,我真的很感激.当Item只是简单的整数时,我得到了这个任务的程序,但现在我正在尝试使用Item-> Key,我有点失落:)谢谢!

如果有人需要我认为不必要的代码的任何其他部分,我会在看到请求后立即发布.

修订:我将setKey函数移到了standInput之上,因此编译错误消失了.我得到的是一个段错误,所以我仍然分配错误:)

c struct pointers

5
推荐指数
1
解决办法
179
查看次数

CUDA nvcc编译器设置Ubuntu 12.04

我在64位Ubuntu 12.04机箱上成功安装了cuda 5的nvidia驱动程序和工具包(但不是样本).即使我以前跑过,样本也无法安装

$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

我似乎无法找到nvcc.我跑了

$ export LD_LIBRARY_PATH =/usr/local/cuda-5.0/lib:/usr/local/cuda-5.0/lib64: $ LD_LIBRARY_PATH

nvcc -v报告找不到编译器:

nvcc -V没有找到命令'nvcc',你的意思是:来自包'vlc-nox'命令'nvlc'(宇宙)nvcc:命令未找到

入门指南在这里没有多大帮助:http: //docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html

这里发生了什么?我是否需要安装gpu computing sdk示例才能获得nvcc?:/

cuda nvcc

5
推荐指数
1
解决办法
1万
查看次数

如何在Panda3D中更改窗口大小?

一个Panda3D的程序具有一定的窗口大小打开.我在GraphicsWindow中找不到任何调用来设置或更改窗口大小.

如何更改窗口大小?

panda3d

5
推荐指数
1
解决办法
1172
查看次数

为什么Python中的计算点距离如此之慢?

我的Python程序太慢了.因此,我对其进行了分析,发现大部分时间都花在计算两点之间距离的函数上(一个点是3个Python浮点数的列表):

def get_dist(pt0, pt1):
    val = 0
    for i in range(3):
        val += (pt0[i] - pt1[i]) ** 2
    val = math.sqrt(val)
    return val
Run Code Online (Sandbox Code Playgroud)

为了分析为什么这个函数这么慢,我编写了两个测试程序:一个用Python编写,一个用C++编写类似的计算.他们计算了100万对点之间的距离.(Python和C++中的测试代码如下.)

Python计算需要2秒,而C++需要0.02秒.100倍的差异!

为什么Python代码比C++代码这么简单的数学计算要慢得多?如何加快速度以匹配C++性能?

用于测试的Python代码:

import math, random, time

num = 1000000

# Generate random points and numbers

pt_list = []
rand_list = []

for i in range(num):
    pt = []
    for j in range(3):
        pt.append(random.random())
    pt_list.append(pt)
    rand_list.append(random.randint(0, num - 1))

# Compute

beg_time = time.clock()
dist = …
Run Code Online (Sandbox Code Playgroud)

python performance

5
推荐指数
1
解决办法
1271
查看次数

如何hg忽略没有扩展名的文件名?

可以将Mercurial配置为忽略文件名具有特定扩展名的文件.例如,*.txt可以通过将其添加到~/.hgignore以下内容来忽略文件:

syntax: glob
*.txt
Run Code Online (Sandbox Code Playgroud)

如何设置我的.hgignore文件以忽略文件名没有扩展名的文件?例如,文件命名foobarabracadabra应被忽略,但foobar.cppabracadabra.c应跟踪.

mercurial hgignore

5
推荐指数
1
解决办法
1583
查看次数

与 CPU 上的物理引擎相比,GPU 上的 PhysX 速度有多快?

我有一个为使用Bullet物理引擎而编写的应用程序。我在 8 核 Intel i7 2600K CPU 上运行它。该应用程序必须处理数百万个物理工作块,每个工作块都可以独立完成。目前它有8 个进程运行,每个进程独立地完成其总数的配额。综上所述,这项工作有很多容易并行的地方。

假设我可以获得最好的 NVIDIA 消费类显卡(例如 Titan),通过从 CPU 上的 Bullet 切换到GPU 上的Physx,我可以看到物理引擎性能的大致改进是多少?也就是说,如果针对 Physx 重写,该应用程序的运行速度大约会快多少?

我找到了一些比较 Bullet 和 Physx 的结果质量的论文,但找不到任何有关性能比较的信息。

gpu physx game-physics bulletphysics physics-engine

5
推荐指数
1
解决办法
9868
查看次数

Morton 代码对于更高维度是最有效的吗?

对于我当前的输入数据,即 3D 中的点,我使用Morton 代码来提高访问点列表时的缓存一致性。

我还有一些其他的 6D 和 7D 数据。对于这些维度,莫顿代码仍然是一种很好的技术吗?或者还有其他的技巧吗?其他空间填充曲线技术比 3D 本身的 Morton 计算更复杂,我想知道人们是否使用 6D/7D 或更高版本的替代技术。

sorting algorithm nearest-neighbor space-filling-curve z-order-curve

5
推荐指数
1
解决办法
1483
查看次数

如何在 Vim 的 NetRW 中更改目录字符?

Vim 中的默认文件浏览器是 NetRW。例如,可以通过使用来调用它:e .。在其树视图中,它在目录名称前加上竖线字符 ( |)。

例如:

joe/
| Desktop/
| Documents/
| Downloads/
Run Code Online (Sandbox Code Playgroud)

如何在 NetRW 的树形显示中用其他东西替换管道字符?

我查看了怪物netrw.vim文件,似乎无法在其中找到这个管道字符。

vim netrw

5
推荐指数
1
解决办法
459
查看次数