我想使用 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) 我的任务是编写一个通过 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。
我正在寻找一种优雅的方法来避免重写函数,其实现几乎相同,但只有签名(输入参数的数量和它们的数据类型)是不同的.我知道在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) 我最近了解了 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 因能够以多种不同方式解决同一问题而臭名昭著。我相信这里提供的答案更合适和清晰。
c ×1
gpu ×1
html ×1
intel-oneapi ×1
jekyll ×1
liquid ×1
markdown ×1
minima ×1
nvidia ×1
offloading ×1
openmp ×1
overloading ×1
perl ×1
regex ×1
substitution ×1