min

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

获取两个输入数据中的最小值,当入参为一个有符号整数、一个无符号整数时,有符号整数会先被转换为对应的无符号类型,再进行大小比较。

函数原型

long long min(long long x, long long y)
long min(long x, long y)
int min(int x, int y)
short min(short x, short y)
char min(char x, char y)
unsigned long long min(unsigned long long x, unsigned long long y)
unsigned long min(unsigned long x, unsigned long y)
unsigned int min(unsigned int x, unsigned int y)
unsigned short min(unsigned short x, unsigned short y)
unsigned char min(unsigned char x, unsigned char y)
unsigned int min(unsigned int x, int y)
unsigned int min(int x, unsigned int y)
unsigned long int min(long int x, unsigned long int y)
unsigned long int min(unsigned long int x, long int y)
unsigned long long int min(long long int x, unsigned long long int y)
unsigned long long int min(unsigned long long int x, long long int y)

参数说明

表1 参数说明

参数名 输入/输出 描述
x 输入 源操作数。
y 输入 源操作数。

返回值说明

输入数据中的最小值。

约束说明

需要包含的头文件

使用该接口需要包含simt_api/math_functions.h头文件。

#include "simt_api/math_functions.h"

调用示例

  • SIMT编程场景:

    __global__ __launch_bounds__(1024) void KernelMin(long long* dst, long long* x, long long* y, uint32_t input_total_length)
    {
        uint32_t idx = threadIdx.x + blockIdx.x * blockDim.x;
        if (idx >= input_total_length) {
            return;
        }
        dst[idx] = min(x[idx], y[idx]);
    }
    
  • SIMD与SIMT混合编程场景:

    __simt_vf__ __launch_bounds__(1024) inline void KernelMin(__gm__ long long* dst, __gm__ long long* x, __gm__ long long* y, uint32_t input_total_length)
    {
        uint32_t idx = threadIdx.x + blockIdx.x * blockDim.x;
        if (idx >= input_total_length) {
            return;
        }
        dst[idx] = min(x[idx], y[idx]);
    }