周记 2020.02.24-03.01

1.C++互斥锁

1
2
3
#include <mutex>

std::mutex

2.解决VapourSynth版本问题?

1
2
3
#if VAPOURSYNTH_API_VERSION < 0x30002
#define FMTC_RESAMPLE_OLD_FIELDBASED_BEHAVIOUR
#endif

(来自KNLmeansCL?)

3.OpenCL

看了《OpenCL异构计算》的两个例子,借助OpenCL加速图像直方图处理和卷积计算。

4.OpenCL设计思路的理解

我能理解到的几点…

  • OpenCL中存在主机与设备共享内存?(定义了通用的内存模型,以实现跨平台)
  • 类似cuda,OpenCL的计算模式大概也是“先传输数据到设备,计算后再传回主机”?(OpenCL通过上下文(Context)在主机与设备间通信)
  • OpenCL主要使用 SIMD(数据并行)和 MIMD(任务并行)
  • CPU 线程 = OpenCL 工作项(Work Item)

5.OpenCL与C++

在C++中使用OpenCL,可以直接调用OpenCL库,也可以借助Boost库的compute库调用。

可以不写的.cl文件的说。

6.C++ STL库

C++标准模板库,(抛开string)可以分为两条线路,容器与方法。元素的插入、删除和访问方法不同,构成了不同容器的差别,而方法可以理解成一个函数,或者说一种操作。

例如容器vectorqueue,方法atemplace

感觉现在,我已经把21天学通C++这本书从总体上做了概览。

7.Mkdocs:写自己的图书

去搜算法导论的课后题,偶然发现了Mkdocs,感觉比gitbooks自由度更高。也知道了原来github pages不仅可以用来搭博客,还可以做一般项目的展示页。github展示页配合Mkdocs就可以实现自己的图书。

8.交流

在D9上帖出了AreaResize,通过交流我才意识到,之前我修改的JincResize,以及其他常用的Resize方法,都可以视为卷积操作(所以这也带来了OpenCL加速或指令集优化的可能)。