暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

kdb+并行计算(1)

kdb中文教程 2020-12-13
280

通俗地讲,kdb+/q并行计算是把比较大的计算任务拆分成许多小任务,让这些小计算任务同时跑,这样就可以在较短的时间内完成整个计算任务。


让小计算任务同时跑的方法主要有三种:

第一种,这些小任务同时跑在同一个q中,

第二种,这些小任务同时跑在同一台电脑上的多个q中,

第三种,这些小任务同时跑在多台电脑上的多个q中。


这里先聊第一种情况(以后会聊其它情况):通过一个非常简单例子,聊聊如何在同一个q中同时跑多个小任务。


这个简单例子是:分别计算1、2、3的平方。


我们可以把这个“大”的计算任务拆分为3个“小”任务,即

(1)计算1的平方,

(2)计算2的平方,

(3)计算3的平方。


接下来有两种做法,一种是串行计算:首先计算1的平方,然后计算2的平方,最后计算3的平方;另一种是并行计算:同时计算1、2、3的平方。


在q中并行计算上述3个小任务的步骤为:


操作步骤

1

 第一步,启动q,使它支持并行计算

这里假设操作系统为Windows,q为32位版本,q安装于d:\kdb\q\。在Windows“命令提示符”窗口中运行:

set QHOME=d:\kdb\q

d:\kdb\q\w32\q  -s  3    

这样就启动了q,这个q支持同时跑3个小任务。


2

 第二步,分发计算任务,返回结果

在q控制台提示符“q)”后面运行:

{x*x} peach 1 2 3

相当于同时运行{x*x}[1]、{x*x}[2]、{x*x}[3],最后返回结果(1*1;2*2;3*3),得到1 4 9。

是的,这就是并行计算!不要被“并行计算”所吓倒

(注:如果运行{x*x} each 1 2 3就是串行计算)


上面这种并行计算叫多线程并行计算,kdb+多线程并行计算的相关概念(如主线程、子线程)以及一些注意事项等,可以参考《kdb+中文教程》第九章,或 https://code.kx.com。另外,kdb+ v4.0版本,即使q启动时不加参数-s N,许多函数默认进行多线程计算,详见https://code.kx.com/q/kb/mt-primitives。



《kdb+中文教程》

  全文链接

前言及目录
第一章  简介

第二章  数据类型

第三章  数组

第四章  字典

第五章  函数

第六章  表与qSQL

第七章  I/O操作

第八章  数据库

第九章  应用例子

第十章  问答(含参考文献)

文章转载自kdb中文教程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论