小编mab*_*enk的帖子

使用 Jekyll 创建自定义主页

我想使用 Jekyll 的标准主题“Minima”创建一个自定义的“主页”。默认情况下,它设置为最近的博客文章列表:

---
layout: default
---

<div class="home">

  <h1 class="page-heading">Posts</h1>

  {{ content }}

  <ul class="post-list">
    {% for post in site.posts %}
      <li>
        <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span>

        <h2>
          <a class="post-link" href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
        </h2>
      </li>
    {% endfor %}
  </ul>

  <p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | relative_url }}">via RSS</a></p>

</div>
Run Code Online (Sandbox Code Playgroud)

此设置在文件中控制_layouts/home.html。我使用 Markdown 创建了我的自定义“主页”页面。它保存在我的本地目录中并称为“aboutme.md”:

---
layout: page
title: About Me
permalink: /aboutme/
order: 1
---

This is a custom …
Run Code Online (Sandbox Code Playgroud)

html markdown liquid jekyll minima

5
推荐指数
2
解决办法
3022
查看次数

使用 Intel oneAPI DPC++ 编译器将 OpenMP 卸载到 NVIDIA GPU

我的任务是编写一个通过 OpenMP 卸载到 GPU 的程序。目前我使用 Intel oneAPI DPC++ 编译器编译我的代码icpxv2022.1.0 编译代码,目标是在后端使用 NVIDIA Tesla V100。请在下面找到我的相关部分Makefile:

MKLROOT   = /lustre/system/local/apps/intel/oneapi/2022.2.0/mkl/latest

CXX       = icpx
INC       =-I"${MKLROOT}/include"
CXXFLAGS  =-qopenmp -fopenmp-targets=spir64 ${INC} --gcc-toolchain=/lustre/system/local/apps/gcc9/9.3.0
LDFLAGS   =-qopenmp -fopenmp-targets=spir64 -fsycl -L${MKLROOT}/lib/intel64
LDLIBS    =-lmkl_sycl -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lsycl -lOpenCL -lstdc++ -lpthread -lm -ldl

${EXE}: ${OBJ}
    ${CXX} ${CXXFLAGS} $^ ${LDFLAGS} ${LDLIBS} -o $@
Run Code Online (Sandbox Code Playgroud)

该代码编译时没有错误和警告,但我不完全确定它在运行时确实使用了 GPU。

  1. 我如何验证这一点?我可以使用 Intel 或 NVIDIA 分析器来检查吗?
  2. 我的假设是否正确,即英特尔编译器支持卸载到 NVIDIA GPU?
  3. 或者我应该更好地使用 NVIDIA 编译器来启用 OpenMP 卸载到 NVIDIA 显卡?

gpu nvidia openmp offloading intel-oneapi

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

C中函数重载的替代方法

我正在寻找一种优雅的方法来避免重写函数,其实现几乎相同,但只有签名(输入参数的数量和它们的数据类型)是不同的.我知道在C中不可能进行函数重载.我也知道可变函数的存在.但我认为他们在这种情况下不会有所帮助.

考虑以下问题,我们需要计算三角形的面积.我们有两个函数实现两个不同的公式:S = 1/2bh和S = sqrt(s(sa)(sb)(sc)).除了计算区域外,每个函数还修改参数nb或nthr.最后,有一个顶级例程bisect_area_...,它在给定函数上启动二分程序area_tria1或area_tria2为参数nb或函数优化它nthr.目前我明确地实现了两个二分函数:一个用于签名,area_tria1另一个用于签名area_tria2.我觉得必须有更好,更优雅的方式,才能拥有一个通用的二分函数bisect_area_tria().请注意,在实际情况中,我手边的输入参数数据类型也不同.

下面是函数签名的骨架伪代码:

// Calculate area of triangle, modify and return parameter 'nb'
void area_tria1_nb(..., int *nb, double b, double h, double *S) {

    // change parameter 'nb'
    ...

    S = 0.5*b*h;
}

// Calculate area of triangle, modify and return parameter 'nthr'
void area_tria1_nthr(..., int *nthr, double b, double h, double *S) {

    // change …
Run Code Online (Sandbox Code Playgroud)

c overloading variadic-functions

0
推荐指数
1
解决办法
628
查看次数

Perl:替换捕获的组

我最近了解了 Perl 捕获组。我想在 C++ 源代码中查找特定的文本行并替换该行中的数值。

我正在寻找的线路如下:

outf << EPS << "\t" << TOL << "\t" << ort << "\t" << bkw << "\t" << gflops << "\t# 99-99" << endl;
Run Code Online (Sandbox Code Playgroud)

我要替换的数值是99-99. 我想用由两个数字组成的类似结构替换它,例如6-8,6-16等等。

我用来查找此特定行和数字结构的正则表达式是:

$txt =~ /outf.*\\t\# (\d+-\d+).*<< endl;/;
Run Code Online (Sandbox Code Playgroud)

数字结构用组正确捕获,并将存储在$1. 的$txt是包含整个C ++文件的源代码的字符串变量。

我改变了正则表达式,试图将匹配的组替换为:

$txt =~ s/outf.*\\t\# (\d+-\d+).*<< endl;/$eb-$mb/;
Run Code Online (Sandbox Code Playgroud)

但它用存储在变量$eb和 中的新数字结构替换了整行$mb。有没有一种优雅的方法来仅替换捕获的组(\d+-\d+)?

更新:反对,法官大人,我反对关闭我的问题。首先,它有一个更清晰的问题和一个最小的工作示例。其次,类似问题提供的答案既不雅观又繁琐。第三,Perl 因能够以多种不同方式解决同一问题而臭名昭著。我相信这里提供的答案更合适和清晰。

regex perl substitution

-1
推荐指数
1
解决办法
94
查看次数