xcb 截图

通过 xcb_get_image 可以进行截图:

1xcb_get_image_cookie_t
2xcb_get_image (xcb_connection_t *c,               // X连接
3               uint8_t           format,          // 格式 
4               xcb_drawable_t    drawable,        // 要截图的目标,例如窗口,截全屏则为 root 窗口
5               int16_t           x,               // 截图的起点 x 坐标

xcb 获取事件

获取窗口事件

1// 获取窗口事件
2#include <stdio.h>
3#include <xcb/xcb.h>
4
5int main()

xcb 获取鼠标指针的坐标

1typedef struct xcb_query_pointer_reply_t {
2    uint8_t      response_type;
3    uint8_t      same_screen;
4    uint16_t     sequence;
5    uint32_t     length;
6    xcb_window_t root;
7    xcb_window_t child;

显示 X11 的空闲时间

1// gcc main.c -lX11 -lXss
2#include <stdio.h>
3#include <X11/extensions/scrnsaver.h>
4
5int main(void) 
6{
7    Display* dpy = XOpenDisplay(NULL);

Linux CUDA 驱动失效问题的解决办法

在使用 Linux 的时候,如果经常进行升级,时不时会遇到驱动失效的问题:

1$ nvidia-smi 
2NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. 
3Make sure that the latest NVIDIA driver is installed and running.

NVIDIA驱动安装成功但无法使用

现象

1$ nvidia-smi
2NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
3
4$ dkms status
5nvidia, 470.86, 5.13.0-22-generic, x86_64: installed

Ubuntu CUDA 驱动升级失败的问题

升级时失败

1sudo apt update
2sudo apt upgrade

错误信息:

Windows 上 CMake 找不到 CUDA 工具集的问题

问题1

1CMake Error at C:/Program Files/CMake/share/cmake-3.22/Modules/CMakeDetermineCompilerId.cmake:470 (message):
2  No CUDA toolset found.

需要将 CUDA 目录里的 MSBuildExtensions 赋值 Visual Studio 的目录中:

C 语言简易日志库

1#ifndef LOG_H
2#define LOG_H
3
4#include <stdio.h>
5
6
7// Log Tag

SIMD 示例

所谓 SIMD 就是一次指令计算多个数据,例如 AVX256 一次计算 256 位数据。

  • int 是 32 位,所以 AVX256 一次计算 8 个
  • double 是 64 位,所以一次计算 4 个

以计算 double 加法为例:

1__m256d m256x; // 定义标识 AVX 寄存器的变量
2__m256d m256y;