我在理解如何向Cuda发送2D阵列方面遇到了一些麻烦.我有一个程序可以解析每行上有30个数据点的大文件.我一次读了大约10行,然后为每一行和项创建一个矩阵(所以在我的10行中有30个数据点的例子中,int list[10][30]; 我的目标是将这个数组发送到我的核心并让每个块处理一个排(我已经让它在正常的C中完美地工作,但是Cuda已经有点挑战了).
这是我到目前为止所做的但没有运气(注意:sizeofbucket = rows,sizeOfBucketsHoldings =行中的项目......我知道我应该赢得奇数变量名称的奖励):
int list[sizeOfBuckets][sizeOfBucketsHoldings]; //this is created at the start of the file and I can confirmed its filled with the correct data
#define sizeOfBuckets 10 //size of buckets before sending to process list
#define sizeOfBucketsHoldings 30
//Cuda part
//define device variables
int *dev_current_list[sizeOfBuckets][sizeOfBucketsHoldings];
//time to malloc the 2D array on device
size_t pitch;
cudaMallocPitch((int**)&dev_current_list, (size_t *)&pitch, sizeOfBucketsHoldings * sizeof(int), sizeOfBuckets);
//copy data from host to device
cudaMemcpy2D( dev_current_list, pitch, list, sizeOfBuckets * sizeof(int), …Run Code Online (Sandbox Code Playgroud) Cuda真棒,而且我疯狂地使用它但是我并没有充分发挥它的潜力,因为我有一个转移内存的问题,并且想知道是否有更好的方法来获取可变数量的内存.基本上我发送65535项数组到Cuda和Cuda分析每个数据项约20,000种不同的方式,如果在我的程序逻辑中匹配,那么它将保存一个30 int列表作为结果.想想我分析每个不同组合的逻辑,然后查看总数,如果总数等于我正在寻找的数字,那么它会保存结果(这是每个分析项目的30个int列表).
问题是65535(数据阵列中的块/项目)*20000(每个项目测试的总组合数)= 1,310,700,000.这意味着我需要创建一个这样大小的数组来处理所有数据都是正匹配的可能性(这是极不可能的,并且创建int output[1310700000][30]对于内存来说似乎很疯狂).我不得不把它缩小并发送更少的块来处理,因为我不知道Cuda如何有效地写入链表或动态大小的列表(使用这种方法,它使用块将输出写入主机内存*number_of_different_way_tests).
有一个更好的方法吗?Cuda可以以某种方式写入不是从blockid派生的空闲内存吗?当我在CPU上测试这个过程时,少于10%的项目数组具有正匹配,所以每次我将工作发送到内核时,我都不太可能使用这么多内存.
ps我正在看上面,虽然它正是我正在做的,如果它令人困惑然后另一种思考方式(不完全是我正在做的但是足以理解问题)是我发送20,000个数组(那每个包含65,535个项目)并在其他数组中添加每个项目与其对等项,如果总数等于一个数字(比如200-210),那么我想知道它为获得匹配结果而添加的数字.如果数字的范围非常广泛,那么并非所有数据都匹配,但是使用我的方法,我被迫使用大量的内存.我可以通过mallocing更少的内存来捕获结果吗?我当前的方法是malloc,因为我有免费但我被迫运行更少的块效率不高(我想运行尽可能多的块和线程,因为我喜欢Cuda组织和运行块的方式) .我可以使用任何Cuda或C技巧,或者我仍然坚持使用最大可能结果(并购买更多内存)?
我有以下数据框,我想比较列值和预测,如果它们匹配,那么我想将“提供”列的值设置为 False。我很难做到这一点。
这是我的数据:
ticker periodDate value predicted
0 ibm 2017 150079.080 150079.080
1 ibm 2016 49799.140 49799.140
2 ibm 2015 459.016 45949.016
Run Code Online (Sandbox Code Playgroud)
我想要一个新列只有 True/False if 值和预测匹配。我尝试过这个但没有成功:
def provideOrPredicted(df):
if df['value'] == df['predicted']:
df['provided'] = False
elif df['value'] != df['predicted']:
df['provided'] = False
print(df)
provideOrPredicted(MergedDF)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud) 我有一个 <class 'numpy.ndarray'> 数组,我想将其保存到 parquet 文件中以传递给我正在构建的 ML 模型。我的数组有 159573 个数组,每个数组有 1395 个数组。
这是我的数据示例:
[[0. 0. 0. ... 0.24093714 0.75547471 0.74532781]
[0. 0. 0. ... 0.24093714 0.75547471 0.74532781]
[0. 0. 0. ... 0.24093714 0.75547471 0.74532781]
...
[0. 0. 0. ... 0.89473684 0.29282009 0.29277004]
[0. 0. 0. ... 0.89473684 0.29282009 0.29277004]
[0. 0. 0. ... 0.89473684 0.29282009 0.29277004]]
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码进行转换:
import pyarrow as pa
pa_table = pa.table({"data": Main_x})
pa.parquet.write_table(pa_table, "full_data.parquet")
Run Code Online (Sandbox Code Playgroud)
我得到这个堆栈跟踪:
5 frames
/usr/local/lib/python3.7/dist-packages/pyarrow/table.pxi in pyarrow.lib.table()
/usr/local/lib/python3.7/dist-packages/pyarrow/table.pxi in pyarrow.lib.Table.from_pydict()
/usr/local/lib/python3.7/dist-packages/pyarrow/array.pxi in pyarrow.lib.asarray()
/usr/local/lib/python3.7/dist-packages/pyarrow/array.pxi …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题。当我提交到 github 代码的特定开发分支时,我为云运行设置了持续交付。
当我提交时,我看到它注意到更改并构建代码,但它不会自动将其部署到云运行实例。
我必须手动选择编辑并部署新修订版,然后选择创建的映像。
我该怎么做才能自动部署?
嗨,大家好.对于这个令人尴尬的新手问题,我很抱歉,但我似乎无法弄明白这个命令.我对python很好,并且在jython中有一个脚本,我正在转向纯java(并沿途学习).
我有一个字符串: Java is really cool
我知道如何剥离字符串以获得最终结果: really cool
但我不确定在java中执行此操作的命令.我发现java中的命令是专门通过文本来完成的,但我想使用空格作为分隔符来获取单词.
有人能告诉我使用什么java命令吗?我希望能够删除前两个单词和/或专门选择我想要的单词.
谢谢,
我真的很喜欢编程和Cuda很抱歉,如果这是非常明显的.基本上我有一个C函数,它读取数据列表,然后根据hashmap检查每个项目(我在C中使用uthash).它运行良好,但我想在Cuda中运行这个过程(一旦它获得了散列键的值,那么它会进行很多处理),但我不确定创建尽可能快的只读散列函数的最佳方法在库达.
背景:
基本上我试图尽快评估一大批投资组合.我不断得到数百万个投资组合,这些投资组合是两个列表.一个有股票名称,另一个有权重.然后,我使用股票名称查找哈希表以获取其他数据(值,%更改等),然后根据权重处理它.在普通C的CPU上大约需要8分钟,所以我很有兴趣在GPU上尝试它.我已经阅读并完成了这些示例,cuda by example所以我相信我知道如何除了散列函数之外大部分都是这样做的(附录中有一个但是它似乎集中在添加它,而我真的只想要它作为参考,因为它'永远不会改变.我可能会在边缘粗糙,cuda for example所以在这种情况下,我可能会遗漏一些对我有帮助的东西,比如使用文本或某种特殊形式的记忆.如果每个块都有自己对hashmap的访问权限,或者每个线程是否足以满足整个GPU的要求,我将如何构建此结果以获得最佳结果?
任何想要更好地理解这一点的想法,例子或资源都会很棒.
谢谢!
编辑:很抱歉只是为了澄清,我只使用C.最糟糕的情况我愿意使用另一种语言,但理想情况下我想要一些我可以原生地放在GPU上的东西,并且从那以后所有未来的线程都被读取为了处理我的数据,我需要在几个大批量中进行处理.
我正在尝试学习金字塔,并且在使消息闪存工作时遇到问题.我是全新的,但阅读文档并做了教程.
我做了教程创建维基(教程这里,代码在这里).它工作得很好而且非常简单所以我决定尝试应用我在todo list教程中看到的flash消息(这里的教程,完整代码在页面底部的单个文件中).基本上,当创建待办事项列表时,将刷新页面并显示"已成功添加新任务!"的消息.每当有人更新wiki教程中的wiki文章时,我都希望这样做.
所以我重新阅读了文档中的会话部分,它说我真的只需要这样做:
from pyramid.session import UnencryptedCookieSessionFactoryConfig
my_session_factory = UnencryptedCookieSessionFactoryConfig('itsaseekreet')
from pyramid.config import Configurator
config = Configurator(session_factory = my_session_factory)
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中我需要添加:request.session.flash('New wiki was successfully added!')但我每次都会收到错误:金字塔错误:AttributeError:没有注册会话工厂
这是我的函数(除了request.session.flash部分之外,它与教程完全相同):
@view_config(route_name='edit_page', renderer='templates/edit.pt', permission='edit')
def edit_page(request):
name = request.matchdict['pagename']
page = DBSession.query(Page).filter_by(name=name).one()
if 'form.submitted' in request.params:
page.data = request.params['body']
DBSession.add(page)
request.session.flash('page was successfully edited!')
return HTTPFound(location = request.route_url('view_page',
pagename=name))
return dict(
page=page,
save_url = request.route_url('edit_page', pagename=name),
logged_in=authenticated_userid(request),
)
Run Code Online (Sandbox Code Playgroud)
(注意:我认为我可能做错的一件事是在todo示例中,所有数据都在一个文件中,但在wiki示例中有几个文件..我在view.py文件中添加了我的会话导入,因为flash视图本身正在生成flash消息.
我究竟做错了什么?有什么建议?
我有一份字典中的股票价格清单和价值清单.我想通过列表来获取每天股票的价值,但是当我使用变量访问数据时,我无法解析列表中的位置.
这是一个例子:
goog = [12,132,124,234,234]
msft = [432,23,234,54,23]
num_days = 5
stocks_i_own = {'goog':50, 'msft':50}
for days in range(0,num_days):
for stock in stocks_i_own:
print days, stock, stocks_i_own[stock]
print stock[days] #prints just 'g' not the value on day0
print 'vaue on ', days, ' is ', stock[days] * stocks_i_own[stock]
Run Code Online (Sandbox Code Playgroud)
问题是当我stock[days]用来获取数据时.我知道库存有正确的值('goog'或'msft'),天数有正确的值(范围为0-4),但是当它们一起使用时,我不会从列表中获取数据,而是获取位置关于这个词本身.它是有道理的,因为像:
name = 'google'
name[0]
Run Code Online (Sandbox Code Playgroud)
会返回g(它在我的情况下做)但是有没有办法让python不要看到我提供它作为一个字符串而是引用列表?
我已经阅读了文档,这似乎对我不起作用。我关注了这个医生。但我不确定它是否与我想做的事情有关,我认为这个文档是为了传递这样的查询 -site.com/endpoint?keyword=test
这是我的目标:api.site.com/test/(optional_field)
因此,如果有人进入“测试”端点,那么它会将可选字段默认为参数,但如果他们在那里添加一些内容,那么它会将其作为输入。
话虽如此,这是我的代码:
@app.get("/company/{company_ticker}/model/{financialColumn}", dependencies=[Depends(api_counter)])
async def myendpoint(
company_ticker: str,
financialColumn: Optional[str] = 'netincome',
..
myFunction(company_ticker, financialColumn)
Run Code Online (Sandbox Code Playgroud)
我想做的是,如果他们只是转到没有可选标志的端点,那么它默认为“净收入”,但如果他们添加一些内容,那么 FinancialColumn 将设置为该值。
有什么我可以做的吗?