2024-05-20 13:07:36 发布
网友
假设我有一个包含100000行的表和一个python脚本,该脚本按顺序对该表的每一行执行一些操作。现在,为了加快这个过程,我应该创建10个单独的脚本并同时运行它们来处理表的后续10000行,还是创建10个线程来处理行以提高执行速度?你知道吗
进程线程通常有一个称为堆进程的连续(虚拟)内存块,而进程没有。相对于整个进程(单独的脚本),线程消耗的操作系统资源也较少,并且没有发生上下文切换。你知道吗
在多线程执行中,当没有 所涉及的锁定/障碍是数据访问局部性,例如矩阵乘法核。你知道吗
假设数据以线性方式存储在堆中,即第0行以[0-4095]字节存储,第1行以[4096-8191]字节存储,等等,那么线程0应该以0,10,20。。。行,线程-1在1,11,21,。。。行等
其主要思想是将一组4K页保存在物理RAM中,64字节块保存在L3缓存中,并对它们进行重复操作。计算机通常认为,如果你“使用”了一个特定的内存位置,那么你也会使用相邻的内存位置,你应该在程序中尽最大努力做到这一点。最坏的情况是以随机方式访问相距约10MiB的内存位置,所以不要这样做。如果一行是1310720双(64B)英寸 那么线程应该以行内(单行)而不是行间(上方)的方式运行。你知道吗
对您的代码进行基准测试,根据您的结果,如果您的算法可以处理大约21.3GiB/s(DDR3-2666Mhz)的行,那么您就有一个内存受限的任务。如果您的代码处理速度接近1GiB/s,那么您就有一个计算限制任务,这意味着对数据执行指令比从RAM获取数据需要更多的时间,您需要优化代码或通过使用AVXx指令集达到更高的IPC,或者购买一个更新的处理器或具有更多内核或更高频率的处理器。你知道吗
进程线程通常有一个称为堆进程的连续(虚拟)内存块,而进程没有。相对于整个进程(单独的脚本),线程消耗的操作系统资源也较少,并且没有发生上下文切换。你知道吗
在多线程执行中,当没有 所涉及的锁定/障碍是数据访问局部性,例如矩阵乘法核。你知道吗
假设数据以线性方式存储在堆中,即第0行以[0-4095]字节存储,第1行以[4096-8191]字节存储,等等,那么线程0应该以0,10,20。。。行,线程-1在1,11,21,。。。行等
其主要思想是将一组4K页保存在物理RAM中,64字节块保存在L3缓存中,并对它们进行重复操作。计算机通常认为,如果你“使用”了一个特定的内存位置,那么你也会使用相邻的内存位置,你应该在程序中尽最大努力做到这一点。最坏的情况是以随机方式访问相距约10MiB的内存位置,所以不要这样做。如果一行是1310720双(64B)英寸 那么线程应该以行内(单行)而不是行间(上方)的方式运行。你知道吗
对您的代码进行基准测试,根据您的结果,如果您的算法可以处理大约21.3GiB/s(DDR3-2666Mhz)的行,那么您就有一个内存受限的任务。如果您的代码处理速度接近1GiB/s,那么您就有一个计算限制任务,这意味着对数据执行指令比从RAM获取数据需要更多的时间,您需要优化代码或通过使用AVXx指令集达到更高的IPC,或者购买一个更新的处理器或具有更多内核或更高频率的处理器。你知道吗
穿线
多处理
矢量化
相关问题 更多 >
编程相关推荐