求四次函数最小值的CPU/GPU库
QuarticSolver的Python项目详细描述
CUDA四次解算器
为CPU和Nvidia GPU编写的通用三次方程解算器和四次方程最小化解算器,有关更多详细信息和结果,请参阅:https://arxiv.org/abs/1903.10041。该库可用于C++ +CUDA以及Python使用pybDun11。在
运行解算器
要求
- 运行GPU解算器需要支持CUDA 9.0+的GPU和nvcc
- CMake 3.8以上
- Python3.6,numpy(如果使用Python)
- Pybind11 v2.5.0+(installation instructions)
CMake
CMake可用于构建项目,例如:
git clone --recursive https://github.com/qureshizawar/CUDA-quartic-solver
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release ../ -D CPP_exe=true -D GPU_build=false
make
当CPP_exe
标志设置为true
时,CMake将构建一个c++可执行文件,然后可以执行quartic_solver_main
来运行示例代码。
当GPU_build
标志设置为true
时,CMake将构建支持CUDA的库版本。在
Python
Python包可以通过构建其.whl
文件来安装,例如:
当GPU_build
标志设置为True
时,将构建支持CUDA的库版本。
然后可以使用生成的.whl
来安装包,例如:
pip install ./dist/QuarticSolver-0.1.1-cp36-cp36m-linux_x86_64.whl
用法
请参见src/main.cu
,src/cpu_main.cpp
,以及{
C++ +/H5>
通过调用四分函数的四次函数来计算函数的最小值:
QuarticMinimumCPU(N, A, B, C, D, E, min);
其中:
N
是函数的数目A
是一个数组,包含每个四次函数的系数AB
是一个数组,包含每个四次函数的系数BC
是一个数组,包含每个四次函数的系数CD
是一个数组,包含每个四次函数的系数DE
是一个数组,包含每个四次函数的系数Emin
是一个数组,它将包含每个四次函数对应的最小值
计算可以通过使用QuarticMinimumGPU
或QuarticMinimumGPUStreams
在GPU上执行。请注意,当QuarticMinimumGPU
与QuarticMinimumGPUStreams
相比,N>10000
的性能有显著提高
Python
Python版本的库可以如下使用:
import numpy as np
import QuarticSolver
minimum = QuarticSolver.QuarticMinimum(A,B,C,D,E,True)
其中A
,B
,C
,D
,E
是包含四次函数系数的numpy数组,最后一个参数是一个布尔标志,如果设置为True
,它将使用GPU(如果可能)。minimum
是返回的numpy数组,包含相应的最小值。在
托多
- 添加多gpu支持
- 项目
标签: