小编Ati*_*rag的帖子

Cuda按线程注册

正如我对2.x计算能力设备的正确理解,每个线程有63个寄存器限制.您知道计算能力1.3的设备每个线程的寄存器限制是多少?

我有一个很大的内核,我正在GTX260上测试.我很确定我使用了很多寄存器,因为内核非常复杂,我需要很多局部变量.根据Cuda探查器我的注册用法是63(静态Smem是68虽然我不太确定这意味着什么,动态Smem是0),虽然我很确定我有超过63个局部变量,所以我认为编译器重用寄存器或将它们溢出到本地存储器中.

现在我认为计算能力1.3的设备每个线程的寄存器限制比2.x设备更高.我的猜测是编译器选择了63限制,因为我使用的是256个线程的块,在这种情况下256*63是16128而256*64是16384,这是该设备SM的寄存器限制数.所以我的猜测是,如果我减少每个块的线程数量,我可以增加使用的寄存器数量.所以我使用196个线程的块运行内核.但同样,分析器显示63个寄存器,即使63*192是12096而64*192是12288,这是在SM的16384限制范围内.

所以任何想法为什么编译器仍然限制自己63个寄存器?可能是因为寄存器重用还是仍在溢出寄存器?

profiler cuda local-storage

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

在R中为字符串添加双引号

如何在从R中的向量中取出的字符串中添加双引号?

我尝试使用粘贴,但它不能很好地工作

kg_name=paste("\"",k_groups[i,],"\"")
Run Code Online (Sandbox Code Playgroud)

让我们说k_groups [i,]的值是等等,所以我正在寻找这个结果

"blah"
Run Code Online (Sandbox Code Playgroud)

但结果是

"\" blah \""
Run Code Online (Sandbox Code Playgroud)

r string-concatenation

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

在python中的Nltk法语标记器无法正常工作

为什么python附带的法语标记器不能为我工作?难道我做错了什么?

我正在做

import nltk
content_french = ["Les astronomes amateurs jouent également un rôle important en recherche; les plus sérieux participant couramment au suivi d'étoiles variables, à la découverte de nouveaux astéroïdes et de nouvelles comètes, etc.", 'Séquence vidéo.', "John Richard Bond explique le rôle de l'astronomie."]
tokenizer = nltk.data.load('tokenizers/punkt/PY3/french.pickle')
for i in content_french:
        print(i)
        print(tokenizer.tokenize(i))
Run Code Online (Sandbox Code Playgroud)

但我得到非标记化输出

John Richard Bond explique le rôle de l'astronomie.
["John Richard Bond explique le rôle de l'astronomie."]
Run Code Online (Sandbox Code Playgroud)

python tokenize nltk

6
推荐指数
2
解决办法
5048
查看次数

提高 2d 图像“跟踪”CUDA 内核性能的技巧?

你能给我一些优化这个 CUDA 代码的技巧吗?

我在计算能力为 1.3 的设备上运行它(我需要它用于 Tesla C1060,尽管我现在正在具有相同计算能力的 GTX 260 上测试它),并且我有几个如下所示的内核。执行该内核所需的线程数量由 给出long SUM并取决于size_t M以及size_t N作为参数接收的矩形图像的尺寸,它可以以像素或更多为单位变化50x50很大10000x10000。尽管我最感兴趣的是使用 Cuda 处理更大的图像。

现在,必须在所有方向和角度上跟踪每个图像,并且必须对从跟踪中提取的值进行一些计算。因此,例如,对于一个500x500图像,我需要229080 threads计算该内核,其下方是 SUM 的值(这就是为什么我检查线程 ididHilo是否不超过它)。我将几个数组一个接一个地复制到设备的全局内存中,因为我需要访问它们以进行所有长度的计算SUM。像这样

cudaMemcpy(xb_cuda,xb_host,(SUM*sizeof(long)),cudaMemcpyHostToDevice);

cudaMemcpy(yb_cuda,yb_host,(SUM*sizeof(long)),cudaMemcpyHostToDevice);

...etc
Run Code Online (Sandbox Code Playgroud)

因此每个数组的每个值都可以由一个线程访问。所有这些都在内核调用之前完成。根据 Nsight 上的 Cuda Profiler,最长的内存复制持续时间是246.016 us针对500x500图像的,因此不会花费那么长时间。

但是,像我在下面复制的那样的内核对于任何实际用途来说都花费了太长的时间(根据下面的内核的 Cuda 分析器,对于 500x500 图像,需要 3.25 秒,对于持续时间最长的内核,需要 5.052 秒),所以我需要看看是否我可以优化它们。

我这样安排数据

首先是块尺寸

dim3 dimBlock(256,1,1);
Run Code Online (Sandbox Code Playgroud)

然后是每个网格的块数

dim3 dimGrid((SUM+255)/256);
Run Code Online (Sandbox Code Playgroud)

895 blocks对于一个图像的多个500x500

我不确定在我的情况下如何使用合并和共享内存,或者即使使用数据的不同部分多次调用内核是个好主意。数据彼此独立,因此理论上我可以多次调用该内核,而不是在需要时一次性使用 229080 个线程。

现在考虑外for循环 …

optimization performance cuda image-processing

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

cudamemcpy函数使用

在这种情况下,cudaMemcpy 函数将如何工作?

我已经声明了一个这样的矩阵

float imagen[par->N][par->M];
Run Code Online (Sandbox Code Playgroud)

我想将其复制到 cuda 设备,所以我这样做了

float *imagen_cuda;

int tam_cuda=par->M*par->N*sizeof(float);

cudaMalloc((void**) &imagen_cuda,tam_cuda); 
cudaMemcpy(imagen_cuda,imagen,tam_cuda,cudaMemcpyHostToDevice);
Run Code Online (Sandbox Code Playgroud)

这可以将二维数组复制到一维数组中吗?

如何复制到另一个二维数组?我可以改变这个吗?它会起作用吗?

float **imagen_cuda;
Run Code Online (Sandbox Code Playgroud)

cuda

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

Python:将地图对象转换为列表会使地图对象为空?

我有一个要打印为列表的地图对象,但此后继续用作地图对象。实际上,我想打印长度,以便将其强制转换为列表,但是如果仅按如下所示打印内容,也会出现此问题:

print("1",my_map)
print("1",list(my_map))
print("2",my_map)
print("2",list(my_map))
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出。

1 <map object at 0x7fd2962a75f8>
1 [(1000.0, 1.0, 0.01, 0.01, 0.01, 0.01, 0.01)]
2 <map object at 0x7fd2962a75f8>
2 []
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,如何避免继续使用地图及其内容?

casting python-3.x

4
推荐指数
2
解决办法
2699
查看次数

nvcc fatal:指定outputfile时,非链接阶段需要单个输入文件

我正在使用Nsight Eclipse解决这个问题.我刚刚安装了我的Cuda Toolkit 5.0我有一个项目,它使用了几个C文件和一个Cuda文件.

我读到有时当你在Nsight中沿着Cuda文件使用C文件时会出现问题所以我在项目中将所有文件更改为.cu和.cuh扩展名.同样地,它说有时问题来自于为具有黑色空格的文件建立路径,我确信它不是这种情况.

当它尝试编译第一个文件Calcular.cu时出现错误

这是编译输出

make all 
Building file: ../Calcular.cu
Invoking: NVCC Compiler
nvcc -I/usr/include/ImageMagick -G -g -O0 -gencode arch=compute_11,code=sm_11 -gencode arch=compute_12,code=sm_12 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_20,code=sm_21 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -odir "" -M -o "Calcular.d" "../Calcular.cu"
nvcc –Xcompiler –fopenmp --compile -G -I/usr/include/ImageMagick -O0 -g -gencode arch=compute_11,code=compute_11 -gencode arch=compute_11,code=sm_11 -gencode arch=compute_12,code=compute_12 -gencode arch=compute_12,code=sm_12 -gencode arch=compute_13,code=compute_13 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=compute_20 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_20,code=sm_21 -gencode arch=compute_30,code=compute_30 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=compute_35 -gencode arch=compute_35,code=sm_35  -x cu -o  "Calcular.o" "../Calcular.cu"
nvcc …
Run Code Online (Sandbox Code Playgroud)

cuda compiler-errors nvcc nsight

3
推荐指数
1
解决办法
7470
查看次数

从html代码中过滤掉空的<span>标记

我有一些HTML代码,其中有很多我想删除的行看起来像这样

<span style="position:absolute; border: black 1px solid; left:94px; top:600px; width:6px; height:10px;"></span>
Run Code Online (Sandbox Code Playgroud)

现在还有span标签,它们之间有文本,我想保留.

我想使用python re.sub函数删除那些无用的span标签.我写了这个,但它没有用

html_code_filtered = re.sub('<span*></span>', '', html_code)
Run Code Online (Sandbox Code Playgroud)

我想我在正则表达式上缺少一些东西以正确匹配线条?

html python regex filter

3
推荐指数
1
解决办法
895
查看次数

如何轻松地从斯坦福在Python中解析数据的解析树?

所以我有斯坦福风格的英语句子解析:

"There is a tree behind a car"
Parse: [S [NP There_EX NP] [VP is_VBZ [NP [NP a_DT tree_NN NP] [PP behind_IN [NP a_DT car_NN NP] PP] NP] VP] S]
Run Code Online (Sandbox Code Playgroud)

我想在python中使用一些树绘制方法从数据中绘制一个解析树.

是否有一种简单的方法可以使用该解析表示来使用python绘制树,或者我应该以某种方式更改表示?

python parsing nlp parse-tree

2
推荐指数
1
解决办法
2189
查看次数

Python Dash:隐藏具有一个事件的组件,并使其通过回调创建的另一个组件可见

这是我想用 Dash 做的事情的“几乎”工作示例。几乎是因为这段代码有效,但缺少我打算​​做的一部分,但是当我尝试实现其他部分时,出现错误。

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
app = dash.Dash()
app.config['suppress_callback_exceptions']=True
image = "tmpimg.png"

app.layout = html.Div([
       html.Div([
       html.Div([
           html.Button('Load image', id='load-button'),
           dcc.Upload(
                   id='upload-data',
                   children=html.Button('Upload image', id='upload-button')
           )
       ]),
       html.Div([
           html.Div(id='images-div'),
           html.Div(id='classification-div'),
           html.Div(id='classification-div2')
       ])
       ])
 ])

@app.callback(
   Output(component_id='images-div', component_property='children'),
   [Input('load-button','n_clicks')]
)
def update_output_div_img(n_clicks):
   return html.Div([html.Img(
                           src=app.get_asset_url(image),
                           style={
                                   'width' : '10%',
                                    'cursor': 'pointer'
                                   }
                       )], id='img'
                   )

@app.callback(
   Output(component_id='classification-div', component_property='children'),
   [Input('img','n_clicks')]
)
def update_output_div1(n_clicks):  
   return html.Div([html.H2('Div1')])

@app.callback(Output('classification-div2', 'children'),
             [Input('upload-data', 'contents')]) …
Run Code Online (Sandbox Code Playgroud)

python-3.x plotly-dash

2
推荐指数
1
解决办法
3987
查看次数

如何清空R中的列表?

我有一个带有R程序的文件.我在R上交互式加载它,然后我调用main函数.在执行期间,我填写了一些全局列表但是当我再次运行main函数时,我希望这些列表为空.我怎样才能清空填好的清单?我试过了

list <- NULL
Run Code Online (Sandbox Code Playgroud)

执行后但它没有奏效.

r list empty-list

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

为什么这个C表达式会产生错误的答案?

我有以下代码:

double e = 36858.767828375385;
double c = 2;
double d = 67.877433500000009;

e = sqrt(e / (c * (c - 1))) / d;
Run Code Online (Sandbox Code Playgroud)

e根据调试器,结果值为2,但应为2.8284271.我究竟做错了什么?

c math sqrt

0
推荐指数
1
解决办法
148
查看次数

使用 Node.js 的 Watson Dialog 服务中的文件流暂停错误

我正在尝试将 IBM Watson Dialog 服务与 Node.js 结合使用。

我在这里关注 Node.js 的 API 参考https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/dialog/api/v1/?node#

据此,创建对话框的方法是这样的:

var fs     = require('fs');
var watson = require('watson-developer-cloud');
var dialog_service = watson.dialog({
  username: '{username}',
  password: '{password}',
  version: 'v1'
});

var params = {
  name: 'my-dialog',
  file: fs.createFileStream('template.xml')
};

dialog_service.createDialog(params, function(err, dialog) {
  if (err)
    console.log(err)
  else
    console.log(dialog);
});
Run Code Online (Sandbox Code Playgroud)

但是函数 fs.createFileStream 不存在,所以我使用了 fs.createWriteStream 和相同的代码。

但是当我尝试运行时,我收到以下错误

/home/ubuntu/workspace/node_modules/watson-developer-cloud/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js:35
    source.pause();

TypeError: source.pause is not a function
    at Function.DelayedStream.create (/home/ubuntu/workspace/node_modules/watson-developer-cloud/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js:35:12)
    at FormData.CombinedStream.append (/home/ubuntu/workspace/node_modules/watson-developer-cloud/node_modules/request/node_modules/combined-stream/lib/combined_stream.js:43:37)
    at FormData.append (/home/ubuntu/workspace/node_modules/watson-developer-cloud/node_modules/request/node_modules/form-data/lib/form_data.js:46:3)
    at appendFormValue (/home/ubuntu/workspace/node_modules/watson-developer-cloud/node_modules/request/request.js:339:21)
    at Request.init …
Run Code Online (Sandbox Code Playgroud)

stream node.js ibm-watson watson-dialog

0
推荐指数
1
解决办法
2154
查看次数