From patchwork Thu Nov 1 23:38:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Soft Works X-Patchwork-Id: 10885 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 9CBB044D9A9 for ; Fri, 2 Nov 2018 01:38:46 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1BA5E68A907; Fri, 2 Nov 2018 01:38:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from NAM06-DM3-obe.outbound.protection.outlook.com (mail-oln040092033029.outbound.protection.outlook.com [40.92.33.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A2B7568A906 for ; Fri, 2 Nov 2018 01:38:11 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DEEFPRCuZ86joRvFe1rFETO+RFTw/FiGk/Ulf948+Ps=; b=JX5sUphfTVicC/j0iZ2uVEmCS6tTwDecqFTG7x5nTdiC8cTDWxCfXyw4n9j+C7o9T6KsghM/QtdSnAYLtCtjVJ4tfud/TIOdxp09mv0M4ddCAqfi9lfvUHkpaLn4HDl6wfvx3SdBQ2yk9rC1CfLM56bRVgj6ouMdVQEKCjVf6pMVMaI2aeK0wgVcy6rGoZR6tsmM0AXh2biIkvdKBzW/yyoJbRLG03UmyOWFSlGTYbGSHDgxGohyB0fxQc4aolBgOB9yu2RL6pSwuyXAAJ05234TM3UZ2D38FqX9cQqPpg1P/IrYekXP129fk8fYNqbVme02MSDJOXFXfUAewW7wnQ== Received: from DM3NAM06FT007.Eop-nam06.prod.protection.outlook.com (10.152.108.55) by DM3NAM06HT029.Eop-nam06.prod.protection.outlook.com (10.152.109.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1332.0; Thu, 1 Nov 2018 23:38:42 +0000 Received: from CY4PR13MB1543.namprd13.prod.outlook.com (10.152.108.60) by DM3NAM06FT007.mail.protection.outlook.com (10.152.108.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1332.0 via Frontend Transport; Thu, 1 Nov 2018 23:38:42 +0000 Received: from CY4PR13MB1543.namprd13.prod.outlook.com ([fe80::d979:7689:dde9:2211]) by CY4PR13MB1543.namprd13.prod.outlook.com ([fe80::d979:7689:dde9:2211%5]) with mapi id 15.20.1294.021; Thu, 1 Nov 2018 23:38:42 +0000 From: Soft Works To: FFmpeg development discussions and patches Thread-Topic: [PATCH] Add CUDA function cuDeviceGetAttribute V2 Thread-Index: AQHUcjv8wP+z8IBMWUiQZkdia0/+dw== Date: Thu, 1 Nov 2018 23:38:42 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:DB16CFD44FC24EA08D0EA1075A7AB106349797D622BD9E85EE93277BA9B617C2; UpperCasedChecksum:7F3ADC5779B318B0BC011EC45FEFE1AC21D51CD976C7A48A92D2C0D76E74BB3C; SizeAsReceived:6910; Count:44 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [hpq8agWMQbPSbY/awUTCHidVRyBlxxG+] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DM3NAM06HT029; 6:dDuFmUddrgoJffjeLVtnq9kWoCg1xWL5cC+pqv4pWv51TFRU3edcKrRZxc7DnB/kzEYdH0GHEV+OS8vglBEejrY+g9lSpFY87uvLb6gDP7l1KkhWlQRNrW+Bwt6rC8o1qUrakvmMwb4pw68QHKeiZZ9SysraCNovOSKEnI+VJi/o3z9iWAWkc1tJbccEbg3qxPhfWeXpMwWwY6nPZ+jEKwHmv9xN0B4SPJYCz8lCQAhCS5M54Hog36VPas3suQacNkNr5s4H+dptilh8gAgXEKYK9Blc7GpY/YeCiP+oMqDDqqX1yB4+lRWmL2Jyd/quFxXKjT8VRpeTntgodFVQlmBv4AOGv5dtTMrtXuOIGYRKlDNBQl0j3ws9mVrBddIsXtp4Tn5+s1JxOpBfWzTAypGcATF0I+vW+NOP2knReZkVDzkXVD2m9b1CnyVKjyaeqf186+QUVa6PaRfAW4vF3Q==; 5:J2R1O9uENGCUTQ089NkRK9hnMM5UvLSML7JfIWwjDZegJbevlIQ3IQz7ofGnNc2Wjjiq7fLt+p8rrNf9wUuwi+dr9RJS9Pt97J/Ee3OjhwACPFg9kkwuffgDpxcjuhinXlboX0Ol7kDfGoGUZM41VEMneG2Nu4paLuAByKEiDTY=; 7:J8Mh9q/8h/Ky7GpadbJkhPX7hwczDtqEafU3XJDI70Lu8p3xatHv/ITI2+N8ubeXF27j3GZ9WFvaXvW2az/ONFFnffDQlEKIpyGih6+bceL3EpvyV5neTNMIdgKuvO3UgSQZqrF9XVT7tGAGCyErxA== x-incomingheadercount: 44 x-eopattributedmessage: 0 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(201702061078)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1603101475)(1601125500)(1701031045); SRVR:DM3NAM06HT029; x-ms-traffictypediagnostic: DM3NAM06HT029: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(4566010)(82015058); SRVR:DM3NAM06HT029; BCL:0; PCL:0; RULEID:; SRVR:DM3NAM06HT029; x-microsoft-antispam-message-info: 2zphWXqkYDlkVzgQ6qZZQPfFwwos0lkkTyPO9Parsp1MFMdVnYJN2alkhZrhKWdT MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 9bd8b953-1c55-4da7-b616-8bcad099ae8b X-MS-Exchange-CrossTenant-Network-Message-Id: eabfbb84-491a-475c-63dc-08d64053285c X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 9bd8b953-1c55-4da7-b616-8bcad099ae8b X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2018 23:38:42.2289 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3NAM06HT029 Subject: [FFmpeg-devel] [PATCH] Add CUDA function cuDeviceGetAttribute V2 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: softworkz --- include/ffnvcodec/dynlink_cuda.h | 26 ++++++++++++++++++++++++++ include/ffnvcodec/dynlink_loader.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/include/ffnvcodec/dynlink_cuda.h b/include/ffnvcodec/dynlink_cuda.h index 373215d..069acd1 100644 --- a/include/ffnvcodec/dynlink_cuda.h +++ b/include/ffnvcodec/dynlink_cuda.h @@ -59,6 +59,31 @@ typedef enum cudaError_enum { CUDA_ERROR_NOT_READY = 600 } CUresult; +/** + * Device properties (subset) + */ +typedef enum CUdevice_attribute_enum { + CU_DEVICE_ATTRIBUTE_CLOCK_RATE = 13, + CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT = 16, + CU_DEVICE_ATTRIBUTE_INTEGRATED = 18, + CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY = 19, + CU_DEVICE_ATTRIBUTE_COMPUTE_MODE = 20, + CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS = 31, + CU_DEVICE_ATTRIBUTE_PCI_BUS_ID = 33, + CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID = 34, + CU_DEVICE_ATTRIBUTE_TCC_DRIVER = 35, + CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE = 36, + CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH = 37, + CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT = 40, + CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING = 41, + CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID = 50, + CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75, + CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76, + CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY = 83, + CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD = 84, + CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID = 85, +} CUdevice_attribute; + typedef enum CUarray_format_enum { CU_AD_FORMAT_UNSIGNED_INT8 = 0x01, CU_AD_FORMAT_UNSIGNED_INT16 = 0x02, @@ -184,6 +209,7 @@ typedef void CUDAAPI CUstreamCallback(CUstream hStream, CUresult status, void *u typedef CUresult CUDAAPI tcuInit(unsigned int Flags); typedef CUresult CUDAAPI tcuDeviceGetCount(int *count); typedef CUresult CUDAAPI tcuDeviceGet(CUdevice *device, int ordinal); +typedef CUresult CUDAAPI tcuDeviceGetAttribute(int *pi, CUdevice_attribute attrib, CUdevice dev); typedef CUresult CUDAAPI tcuDeviceGetName(char *name, int len, CUdevice dev); typedef CUresult CUDAAPI tcuDeviceGetUuid(CUuuid *uuid, CUdevice dev); typedef CUresult CUDAAPI tcuDeviceComputeCapability(int *major, int *minor, CUdevice dev); diff --git a/include/ffnvcodec/dynlink_loader.h b/include/ffnvcodec/dynlink_loader.h index bce9630..c9472fe 100644 --- a/include/ffnvcodec/dynlink_loader.h +++ b/include/ffnvcodec/dynlink_loader.h @@ -139,6 +139,7 @@ typedef struct CudaFunctions { tcuInit *cuInit; tcuDeviceGetCount *cuDeviceGetCount; tcuDeviceGet *cuDeviceGet; + tcuDeviceGetAttribute *cuDeviceGetAttribute; tcuDeviceGetName *cuDeviceGetName; tcuDeviceGetUuid *cuDeviceGetUuid; tcuDeviceComputeCapability *cuDeviceComputeCapability; @@ -248,6 +249,7 @@ static inline int cuda_load_functions(CudaFunctions **functions, void *logctx) LOAD_SYMBOL(cuInit, tcuInit, "cuInit"); LOAD_SYMBOL(cuDeviceGetCount, tcuDeviceGetCount, "cuDeviceGetCount"); LOAD_SYMBOL(cuDeviceGet, tcuDeviceGet, "cuDeviceGet"); + LOAD_SYMBOL(cuDeviceGetAttribute, tcuDeviceGetAttribute, "cuDeviceGetAttribute"); LOAD_SYMBOL(cuDeviceGetName, tcuDeviceGetName, "cuDeviceGetName"); LOAD_SYMBOL(cuDeviceGetUuid, tcuDeviceGetUuid, "cuDeviceGetUuid"); LOAD_SYMBOL(cuDeviceComputeCapability, tcuDeviceComputeCapability, "cuDeviceComputeCapability");