当前位置: 首页 > news >正文

cuquantum 简介

1. 关于 cuquantum 概述

官方文档:

https://docs.nvidia.com/cuda/cuquantum/latest/appliance/overview.html#prerequisites

NVIDIA 的 cuQuantum 是一个专门用于量子计算的高性能库,旨在加速量子电路的模拟和量子算法的执行。cuQuantum 提供了一系列工具和功能,帮助研究人员和开发者在 NVIDIA GPU 上高效地进行量子计算。以下是关于 cuQuantum 的详细介绍:


1.1. 主要功能

量子电路模拟:cuQuantum 提供了高效的量子电路模拟器,能够模拟大规模的量子电路。它支持多种量子计算模型,包括量子门模型和量子态模型。
高性能计算:利用 NVIDIA GPU 的并行计算能力,cuQuantum 可以显著加速量子电路的模拟过程,特别是在处理复杂的量子态和大规模量子系统时。
灵活性:cuQuantum 设计为与其他量子计算框架(如 Qiskit、Cirq 等)兼容,允许用户在不同的量子计算环境中使用 cuQuantum 的功能。

1.2. 组件

cuQuantum 包含多个组件,主要包括:
cuStateVec:用于模拟量子态的库,支持高效的量子态向量操作和量子门应用。
cuTensorNetwork:用于处理张量网络的库,适用于模拟量子系统的复杂性,特别是在量子多体系统的研究中。
cuQuantum SDK:提供了一整套 API 和工具,帮助开发者构建和优化量子算法。

1.3. 应用场景

cuQuantum 可以应用于多个领域,包括:
量子算法开发:研究人员可以使用 cuQuantum 来开发和测试新的量子算法,评估其性能和效率。
量子模拟:在量子物理、化学和材料科学等领域,cuQuantum 可以用于模拟量子系统的行为,帮助理解复杂的量子现象。
量子计算教育:cuQuantum 也可以作为教育工具,帮助学生和研究人员学习量子计算的基本原理和应用。

2,docker 运行 cuquantum

2.1 下载 docker image

x86_64 平台

$ sudo docker pull nvcr.io/nvidia/cuquantum-appliance:24.03-x86_64

2.2 创建 容器

 创建一个可以使用全部gpu 的容器:

$ sudo  docker run --gpus all -it --rm nvcr.io/nvidia/cuquantum-appliance:24.03-x86_64

创建一个仅仅使用0到3的gpu:

$ sudo docker run --gpus '"device=0,3"' -it --rm nvcr.io/nvidia/cuquantum-appliance:24.03-x86_64

带文件夹映射:

$ sudo  docker run --gpus all --name cuquantum_docker_dir_01 -it -v /home/hipper/ex_cuquantum/tmp1_docker:/home/cuquantum/tmp1_docker --rm nvcr.io/nvidia/cuquantum-appliance:24.03-x86_64

 

2.3 运行并解释示例

3,分析一下examples

用 nvprof 看一下 调用了哪些 cuda kernel:

$ nvprof python  ./qiskit_ghz.py --nbits 16

cuquantum@be5c9947460c:~/examples$ nvprof python  ./qiskit_ghz.py --nbits 16
==2331== NVPROF is profiling process 2331, command: python ./qiskit_ghz.py --nbits 16
==2371== Warning: Child processes are not profiled. Use option --profile-child-processes to profile them.precision: single
{'1111111111111111': 518, '0000000000000000': 506}
backend: cusvaer_simulator_statevector
==2331== Profiling application: python ./qiskit_ghz.py --nbits 16
==2331== Profiling result:Type  Time(%)      Time     Calls       Avg       Min       Max  NameGPU activities:   39.15%  53.473us         1  53.473us  53.473us  53.473us  custatevec::_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a2447900::intervalCumulativeSumKernel(double*, int)22.28%  30.432us         1  30.432us  30.432us  30.432us  void cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>(unsigned int const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>*, cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800 const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>**, bool=0, int, int)9.11%  12.449us         3  4.1490us  4.1280us  4.1930us  void custatevec::constMatApplKernel_cc70<int=64, int=1, custatevec::CsComplex<float>, int=4, custatevec::EmptyBitInserter<int=4>>(float*, custatevec::HostMatrixArgument<custatevec::constMatApplKernel_cc70<int=64, int=1, custatevec::CsComplex<float>, int=4, custatevec::EmptyBitInserter<int=4>>, custatevec::CsComplex<float>>, int=4, custatevec::TargetBitArray<custatevec::CsComplex<float>>)7.17%  9.7920us         2  4.8960us  4.8640us  4.9280us  void custatevec::constMatApplKernel_cc70_Relocate<int=64, custatevec::CsComplex<float>, int=4, custatevec::EmptyBitInserter<int=4>, int=9>(float*, custatevec::HostMatrixArgument<custatevec::constMatApplKernel_cc70_Relocate<int=64, custatevec::CsComplex<float>, int=4, custatevec::EmptyBitInserter<int=4>, int=9>, custatevec::CsComplex<float>>, int=4, custatevec::TargetBitArray<custatevec::CsComplex<float>>, custatevec::TargetRelocator<int=4, custatevec::CsComplex<float>>)5.06%  6.9120us         1  6.9120us  6.9120us  6.9120us  custatevec::_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a2447900::sampleKernel(double const *, unsigned int, long, double, double const *, double const *, long, custatevec::BitPermutation<int=56> const &, long*)4.76%  6.4960us         1  6.4960us  6.4960us  6.4960us  _ZN10custatevec48_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a244790028blockwiseCumulativeSumKernelIZNS0_26calculateCumulativeAbs2SumINS_9CsComplexIfEEEEvPKT_iRNS_18WorkspaceAllocatorEP11CUstream_stPdEUllE_EEvS5_lSC_2.62%  3.5840us         2  1.7920us  1.7600us  1.8240us  [CUDA memcpy HtoD]1.83%  2.4960us         1  2.4960us  2.4960us  2.4960us  void _GLOBAL__N__1d82f122_17_subStateVector_cu_ed18732a::setZeroStateKernel<custatevec::CsComplex<float>>(float*, long)1.76%  2.4000us         1  2.4000us  2.4000us  2.4000us  custatevec::_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a2447900::applyPrevCumsumKernel(double*, long)1.73%  2.3680us         1  2.3680us  2.3680us  2.3680us  void _GLOBAL__N__1d82f122_17_subStateVector_cu_ed18732a::elementWiseKernel<custatevec::CsComplex<float>, _GLOBAL__N__1d82f122_17_subStateVector_cu_ed18732a::ApplyGlobalPhaseFunc>(float*, long, custatevec<_GLOBAL__N__1d82f122_17_subStateVector_cu_ed18732a::elementWiseKernel<custatevec::CsComplex<float>, _GLOBAL__N__1d82f122_17_subStateVector_cu_ed18732a::ApplyGlobalPhaseFunc>>::CsComplex<float>)1.31%  1.7920us         1  1.7920us  1.7920us  1.7920us  [CUDA memcpy DtoH]1.24%  1.6960us         1  1.6960us  1.6960us  1.6960us  _ZN10custatevec15transformKernelIZNS_7Sampler20revertToRandnumOrderEPKlPKiiP11CUstream_stPlEUllE_EEvT_ll1.03%  1.4080us         1  1.4080us  1.4080us  1.4080us  [CUDA memcpy DtoD]0.94%  1.2810us         1  1.2810us  1.2810us  1.2810us  _ZN10custatevec15transformKernelIZNS_7Sampler6sampleER17custatevecContextPlRKNS_17ConstPointerArrayIiEEPKdj25custatevecSamplerOutput_tEUllE_EEvT_llAPI calls:   85.96%  113.99ms        14  8.1423ms  1.1020us  95.611ms  cudaFree7.46%  9.8872ms         6  1.6479ms     920ns  9.8756ms  cudaMallocAsync2.25%  2.9832ms        14  213.08us  5.6500us  1.6952ms  cudaLaunchKernel1.22%  1.6129ms      1169  1.3790us     136ns  95.703us  cuDeviceGetAttribute1.15%  1.5256ms         1  1.5256ms  1.5256ms  1.5256ms  cudaFuncGetAttributes0.48%  639.60us         9  71.066us  4.3110us  168.95us  cudaMalloc0.42%  561.17us         1  561.17us  561.17us  561.17us  cudaGetSymbolAddress0.33%  440.17us      1546     284ns     147ns  4.0030us  cuGetProcAddress0.23%  303.23us         2  151.62us  131.73us  171.50us  cudaGetDeviceProperties0.10%  135.87us         2  67.934us  3.9910us  131.88us  cudaStreamSynchronize0.07%  91.601us        12  7.6330us     963ns  70.503us  cudaSetDevice0.06%  79.063us        10  7.9060us  3.8030us  14.732us  cuDeviceGetName0.05%  68.091us         4  17.022us  8.4410us  28.861us  cudaMemcpyAsync0.03%  45.182us        10  4.5180us  1.2030us  19.282us  cudaDeviceSynchronize0.03%  39.552us        38  1.0400us     480ns  13.937us  cudaEventCreateWithFlags0.03%  33.551us        38     882ns     395ns  5.2870us  cudaEventDestroy0.02%  27.488us        15  1.8320us     312ns  9.1020us  cudaGetDevice0.02%  27.099us         6  4.5160us     786ns  21.412us  cudaFreeAsync0.02%  23.308us        17  1.3710us     571ns  4.8130us  cudaPointerGetAttributes0.01%  15.184us         1  15.184us  15.184us  15.184us  cudaStreamDestroy0.01%  14.544us         1  14.544us  14.544us  14.544us  cudaStreamCreate0.01%  11.311us         2  5.6550us  2.0680us  9.2430us  cuDeviceGetPCIBusId0.01%  9.4620us         9  1.0510us     257ns  5.3700us  cudaGetDeviceCount0.01%  9.0560us        16     566ns     315ns  1.9580us  cudaDeviceGetAttribute0.01%  8.9320us         4  2.2330us  1.4670us  2.6370us  cuInit0.01%  6.9670us        35     199ns     133ns     703ns  cudaGetLastError0.00%  4.2820us        17     251ns     150ns     824ns  cuDeviceGet0.00%  3.3340us        10     333ns     229ns     601ns  cuDeviceTotalMem0.00%  2.8110us         9     312ns     193ns     843ns  cuDeviceGetCount0.00%  2.7800us         2  1.3900us     203ns  2.5770us  cuCtxGetCurrent0.00%  2.1550us        10     215ns     169ns     248ns  cuDeviceGetUuid0.00%  1.2690us         5     253ns     223ns     305ns  cuModuleGetLoadingMode0.00%  1.1090us         4     277ns     157ns     385ns  cuCtxGetDevice0.00%     869ns         4     217ns     181ns     257ns  cuDriverGetVersion0.00%     448ns         2     224ns     157ns     291ns  cudaPeekAtLastError

$ nvprof python  ./ghz.py

 cuquantum@be5c9947460c:~/examples$ nvprof python  ./ghz.py                  
==2389== NVPROF is profiling process 2389, command: python ./ghz.py
q(0),q(1),q(2)=101, 101, 101
==2389== Profiling application: python ./ghz.py
==2389== Profiling result:Type  Time(%)      Time     Calls       Avg       Min       Max  NameGPU activities:   50.03%  29.341us         1  29.341us  29.341us  29.341us  void cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>(unsigned int const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>*, cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800 const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>**, bool=0, int, int)10.75%  6.3040us         5  1.2600us  1.0560us  1.7280us  [CUDA memcpy HtoD]8.84%  5.1830us         1  5.1830us  5.1830us  5.1830us  _ZN10custatevec48_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a244790028blockwiseCumulativeSumKernelIZNS0_26calculateCumulativeAbs2SumINS_9CsComplexIfEEEEvPKT_iRNS_18WorkspaceAllocatorEP11CUstream_stPdEUllE_EEvS5_lSC_7.31%  4.2880us         2  2.1440us  1.9840us  2.3040us  void custatevec::constMatApplKernel<int=64, custatevec::CsComplex<float>, int=2, custatevec::EmptyBitInserter<int=2>>(float*, long, custatevec::HostMatrixArgument<custatevec::constMatApplKernel<int=64, custatevec::CsComplex<float>, int=2, custatevec::EmptyBitInserter<int=2>>, custatevec::CsComplex<float>>, int=2, custatevec::TargetBitArray<custatevec::CsComplex<float>>)6.49%  3.8080us         1  3.8080us  3.8080us  3.8080us  void cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>(unsigned int const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>*, cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800 const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>**, bool=0, int, int)5.29%  3.1040us         2  1.5520us  1.3760us  1.7280us  [CUDA memcpy DtoH]4.64%  2.7200us         1  2.7200us  2.7200us  2.7200us  custatevec::_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a2447900::sampleKernel(double const *, unsigned int, long, double, double const *, double const *, long, custatevec::BitPermutation<int=56> const &, long*)2.40%  1.4070us         1  1.4070us  1.4070us  1.4070us  [CUDA memcpy DtoD]2.18%  1.2800us         1  1.2800us  1.2800us  1.2800us  [CUDA memset]2.07%  1.2150us         1  1.2150us  1.2150us  1.2150us  _ZN10custatevec15transformKernelIZNS_7Sampler6sampleER17custatevecContextPlRKNS_17ConstPointerArrayIiEEPKdj25custatevecSamplerOutput_tEUllE_EEvT_llAPI calls:   78.70%  77.993ms        24  3.2497ms     365ns  77.952ms  cudaSetDevice15.01%  14.870ms         9  1.6522ms  3.7330us  11.715ms  cudaFree3.35%  3.3208ms         7  474.40us  6.1400us  1.8814ms  cudaLaunchKernel1.01%  1.0033ms       894  1.1220us     106ns  69.024us  cuDeviceGetAttribute0.60%  591.70us         1  591.70us  591.70us  591.70us  cudaFuncGetAttributes0.30%  294.50us      1156     254ns     117ns  28.017us  cuGetProcAddress0.24%  241.16us         2  120.58us  118.86us  122.30us  cudaGetDeviceProperties0.23%  227.60us         6  37.933us  2.9740us  78.188us  cudaMalloc0.21%  210.56us         1  210.56us  210.56us  210.56us  cudaGetSymbolAddress0.08%  76.766us         6  12.794us  7.0950us  14.465us  cudaMemcpyAsync0.05%  47.590us         8  5.9480us  2.7780us  11.755us  cuDeviceGetName0.04%  40.766us        22  1.8530us     231ns  10.119us  cudaGetDevice0.03%  26.450us        19  1.3920us     360ns  13.476us  cudaEventCreateWithFlags0.02%  19.417us         2  9.7080us  5.0390us  14.378us  cudaMemcpy0.01%  14.769us         1  14.769us  14.769us  14.769us  cudaMemset0.01%  14.649us         9  1.6270us     466ns  4.7300us  cudaPointerGetAttributes0.01%  13.839us         2  6.9190us  2.6740us  11.165us  cudaStreamSynchronize0.01%  13.305us         2  6.6520us  2.0260us  11.279us  cudaStreamCreate0.01%  13.086us        20     654ns     394ns  2.6680us  cudaEventDestroy0.01%  12.275us         2  6.1370us  2.5440us  9.7310us  cudaStreamDestroy0.01%  10.659us        39     273ns     100ns  4.9440us  cudaGetLastError0.01%  9.8780us         4  2.4690us  1.0810us  4.5180us  cudaDeviceSynchronize0.01%  8.6500us         2  4.3250us  1.8390us  6.8110us  cuDeviceGetPCIBusId0.01%  5.9160us        16     369ns     232ns  1.3640us  cudaDeviceGetAttribute0.00%  4.7430us         3  1.5810us  1.0890us  2.4190us  cuInit0.00%  4.1090us         8     513ns     208ns     914ns  cuDeviceTotalMem0.00%  2.2900us        10     229ns     113ns     465ns  cuDeviceGet0.00%  1.9400us         8     242ns     136ns     799ns  cuDeviceGetUuid0.00%  1.5700us         1  1.5700us  1.5700us  1.5700us  cudaEventCreate0.00%  1.3290us         6     221ns     149ns     481ns  cuDeviceGetCount0.00%  1.1760us         4     294ns     175ns     601ns  cudaPeekAtLastError0.00%     821ns         4     205ns     173ns     241ns  cuModuleGetLoadingMode0.00%     506ns         2     253ns     232ns     274ns  cudaGetDeviceCount0.00%     495ns         3     165ns     158ns     169ns  cuDriverGetVersion
(cuquantum-24.03) cuquantum@be5c9947460c:~/examples$ 

$ nvprof python  ./hidden_shift.py

      

(cuquantum-24.03) cuquantum@be5c9947460c:~/examples$ nvprof python  ./hidden_shift.py 
==2475== NVPROF is profiling process 2475, command: python ./hidden_shift.py
Secret shift sequence: [1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1]
Circuit:
(0, 0): ────H───X───@───X───H───@───H───M('result')───│           │       │
(1, 0): ────H───────@───H───────@───H───M─────────────│
(2, 0): ────H───X───@───X───H───@───H───M─────────────│           │       │
(3, 0): ────H───────@───H───────@───H───M─────────────│
(4, 0): ────H───────@───H───────@───H───M─────────────│           │       │
(5, 0): ────H───X───@───X───H───@───H───M─────────────│
(6, 0): ────H───X───@───X───H───@───H───M─────────────│           │       │
(7, 0): ────H───────@───H───────@───H───M─────────────│
(8, 0): ────H───────@───H───────@───H───M─────────────│           │       │
(9, 0): ────H───X───@───X───H───@───H───M─────────────│
(10, 0): ───H───X───@───X───H───@───H───M─────────────│           │       │
(11, 0): ───H───X───@───X───H───@───H───M─────────────
Sampled results:
Counter({'101001100111': 100})
Most common bitstring: 101001100111
Found a match: True
==2475== Profiling application: python ./hidden_shift.py
==2475== Profiling result:Type  Time(%)      Time     Calls       Avg       Min       Max  NameGPU activities:   41.65%  53.403us         1  53.403us  53.403us  53.403us  custatevec::_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a2447900::intervalCumulativeSumKernel(double*, int)22.96%  29.437us         1  29.437us  29.437us  29.437us  void cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>(unsigned int const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>*, cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800 const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>**, bool=0, int, int)5.29%  6.7830us         5  1.3560us  1.0560us  1.8230us  [CUDA memcpy HtoD]4.99%  6.3990us         3  2.1330us  1.9200us  2.3350us  void custatevec::constMatApplKernel_Relocate<int=64, custatevec::CsComplex<float>, int=2, custatevec::EmptyBitInserter<int=2>, int=8>(float*, custatevec::HostMatrixArgument<custatevec::constMatApplKernel_Relocate<int=64, custatevec::CsComplex<float>, int=2, custatevec::EmptyBitInserter<int=2>, int=8>, custatevec::CsComplex<float>>, int=2, custatevec::TargetBitArray<custatevec::CsComplex<float>>, custatevec::TargetRelocator<int=2, custatevec::CsComplex<float>>)4.72%  6.0480us         1  6.0480us  6.0480us  6.0480us  void cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>(unsigned int const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>*, cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800 const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>**, bool=0, int, int)4.34%  5.5670us         1  5.5670us  5.5670us  5.5670us  custatevec::_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a2447900::sampleKernel(double const *, unsigned int, long, double, double const *, double const *, long, custatevec::BitPermutation<int=56> const &, long*)4.24%  5.4390us         1  5.4390us  5.4390us  5.4390us  _ZN10custatevec48_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a244790028blockwiseCumulativeSumKernelIZNS0_26calculateCumulativeAbs2SumINS_9CsComplexIfEEEEvPKT_iRNS_18WorkspaceAllocatorEP11CUstream_stPdEUllE_EEvS5_lSC_4.24%  5.4390us         3  1.8130us  1.7920us  1.8240us  void custatevec::constMatApplLoopKernel<int=64, int=1, custatevec::CsComplex<float>, int=2, custatevec::EmptyBitInserter<int=2>>(float*, custatevec::HostMatrixArgument<custatevec::constMatApplLoopKernel<int=64, int=1, custatevec::CsComplex<float>, int=2, custatevec::EmptyBitInserter<int=2>>, custatevec::CsComplex<float>>, int=2, custatevec::TargetBitArray<custatevec::CsComplex<float>>)2.47%  3.1680us         2  1.5840us  1.4080us  1.7600us  [CUDA memcpy DtoH]1.67%  2.1440us         1  2.1440us  2.1440us  2.1440us  [CUDA memset]1.35%  1.7280us         1  1.7280us  1.7280us  1.7280us  custatevec::_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a2447900::applyPrevCumsumKernel(double*, long)1.10%  1.4080us         1  1.4080us  1.4080us  1.4080us  [CUDA memcpy DtoD]0.97%  1.2480us         1  1.2480us  1.2480us  1.2480us  _ZN10custatevec15transformKernelIZNS_7Sampler6sampleER17custatevecContextPlRKNS_17ConstPointerArrayIiEEPKdj25custatevecSamplerOutput_tEUllE_EEvT_llAPI calls:   78.80%  76.443ms        28  2.7301ms     351ns  76.390ms  cudaSetDevice15.29%  14.828ms         9  1.6476ms  3.0460us  11.683ms  cudaFree1.93%  1.8769ms         1  1.8769ms  1.8769ms  1.8769ms  cudaFuncGetAttributes1.51%  1.4641ms        13  112.62us  4.0570us  1.0059ms  cudaLaunchKernel1.05%  1.0185ms       894  1.1390us     107ns  60.991us  cuDeviceGetAttribute0.27%  262.48us      1156     227ns     115ns  1.5530us  cuGetProcAddress0.24%  232.01us         2  116.01us  113.30us  118.71us  cudaGetDeviceProperties0.24%  230.85us         6  38.475us  2.9520us  81.170us  cudaMalloc0.21%  206.58us         1  206.58us  206.58us  206.58us  cudaGetSymbolAddress0.15%  145.30us         6  24.216us  7.0990us  46.920us  cudaMemcpyAsync0.05%  45.538us         8  5.6920us  2.8540us  11.606us  cuDeviceGetName0.04%  39.664us        22  1.8020us     238ns  11.700us  cudaGetDevice0.03%  32.140us         1  32.140us  32.140us  32.140us  cudaMemset0.03%  26.795us        21  1.2750us     357ns  9.1970us  cudaPointerGetAttributes0.02%  21.216us        19  1.1160us     371ns  10.852us  cudaEventCreateWithFlags0.02%  20.466us         2  10.233us  5.4000us  15.066us  cudaMemcpy0.02%  20.445us        39     524ns     102ns  11.355us  cudaGetLastError0.02%  15.262us        20     763ns     410ns  3.5490us  cudaEventDestroy0.01%  13.969us         2  6.9840us  3.2660us  10.703us  cudaStreamDestroy0.01%  13.245us         2  6.6220us  1.9790us  11.266us  cudaStreamCreate0.01%  10.542us         2  5.2710us  2.5070us  8.0350us  cudaStreamSynchronize0.01%  9.0670us         4  2.2660us  1.1500us  3.9240us  cudaDeviceSynchronize0.01%  7.4570us         2  3.7280us  1.3670us  6.0900us  cuDeviceGetPCIBusId0.01%  5.9220us        16     370ns     265ns  1.2850us  cudaDeviceGetAttribute0.00%  4.3070us         3  1.4350us  1.0770us  1.9440us  cuInit0.00%  2.5300us        10     253ns     104ns  1.0290us  cuDeviceGet0.00%  2.0550us         8     256ns     147ns     416ns  cuDeviceTotalMem0.00%  1.8860us         4     471ns     372ns     683ns  cudaPeekAtLastError0.00%  1.6140us         1  1.6140us  1.6140us  1.6140us  cudaEventCreate0.00%  1.5720us         6     262ns     153ns     689ns  cuDeviceGetCount0.00%  1.4170us         8     177ns     133ns     259ns  cuDeviceGetUuid0.00%  1.0910us         2     545ns     332ns     759ns  cudaGetDeviceCount0.00%     774ns         4     193ns     137ns     248ns  cuModuleGetLoadingMode0.00%     468ns         3     156ns     150ns     163ns  cuDriverGetVersion
(cuquantum-24.03) cuquantum@be5c9947460c:~/examples$ 

$ nvprof python  ./simon.py

(cuquantum-24.03) cuquantum@be5c9947460c:~/examples$ nvprof python  ./simon.py        
==2559== NVPROF is profiling process 2559, command: python ./simon.py
Secret string = [0 1 0]
Circuit:┌───┐   ┌──┐
(0, 0): ───H────@───────H─────────M('result')───│                 │
(1, 0): ───H────┼@──────@─────H───M─────────────││      │         │
(2, 0): ───H────┼┼@─────┼H────────M─────────────│││     │
(3, 0): ────────X┼┼─────┼×──────────────────────││     ││
(4, 0): ─────────X┼─────X┼──────────────────────│      │
(5, 0): ──────────X──────×──────────────────────└───┘   └──┘
Most common answer was : ('[0 1 0]', 100)
==2559== Profiling application: python ./simon.py
==2559== Profiling result:Type  Time(%)      Time     Calls       Avg       Min       Max  NameGPU activities:   46.93%  7.9627ms       276  28.850us  28.606us  29.470us  void cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>(unsigned int const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>*, cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800 const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<double, int, unsigned int>::Policy800, bool=0, double, int, unsigned int>**, bool=0, int, int)12.35%  2.0960ms      1104  1.8980us  1.6640us  2.3350us  void custatevec::constMatApplKernel<int=64, custatevec::CsComplex<float>, int=2, custatevec::EmptyBitInserter<int=2>>(float*, long, custatevec::HostMatrixArgument<custatevec::constMatApplKernel<int=64, custatevec::CsComplex<float>, int=2, custatevec::EmptyBitInserter<int=2>>, custatevec::CsComplex<float>>, int=2, custatevec::TargetBitArray<custatevec::CsComplex<float>>)10.28%  1.7437ms      1380  1.2630us  1.0230us  2.0800us  [CUDA memcpy HtoD]8.32%  1.4108ms       276  5.1110us  5.0550us  5.2470us  _ZN10custatevec48_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a244790028blockwiseCumulativeSumKernelIZNS0_26calculateCumulativeAbs2SumINS_9CsComplexIfEEEEvPKT_iRNS_18WorkspaceAllocatorEP11CUstream_stPdEUllE_EEvS5_lSC_6.07%  1.0299ms       276  3.7310us  3.6790us  3.8400us  void cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>(unsigned int const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>*, cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800 const *, cub::DeviceRadixSortSingleTileKernel<cub::DeviceRadixSortPolicy<long, cub::NullType, unsigned int>::Policy800, bool=0, long, cub::NullType, unsigned int>**, bool=0, int, int)5.35%  907.08us       276  3.2860us  3.2310us  3.5200us  custatevec::_GLOBAL__N__2d201eb2_15_naiveSampler_cu_a2447900::sampleKernel(double const *, unsigned int, long, double, double const *, double const *, long, custatevec::BitPermutation<int=56> const &, long*)4.16%  705.46us       552  1.2780us  1.1510us  1.6950us  [CUDA memcpy DtoH]2.30%  390.33us       276  1.4140us  1.2800us  1.5350us  [CUDA memset]2.24%  380.11us       276  1.3770us  1.3430us  1.4400us  [CUDA memcpy DtoD]2.00%  340.07us       276  1.2320us  1.1830us  1.2810us  _ZN10custatevec15transformKernelIZNS_7Sampler6sampleER17custatevecContextPlRKNS_17ConstPointerArrayIiEEPKdj25custatevecSamplerOutput_tEUllE_EEvT_llAPI calls:   23.28%  86.005ms      6626  12.979us     356ns  77.873ms  cudaSetDevice18.26%  67.458ms      2209  30.537us     617ns  11.727ms  cudaFree17.00%  62.811ms      1656  37.929us  2.8550us  94.336us  cudaMalloc16.76%  61.944ms       552  112.22us  102.57us  133.54us  cudaGetDeviceProperties8.29%  30.642ms      2484  12.335us  3.6740us  1.8943ms  cudaLaunchKernel7.55%  27.890ms      1656  16.841us  4.7660us  416.00us  cudaMemcpyAsync1.07%  3.9504ms       552  7.1560us  5.0270us  17.266us  cudaMemcpy1.03%  3.7977ms      9939     382ns     100ns  490.27us  cudaGetLastError1.01%  3.7487ms      4140     905ns     331ns  24.341us  cudaPointerGetAttributes0.99%  3.6644ms      4972     737ns     231ns  12.264us  cudaGetDevice0.74%  2.7287ms      5520     494ns     310ns  76.789us  cudaEventDestroy0.72%  2.6553ms      5244     506ns     346ns  12.715us  cudaEventCreateWithFlags0.62%  2.2923ms       552  4.1520us  1.4640us  37.640us  cudaStreamCreate0.52%  1.9392ms       276  7.0260us  6.2760us  20.021us  cudaMemset0.51%  1.8667ms       552  3.3810us  1.6160us  14.254us  cudaStreamDestroy0.42%  1.5343ms      1104  1.3890us     814ns  10.198us  cudaDeviceSynchronize0.34%  1.2702ms       552  2.3010us  1.5970us  11.166us  cudaStreamSynchronize0.27%  1.0103ms       894  1.1300us     106ns  61.499us  cuDeviceGetAttribute0.27%  1.0098ms         1  1.0098ms  1.0098ms  1.0098ms  cudaFuncGetAttributes0.10%  386.38us      1104     349ns     105ns     766ns  cudaPeekAtLastError0.09%  346.86us       276  1.2560us  1.0510us  6.8000us  cudaEventCreate0.07%  266.56us      1156     230ns     115ns  1.3930us  cuGetProcAddress0.06%  204.05us         1  204.05us  204.05us  204.05us  cudaGetSymbolAddress0.01%  46.269us         8  5.7830us  2.7020us  11.757us  cuDeviceGetName0.00%  7.5370us         2  3.7680us  1.4460us  6.0910us  cuDeviceGetPCIBusId0.00%  5.6830us         3  1.8940us  1.1150us  2.3370us  cuInit0.00%  5.3210us        16     332ns     239ns     971ns  cudaDeviceGetAttribute0.00%  2.9670us         6     494ns     179ns  1.7530us  cuDeviceGetCount0.00%  2.4640us         8     308ns     161ns     608ns  cuDeviceTotalMem0.00%  1.7730us        10     177ns     104ns     440ns  cuDeviceGet0.00%  1.3460us         8     168ns     127ns     217ns  cuDeviceGetUuid0.00%  1.2010us         2     600ns     400ns     801ns  cudaGetDeviceCount0.00%     942ns         4     235ns     161ns     367ns  cuModuleGetLoadingMode0.00%     474ns         3     158ns     148ns     169ns  cuDriverGetVersion
(cuquantum-24.03) cuquantum@be5c9947460c:~/examples$ 

4, 官方cu语言调用 cuquantum 示例

将源代码下载到映射进 docker container 中的文件夹里,

下载示例源代码:

$ git clone https://github.com/NVIDIA/cuQuantum.git

示例代码位置:

$ tree

相关文章:

cuquantum 简介

1. 关于 cuquantum 概述 官方文档&#xff1a; https://docs.nvidia.com/cuda/cuquantum/latest/appliance/overview.html#prerequisites NVIDIA 的 cuQuantum 是一个专门用于量子计算的高性能库&#xff0c;旨在加速量子电路的模拟和量子算法的执行。cuQuantum 提供了一系列…...

小程序如何引入腾讯位置服务

小程序如何引入腾讯位置服务 1.添加服务 登录 微信公众平台 注意&#xff1a;小程序要企业版的 第三方服务 -> 服务 -> 开发者资源 -> 开通腾讯位置服务 在设置 -> 第三方设置 中可以看到开通的服务&#xff0c;如果没有就在插件管理中添加插件 2.腾讯位置服务…...

【react】使用antd Table渲染数据遇到的报错问题

记录自己在开发过程中遇到的报错问题&#xff1a; 目录 原本写法&#xff1a;错误分析&#xff1a;解决方案&#xff1a; 原本写法&#xff1a; render: (text) > {console.log(text, "111111text");console.log(typeof text, "111111text");return t…...

55_OpenResty开发入门

Nginx编程需要用到Lua语言,因此我们必须先学习Lua的基本语法。Nginx本身也是C语言开发,因此也允许基于Lua做拓展。多级缓存的实现离不开Nginx编程,而Nginx编程又离不开OpenResty。 1.OpenResty概述 OpenResty是一款基于NGINX和LuaJIT的Web平台。通过Lua扩展NGINX实现的可伸…...

(即插即用模块-Attention部分) 四十四、(ICIP 2022) HWA 半小波注意力

文章目录 1、Half Wavelet Attention2、代码实现 paper&#xff1a;HALFWAVELET ATTENTION ON M-NET FOR LOW-LIGHT IMAGE ENHANCEMENT Code&#xff1a;https://github.com/FanChiMao/HWMNet 1、Half Wavelet Attention 传统的图像增强方法主要关注图像在空间域的特征信息&am…...

链家房价数据爬虫和机器学习数据可视化预测

完整源码项目包获取→点击文章末尾名片&#xff01;...

全网首发:编译libssh,产生类似undefined reference to `EVP_aes_256_ctr@OPENSSL_1_1_0‘的大量错误

具体错误 前面和后面的&#xff1a; /opt/linux/x86-arm/aarch64-mix210-linux/host_bin/../lib/gcc/aarch64-linux-gnu/7.3.0/../../../../aarch64-linux-gnu/bin/ld: warning: libcrypto.so.1.1, needed by ../lib/libssh.so.4.10.1, not found (try using -rpath or -rpat…...

springboot 集成javaFx 两个面板之间如何进行跳转

1.创建两个面板 可参考博主的 java8 springboot 集成javaFx 实现一个客户端程序 文章来实现 2.完善代码 以下是博主创建的两个模板 博主在这里实现的是登录跳转功能,注意:这里登录按钮的触发实现方式做了以下小小的改动,也可根据自己的习惯来处理 相较第一篇文章,博主在Lo…...

vue-cli项目配置使用unocss

在了解使用了Unocss后&#xff0c;就完全被它迷住了。接手过的所有项目都配置使用了它&#xff0c;包括一些旧项目&#xff0c;也跟同事分享了使用Unocss的便捷性。 这里分享一下旧项目如何配置和使用Unocss的&#xff0c;项目是vue2vue-cli构建的&#xff0c;node<20平常开…...

ASP.NET Core - IStartupFilter 与 IHostingStartup

ASP.NET Core - IStartupFilter 与 IHostingStartup 1. IStartupFilter2 IHostingStartup2.5.1 创建外部程序集2.5.2 激活外部程序集 1. IStartupFilter 上面讲到的方式虽然能够根据不同环境将Startup中的启动逻辑进行分离&#xff0c;但是有些时候我们还会可以根据应用中的功能…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证5)

用户在前端页面登录成功后会从服务端获取Token&#xff0c;后续调用服务器的服务接口时都得带着Token&#xff0c;否则就会验证失败。之前使用postman测试的时候&#xff0c;获取Token后再调用其它服务都是人工将Token添加到Header中&#xff0c;网页中没法这么做&#xff0c;只…...

【Vue】let、const、var的区别、适用场景

let、const、var&#xff0c;有哪些区别&#xff0c;适用场景 var 特点&#xff1a; var 是 JavaScript 中最传统的变量声明方式。具有函数作用域&#xff0c;即在函数内声明的 var 变量&#xff0c;在整个函数内都可以访问。变量提升&#xff1a;使用 var 声明的变量会被提升…...

【llama_factory】qwen2_vl训练与批量推理

训练llama factory配置文件 文件&#xff1a;examples/train_lora/qwen2vl_lora_sft.yaml ### model model_name_or_path: qwen2_vl/model_72b trust_remote_code: true### method stage: sft do_train: true finetuning_type: lora lora_target: all### dataset dataset: ca…...

计算机视觉与深度学习:使用深度学习训练基于视觉的车辆检测器(MATLAB源码-Faster R-CNN)

在人工智能领域,计算机视觉是一个重要且充满活力的研究方向。它使计算机能够理解和分析图像和视频数据,从而做出有意义的决策。其中,目标检测是计算机视觉中的一项关键技术,它旨在识别并定位图像中的多个目标对象。车辆检测作为目标检测的一个重要应用,在自动驾驶、智能交…...

Python 扫描枪读取发票数据导入Excel

财务需要一个扫描枪扫描发票文件&#xff0c;并将主要信息录入Excel 的功能。 文件中sheet表的列名称&#xff0c;依次为&#xff1a;发票编号、发票编码、日期、金额、工号、扫描日期。 扫描的时候&#xff0c;Excel 文件需要关闭&#xff0c;否则会报错。 import openpyxl …...

SpringMVC复习笔记

文章目录 SpringMVC 概念和基本使用SpringMVC 简介SpringMVC 核心组件和调用流程SpringMVC 基本使用第一步&#xff1a;导入依赖第二步&#xff1a;Controller 层开发第三步&#xff1a;SpringMVC 配置类配置核心组件第四步&#xff1a;SpringMVC 环境搭建第五步&#xff1a;部…...

arcgis提取不规则栅格数据的矢量边界

效果 1、准备数据 栅格数据:dem或者dsm 2、栅格重分类 分成两类即可 3、新建线面图层 在目录下选择预先准备好的文件夹,点击右键,选择“新建”→“Shapefile”,新建一个Shapefile文件。 在弹出的“新建Shapefile”对话框内“名称”命名为“折线”,“要素类型”选…...

【机器学习】零售行业的智慧升级:机器学习驱动的精准营销与库存管理

我的个人主页 我的领域&#xff1a;人工智能篇&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;&#x1f44d;点赞 收藏❤ 在当今数字化浪潮汹涌澎湃的时代&#xff0c;零售行业正站在转型升级的十字路口。市场竞争的白热化使得企业必须另辟蹊径&#xff0…...

链路追踪SkyWalking

链路追踪 链路追踪作用链路追踪的关键概念链路追踪的工作原理常用链路追踪工具链路追踪的实现步骤链路追踪的典型场景 SkyWalkingSkyWalking 的主要功能SkyWalking 的架构安装 SkyWalking从 SkyWalking 的官方 GitHub 仓库 下载最新版本。配置后端存储SkyWalking使用&#xff0…...

linux下的线程

一、pthread 线程 线程可以说是轻量级的进程&#xff0c;一般是一个进程中的多个任务。 进程&#xff1a;系统中的最小资源分配单元 线程:系统中最小执行单元 二、线程的特征 1、共享资源 2、效率高30% 3.使用第三方库&#xff08;头文件加pthread.h 编译时添加 -lpthre…...

《研发管理 APQP 软件系统》——汽车电子行业的应用收益分析

全星研发管理 APQP 软件系统在汽车电子行业的应用收益分析 在汽车电子行业&#xff0c;技术革新迅猛&#xff0c;市场竞争激烈。《全星研发管理 APQP 软件系统》的应用&#xff0c;为企业带来了革命性的变化&#xff0c;诸多收益使其成为行业发展的关键驱动力。 《全星研发管理…...

mysql、oracle、sqlserver的区别

一、保存数据的持久性&#xff1a; MySQL&#xff1a;是在数据库更新或者重启&#xff0c;则会丢失数据。 Oracle&#xff1a;把提交的sql操作线写入了在线联机日志文件中&#xff0c;保持到了磁盘上&#xff0c;可以随时恢复。 SqlServer&#xff1a;2…...

CV(10)--目标检测

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 目标检测 object detection&#xff0c;就是在给定的图片中精确找到物体所在位置&#xff0c;并标注出物体的类别;输出的是分类类别label物体的外框&#xff08;x, y, width, height&#xff09;。 目标检测算法&#xff1a…...

SQL LAST()

SQL中的LAST()函数是一个用于返回指定列中最后一个记录值的函数。然而&#xff0c;需要注意的是&#xff0c;这个函数并不是SQL标准的一部分&#xff0c;因此并不是所有数据库系统都支持它。具体来说&#xff0c;只有MS Access直接支持LAST()函数【0†source】。 在其他数据库…...

传统以太网问题与VLAN技术详解

传统以太网的问题 广播域&#xff1a;在网络中能接收同一广播信息的所有设备&#xff08;计算机、交换机&#xff09;等的集合 说明&#xff1a;在一个广播域内&#xff0c;当一个设备发送广播帧时&#xff0c;该域内的所有设备都能接收到这个广播帧。工作原理&#xff1a;在以…...

Java 面试题 - ArrayList 和 LinkedList 的区别,哪个集合是线程安全的?

Java 面试题 - ArrayList 和 LinkedList 的区别&#xff0c;哪个集合是线程安全的&#xff1f; 在 Java 开发中&#xff0c;ArrayList和LinkedList是两个常用的集合类&#xff0c;它们在数据结构和性能上有诸多不同&#xff0c;同时线程安全性也各有特点。深入理解这些差异&am…...

flutter 安卓端打包

在 Flutter 中打包 Android 应用程序是一个相对简单的过程。你可以使用 Flutter 的命令行工具来构建并打包你的 APK 或 AAB(Android App Bundle)。以下是打包 Flutter Android 应用的步骤: 1. 安装 Flutter 环境 确保你已经安装了 Flutter SDK,并且正确配置了 Android 开…...

前端开发:CSS背景属性

1.背景颜色 background-color: [ 指定颜色 ] background-color :blue&#xff1b; background-color : transparent //设置背景是透明的 2.背景图片 background-image : url ( ... ) 1. url 不要遗漏 . 2. url 可以是绝对路径 , 也可以是相对路径 3. url 上可以…...

【Python通过UDP协议传输视频数据】(界面识别)

提示&#xff1a;界面识别项目 前言 随着网络通信技术的发展&#xff0c;视频数据的实时传输在各种场景中得到了广泛应用。UDP&#xff08;User Datagram Protocol&#xff09;作为一种无连接的协议&#xff0c;凭借其低延迟、高效率的特性&#xff0c;在实时性要求较高的视频…...

centos 8 中安装Docker

注&#xff1a;本次样式安装使用的是centos8 操作系统。 1、镜像下载 具体的镜像下载地址各位可以去官网下载&#xff0c;选择适合你们的下载即可&#xff01; 1、CentOS官方下载地址&#xff1a;https://vault.centos.org/ 2、阿里云开源镜像站下载&#xff1a;centos安装包…...

leetcode hot 100 -划分字母区间

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 示例 1&am…...

CSS 元素的显示模式(块元素,行内元素,行内块元素)

一. 块元素&#xff08;block&#xff09; 又称&#xff1a;块级元素 特点&#xff1a; 1. 在页面中独占一行&#xff0c;不会与任何元素共用一行&#xff0c;是从上到下排列的。 2. 默认宽度&#xff1a;撑满父元素。 3. 默认高度&#xff1a;由内容撑开。 4. 可以通过 CSS 设…...

鸿蒙UI开发——键盘弹出避让模式设置

1、概 述 我们在鸿蒙开发时&#xff0c;不免会遇到用户输入场景&#xff0c;当用户准备输入时&#xff0c;会涉及到输入法的弹出&#xff0c;我们的界面针对输入法的弹出有两种避让模式&#xff1a;上抬模式、压缩模式。 下面针对输入法的两种避让模式的设置做简单介绍。 2、…...

Multi-Agent如何设计

文章小结 研究背景和目的 在单一大语言模型长期主导人工智能领域的背景下&#xff0c;多智能体系统在对话任务解决中逐渐崭露头角。 虽然先前的研究已经展示了多智能体系统在推理任务和创造性工作中的潜力&#xff0c;但对于其在对话范式方面的局限性以及单个智能体的影响&am…...

git操作(bitbucket仓库)

在代码远程版本控制和提交过程中需要经常使用git命令&#xff0c;熟练使用git是一个软件工程师必备的技能之一。 将主版本代码fork到自己的 bitbucket 子仓库中 克隆到本地 利用ssh链接进行克隆&#xff0c;将 fork 的子仓库克隆到本地。 git clone ssh://{$你fork的子bitbu…...

【MySQL | 三、 表的约束介绍】

举例表结构 字段名称字段类型是否NULL键值默认值附加信息FieldTypeNullKeyDefaultExtraidintNoUNI(唯一键&#xff09;Nullauto_incrementnameverchar(10)NoPRI(主键)NullgenderenumNomanagetinyintYesNulltelphoneintYesNullhome_idintyesMUL(外键)Null 目录 举例表结构1. 空…...

音频DSP的发展历史

音频数字信号处理&#xff08;DSP&#xff09;的发展历史是电子技术、计算机科学和音频工程共同进步的结果。这个领域的进展不仅改变了音乐制作、音频后期制作和通信的方式&#xff0c;也影响了音频设备的设计和功能。以下是对音频DSP发展历史的概述&#xff1a; 早期概念和理论…...

学习笔记-Kotlin

准备工作 下载安装kotlin编译器,记录此笔记时的版本是v1.2.10&#xff0c;目前最新发布版本是v2.1.10解压下载的安装包,配置环境变量指向bin目录(官方指导). 如果不想在本地安装环境,也可以使用在线编辑器 尝试编写第一个helloWorld 新建一个名为hello.kt的文件,内容如下: f…...

linux解压命令(可整理到CSDN)

1. tar -xvf ffmpeg-7.0.2.tar.xz x&#xff1a;表示解压文件。 v&#xff1a;表示在解压过程中显示文件&#xff08;verbose模式&#xff09;。这个选项是可选的&#xff0c;加上它可以让你看到正在解压的文件列表&#xff0c;但如果不加也不会影响解压过程。 f&#xff1a;…...

Boost Asio TCP异步服务端和客户端

服务端 消息分两次发送&#xff0c;第一次发送head&#xff0c;第二次发送body。接收也是先接收head&#xff0c;然后通过head结构中的body长度字段再接收body。 TcpServer.h #pragma once #include <atomic> #include <vector> #include <unordered_set> #…...

【Apache Doris】周FAQ集锦:第 29 期

引言 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和开发者分享有关 Apache Doris 的常见问题。 通过这个每周 FAQ 栏目&#xff0c;希望帮助社…...

速通Docker === 介绍与安装

目录 Docker介绍 Docker优势 Docker组件 Docker CLI (命令行接口) Docker Host (Docker 守护进程) 容器 (Container) 镜像 (Image) 仓库 (Registry) 关系总结 应用程序部署方式 传统部署 (Traditional Deployment) 虚拟化部署 (Virtualization Deployment) 容器部署…...

云平台一键部署【Video-Background-Removal】视频换背景,无任何限制,随意换

Video-Background-Removal 是一款革命性的视频背景替换工具&#xff0c;旨在让用户轻松实现视频背景的快速更换。无论你是专业创作者还是普通用户&#xff0c;这款软件都能让你在几秒钟内改变背景&#xff0c;完全消除限制&#xff0c;随心所欲&#xff0c;随时随地想换就换&am…...

AI刷题-最大矩形面积问题、小M的数组变换

目录 一、最大矩形面积问题 问题描述 输入格式 输出格式 输入样例 输出样例 数据范围 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、小M的数组变换 问题描述 测试样例 解题思路&#xff1a; 问题…...

ts类型断言各种写法

在 TypeScript 中&#xff0c;类型断言&#xff08;Type Assertion&#xff09;有两种主要的写法&#xff1a;**尖括号语法** (<Type>) 和 **as 关键字语法**。这两种方式都可以用来告诉编译器某个表达式的具体类型&#xff0c;但它们在不同的上下文中有各自的适用性和局…...

第十二章:算法与程序设计

文章目录&#xff1a; 一&#xff1a;基本概念 1.算法与程序 1.1 算法 1.2 程序 2.编译预处理 3.面向对象技术 4.程序设计方法 5.SOP标志作业流程 6.工具 6.1 自然语言 6.2 流程图 6.3 N/S图 6.4 伪代码 6.5 计算机语言 二&#xff1a;程序设计 基础 1.常数 …...

计算机网络 | IP地址、子网掩码、网络地址、主机地址计算方式详解

关注&#xff1a;CodingTechWork 引言 在计算机网络中&#xff0c;IP地址、子网掩码和网络地址是构建网络通信的基本元素。无论是企业网络架构、互联网连接&#xff0c;还是局域网&#xff08;LAN&#xff09;配置&#xff0c;它们都起着至关重要的作用。理解它们的工作原理&a…...

一文读懂高频考题!进程、线程、协程最全方位对比剖析

一、基本概念 (一)定义与特征 进程 在计算机科学里,进程是操作系统正在运行的程序的实例,是资源分配的基本单位。就好比每个进程都像一个小王国,它有自己独立的领土,这里的领土就是内存空间、代码块、数据和文件句柄等资源。比如说,你在电脑上同时打开一个文字处理软件…...

Elasticsearch搜索引擎(二)

RestClient 基础 前言一、RestAPI1. 初始化 *RestClient*2. 创建索引库3. 删除索引库4. 判断索引库是否存在 二、RestClient操作文档1.新增文档2.查询文档3. 删除文档4. 修改文档5. 批量导入文档 前言 ES官方提供了各种不同语言的客户端用来操作ES&#xff0c;这些客户端的本质…...

docker 部署 Kafka 单机和集群

一、准备工作 安装 Docker 确保本机已安装 Docker。可以通过以下命令检查 Docker 是否已安装&#xff1a;docker --version如果未安装&#xff0c;可以访问 Docker 官网下载并安装 Docker Desktop&#xff08;Windows 和 Mac&#xff09;或使用包管理器安装&#xff08;Linux&…...