小编Yes*_*Yes的帖子

为 python pygments 生成自定义样式

我目前在我的网站上使用 python pygments 来突出显示一些代码,并想调整一些使用的颜色。到目前为止我已经尝试过以下方法:

from pygments.token import Keyword, Name, Comment, String, Error, \
     Number, Operator, Generic
from pygments.formatters import HtmlFormatter

class MyStyle(Style):
    styles = {
        Comment:                '#f00000',
        Keyword:                '#f00000',
        Name:                   '#f00000',
        Name.Function:          '#f00000',
        Name.Class:             '#f00000',
        String:                 '#f00000'
    }


code = 'print("Hello World")'
result = highlight(code, Python3Lexer(), HtmlFormatter(style=MyStyle))
print(result)
Run Code Online (Sandbox Code Playgroud)

打印出

<div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Hello World&quot;</span><span class="p">)</span>
</pre></div>
Run Code Online (Sandbox Code Playgroud)

一起生成的 pygments.css 如下所示:

.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #8f5902; font-style: italic } /* …
Run Code Online (Sandbox Code Playgroud)

python pygments

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

为什么计算矩阵/多维数组的FFT时需要计算转置?

我目前正在研究一个问题,涉及使用FFTW与 MPI 结合计算二维矩阵的傅里叶变换。

根据FFTW 文档本页的第一部分,计算矩阵的 FT 需要在并行时启动的进程之间进行大量通信。例如,在矩阵的情况下,例如

1,2,3
4,5,6
7,8,9
Run Code Online (Sandbox Code Playgroud)

我们决定用三个进程来计算 FFT,每个进程都会获取该矩阵的一个块,以便数据作为 存储在每个进程的本地内存中P_0 [1,2,3], P_1 [4,5,6], P_3 [7,8,9]

计算初始傅立叶变换后,计算转置,这需要在三个进程之间通信计算数据,如下所示:

P_0 -> P_1: 2
P_0 -> P_2: 3
P_1 -> P_0: 4
P_1 -> P_2: 6
P_2 -> P_0: 7
P_2 -> P_1: 8
Run Code Online (Sandbox Code Playgroud)

由于这会产生很大的开销,因此上述 FFTW 文档页面的第二部分建议直接在傅里叶空间中计算转置,以大大减少所需的跨进程通信量。

我仍然不确定为什么首先需要计算转置,以及最终如何合并从矩阵的不同块计算的数据。为什么设置FFTW_MPI_TRANSPOSED_OUTFFTW_MPI_TRANSPOSED_IN标志就足够了,不再需要跨进程通信,即使在进程之前需要来自所有其他进程的更多数据?

fortran fft matrix mpi fftw

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

标签 统计

fft ×1

fftw ×1

fortran ×1

matrix ×1

mpi ×1

pygments ×1

python ×1