MUSA Compiler API 完整参考手册
目录
- 标准 C 库函数
- 双精度浮点运算(带舍入控制)
- 单精度浮点运算(带舍入控制)
- 类型转换函数
- 数学函数
- 位操作函数
- SIMD 向量操作
- 同步与线程束操作
- 原子操作
- 半精度与 BFloat16 操作
- 内存访问优化
- 纹理与表面访问
- 向量类型构造函数
- 其他内建函数
1. 标准 C 库函数
__assert_fail
- 原型:
void __assert_fail(const char* expr, const char* file, unsigned int line, const char* func) - 域: 主机端(glibc 内部)
- 说明: 断言失败时由运行时调用,输出错误信息并终止程序
- 注意: 通常使用
assert()宏而非直接调用
clock
- 原型:
clock_t clock(void) - 域: 主机端 / 设备端
- 说明:
- 主机端:返回进程 CPU 时间
- 设备端:返回 SM 硬件周期计数
- 相关:
clock64()- 64位版本(设备端)
内存管理函数
- malloc:
void* malloc(size_t size)- 主机堆内存分配 - free:
void free(void* ptr)- 释放内存 - memcpy:
void* memcpy(void* dst, const void* src, size_t n)- 内存拷贝 - memset:
void* memset(void* s, int c, size_t n)- 内存初始化
printf
- 原型:
int printf(const char* fmt, ...) - 域: 主机端 / 设备端
- 说明: 格式化输出。设备端输出在内核结束后刷新
- 注意: 设备端使用影响性能,仅用于调试
2. 双精度浮点运算(带舍入控制)
舍入模式后缀:
rn: round to nearest even (就近取偶)rz: round toward zero (向零)ru: round toward +∞ (向上)rd: round toward -∞ (向下)
加法
double __dadd_rn(double a, double b)double __dadd_rz(double a, double b)double __dadd_ru(double a, double b)double __dadd_rd(double a, double b)
减法
double __dsub_rn(double a, double b)double __dsub_rz(double a, double b)double __dsub_ru(double a, double b)double __dsub_rd(double a, double b)
乘法
double __dmul_rn(double a, double b)double __dmul_rz(double a, double b)double __dmul_ru(double a, double b)double __dmul_rd(double a, double b)
除法
double __ddiv_rn(double a, double b)double __ddiv_rz(double a, double b)double __ddiv_ru(double a, double b)double __ddiv_rd(double a, double b)
融合乘加 (FMA)
double __fma_rn(double a, double b, double c)- 计算 a×b+cdouble __fma_rz(double a, double b, double c)double __fma_ru(double a, double b, double c)double __fma_rd(double a, double b, double c)
平方根
double __dsqrt_rn(double x)- 默认舍入double __dsqrt_ru(double x)double __dsqrt_rd(double x)double __dsqrt_rz(double x)