77 lines
2.2 KiB
Plaintext
77 lines
2.2 KiB
Plaintext
#ifndef __GPUDOUBLE32__H__
|
|
#define __GPUDOUBLE32__H__
|
|
|
|
// 定义double32 struct ,使用fp32模拟double
|
|
struct double32{
|
|
float high;
|
|
float low;
|
|
__device__ __host__ double32(float h = 0, float l = 0) : high(h), low(l) {}
|
|
};
|
|
|
|
extern __device__ double32 double_to_double32(double value);
|
|
extern __device__ __host__ double double32_to_double(const double32& value);
|
|
// 使用 PTX 优化的加法函数
|
|
extern __device__ double32 double32_add(const double32& a, const double32& b);
|
|
|
|
// 使用 PTX 优化的减法函数
|
|
extern __device__ double32 double32_sub(const double32& a, const double32& b);
|
|
|
|
// 使用 PTX 优化的乘法函数
|
|
extern __device__ double32 double32_mul(const double32& a, const double32& b);
|
|
|
|
// 使用 PTX 优化的除法函数
|
|
extern __device__ double32 double32_div(const double32& a, const double32& b);
|
|
|
|
// 使用 PTX 优化的 sin 函数
|
|
extern __device__ double32 double32_sin(const double32& a);
|
|
|
|
// 使用 PTX 优化的 cos 函数
|
|
extern __device__ double32 double32_cos(const double32& a);
|
|
|
|
// 使用 PTX 优化的 log2 函数
|
|
extern __device__ double32 double32_log2(const double32& a);
|
|
|
|
// 使用 PTX 优化的 log10 函数
|
|
extern __device__ double32 double32_log10(const double32& a);
|
|
|
|
// 使用 PTX 优化的 ln 函数
|
|
extern __device__ double32 double32_ln(const double32& a);
|
|
|
|
// 使用 PTX 优化的 exp 函数
|
|
extern __device__ double32 double32_exp(const double32& a);
|
|
|
|
// 使用 PTX 优化的 pow 函数
|
|
extern __device__ double32 double32_pow(const double32& a, const double32& b);
|
|
|
|
// 使用 PTX 优化的 sqrt 函数
|
|
extern __device__ double32 double32_sqrt(const double32& a);
|
|
|
|
|
|
extern "C" GPUBASELIBAPI void test_double_to_double32();
|
|
extern "C" GPUBASELIBAPI void test_function(int operation, const char* operation_name);
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" GPUBASELIBAPI void time_test_add();
|
|
extern "C" GPUBASELIBAPI void time_test_sub();
|
|
extern "C" GPUBASELIBAPI void time_test_mul();
|
|
extern "C" GPUBASELIBAPI void time_test_div();
|
|
extern "C" GPUBASELIBAPI void time_test_sin();
|
|
extern "C" GPUBASELIBAPI void time_test_cos();
|
|
extern "C" GPUBASELIBAPI void time_test_log2();
|
|
extern "C" GPUBASELIBAPI void time_test_log10();
|
|
extern "C" GPUBASELIBAPI void time_test_ln();
|
|
extern "C" GPUBASELIBAPI void time_test_exp();
|
|
extern "C" GPUBASELIBAPI void time_test_pow();
|
|
extern "C" GPUBASELIBAPI void time_test_sqrt();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // !__GPUDOUBLE32__H__
|