77 lines
2.2 KiB
Plaintext
77 lines
2.2 KiB
Plaintext
|
#ifndef __GPUDOUBLE32__H__
|
|||
|
#define __GPUDOUBLE32__H__
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>double32 struct ,ʹ<><CAB9>fp32ģ<32><C4A3>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);
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB>ļӷ<C4BC><D3B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_add(const double32& a, const double32& b);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_sub(const double32& a, const double32& b);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB>ij˷<C4B3><CBB7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_mul(const double32& a, const double32& b);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_div(const double32& a, const double32& b);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> sin <20><><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_sin(const double32& a);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> cos <20><><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_cos(const double32& a);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> log2 <20><><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_log2(const double32& a);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> log10 <20><><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_log10(const double32& a);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> ln <20><><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_ln(const double32& a);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> exp <20><><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_exp(const double32& a);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> pow <20><><EFBFBD><EFBFBD>
|
|||
|
extern __device__ double32 double32_pow(const double32& a, const double32& b);
|
|||
|
|
|||
|
// ʹ<><CAB9> PTX <20>Ż<EFBFBD><C5BB><EFBFBD> sqrt <20><><EFBFBD><EFBFBD>
|
|||
|
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__
|