利索能及
我要发布
收藏
专利号: 2018103665556
申请人: 浙江工业大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-08-19
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于CUDA的网络入侵检测并行化加速方法,包括如下步骤:

(1)在CPU端初始化n个网络入侵检测数据点的集合R,随机选取k个点作为初始聚簇中心,设置最大迭代次数为m,中心点收敛阈值为t;在GPU端分配网络入侵检测数据点集、聚簇中心、全局上下界以及中心点偏移量的内存空间,将数据拷贝至GPU端;

(2)第一次计算所有入侵检测数据点至k个聚簇中心的距离;具体的计算方法采用步骤(4)的方法进行计算;然后,根据距离计算的结果,把数据点归入距离最近的聚簇中;最后,采用步骤(6)的方法来更新聚簇中心,从而获得全局选择器需要的数据;

(3)对于每一个入侵检测数据点,采用全局选择器判断是否需要进行下一轮迭代;如果入侵检测数据点满足全局选择器判定条件,则转步骤(6)处理,如果不满足,则转步骤(4)处理;全局选择器的判定条件为:其中,x代表一个网络入侵检测数据点,e代表点x所属聚簇的聚簇中心,ue(x)代表x的全局上界,le(x)代表x的全局下界,φ(e)代表聚簇更新之后聚簇中心e的距离偏移量,C代表所有网络入侵检测聚簇中心的集合,c代表集合中除了e之外的一个聚簇中心,代表聚簇更新之后聚簇中心的最大距离偏移量;

(4)计算所有入侵检测数据点至k个聚簇中心的距离;在GPU端开启n个线程计算入侵检测数据点矩阵x的平方x2,然后开启k个线程计算聚簇中心矩阵y的平方y2,并计算x2+y2;最后,调用CUDA提供的通用矩阵乘函数cublasSgemm()进行距离计算,即计算n个入侵检测数据点至k个聚簇中心的距离;

(5)根据距离计算的结果,寻找每个入侵检测数据点最近的聚簇中心,并把这个数据点归入该聚簇集合;由于部分入侵检测数据点满足全局选择器条件,没有进行距离计算,因此,在完成计算入侵检测数据点所属聚簇的基础上,需要加上这部分数据点所属聚簇,从而获得所有数据点的聚簇中心;

(6)在GPU端按照每个网络入侵检测数据点的所属聚簇标签进行排序和分组,将所有具有同一聚簇标签的数据点归为一组;聚簇标签的排序可以调用CUDA提供的Thrust库中的sort_by_key()排序函数,这个函数可以根据key值进行排序;由于每一个聚簇中心都有一个相应的标签,调用sort_by_key()排序函数时,把数据点所属聚簇的标签作为key值即可;这样,经过sort_by_key()函数排序后,可以根据排序的情况,把具有相同聚簇标签的入侵检测数据点归为一组;

(7)根据排序和分组的结果,计算新的聚簇中心;计算新的聚簇中心时,GPU开启合理的二维线程格和二维线程块,blockDim.y代表二维线程块y方向上的大小,而gridDim.y代表二维线程格y方向的大小,然后为每个线程分配同组内(n-1)/(blockDim.y*gridDim.y)个数据点,计算这些网络入侵检测数据点在threadIdx.x维度上的和,threadIdx.x代表线程块内x方向上的线程号;最后把同组内的入侵检测数据点分别在d个维度上累加求和,根据同组内数据点总数得到每个维度的均值,输出更新之后的聚簇中心;

(8)如果算法迭代次数达到m或k个聚簇中心的距离变化值都小于阈值t,则转步骤(9),否则转步骤(3),继续迭代;

(9)将步骤(8)的计算结果从GPU端拷贝至CPU端,输出k个聚簇中心以及相应的聚簇集合,如果一个聚簇集合的数据量小于总数据量的2%,则判断该聚簇中的数据为入侵数据,否则为正常数据。