{ "cells": [ { "cell_type": "markdown", "id": "1215cd1b", "metadata": {}, "source": [ "## Exploring and switching between GPUs\n", "In clesperanto, you can list available GPUs and select them for processing." ] }, { "cell_type": "code", "execution_count": 5, "id": "9e24f0b6", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pyclesperanto_prototype as cle" ] }, { "cell_type": "code", "execution_count": 3, "id": "198303b7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['NVIDIA GeForce RTX 3050 Ti Laptop GPU', 'gfx902']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cle.available_device_names()" ] }, { "cell_type": "markdown", "id": "8ceb439c", "metadata": {}, "source": [ "You can then select a GPU and process on it." ] }, { "cell_type": "code", "execution_count": 4, "id": "e2ffcc38", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cle.select_device('gfx')" ] }, { "cell_type": "code", "execution_count": 11, "id": "41455f99", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "image = np.random.random((10, 100, 100))\n", "processed_image = cle.gaussian_blur(image, sigma_x=10)\n", "cle.imshow(processed_image)" ] }, { "cell_type": "markdown", "id": "35144de3", "metadata": {}, "source": [ "For comparing the performance of multiple devices, run executions of operations multiple times to get a good impression of general performance. Single individual time measurements may be misleading. You can either program your own for-loop or use [timeit](https://docs.python.org/3/library/timeit.html) which can automate that for you./" ] }, { "cell_type": "code", "execution_count": 15, "id": "f86ab500", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cle.select_device('gfx')" ] }, { "cell_type": "code", "execution_count": 16, "id": "c1c24479", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.97 ms ± 223 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" ] } ], "source": [ "%%timeit\n", "cle.gaussian_blur(image, sigma_x=10)" ] }, { "cell_type": "code", "execution_count": 17, "id": "14a39583", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cle.select_device(\"RTX\")" ] }, { "cell_type": "code", "execution_count": 18, "id": "37a8ea27", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.54 ms ± 502 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" ] } ], "source": [ "%%timeit\n", "cle.gaussian_blur(image, sigma_x=10)" ] }, { "cell_type": "markdown", "id": "8b4c77f2", "metadata": {}, "source": [ "## cl_info\n", "`cl_info` outputs all information about available hardware" ] }, { "cell_type": "code", "execution_count": 20, "id": "d17d0f09", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "NVIDIA CUDA\n", "EXTENSIONS:cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_copy_opts cl_nv_create_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_device_uuid\n", "EXTENSIONS_WITH_VERSION:[, , , , , , , , , , , , , , , , , , , ]\n", "HOST_TIMER_RESOLUTION:0\n", "NAME:NVIDIA CUDA\n", "NUMERIC_VERSION:12582912\n", "PROFILE:FULL_PROFILE\n", "VENDOR:NVIDIA Corporation\n", "VERSION:OpenCL 3.0 CUDA 11.3.121\n", "\n", "\n", " NVIDIA GeForce RTX 3050 Ti Laptop GPU\n", " ADDRESS_BITS:64\n", " ATOMIC_FENCE_CAPABILITIES:19\n", " ATOMIC_MEMORY_CAPABILITIES:17\n", " ATTRIBUTE_ASYNC_ENGINE_COUNT_NV:5\n", " AVAILABLE:1\n", " AVAILABLE_ASYNC_QUEUES_AMD:None\n", " BOARD_NAME_AMD:None\n", " BUILT_IN_KERNELS:\n", " BUILT_IN_KERNELS_WITH_VERSION:[]\n", " COMPILER_AVAILABLE:1\n", " COMPUTE_CAPABILITY_MAJOR_NV:8\n", " COMPUTE_CAPABILITY_MINOR_NV:6\n", " DEVICE_ENQUEUE_CAPABILITIES:2564095475712\n", " DOUBLE_FP_CONFIG:63\n", " DRIVER_VERSION:466.77\n", " ENDIAN_LITTLE:1\n", " ERROR_CORRECTION_SUPPORT:0\n", " EXECUTION_CAPABILITIES:1\n", " EXTENSIONS:cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_copy_opts cl_nv_create_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_device_uuid\n", " EXTENSIONS_WITH_VERSION:[, , , , , , , , , , , , , , , , , , , ]\n", " EXT_MEM_PADDING_IN_BYTES_QCOM:None\n", " GENERIC_ADDRESS_SPACE_SUPPORT:0\n", " GFXIP_MAJOR_AMD:None\n", " GFXIP_MINOR_AMD:None\n", " GLOBAL_FREE_MEMORY_AMD:None\n", " GLOBAL_MEM_CACHELINE_SIZE:128\n", " GLOBAL_MEM_CACHE_SIZE:573440\n", " GLOBAL_MEM_CACHE_TYPE:2\n", " GLOBAL_MEM_CHANNELS_AMD:None\n", " GLOBAL_MEM_CHANNEL_BANKS_AMD:None\n", " GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD:None\n", " GLOBAL_MEM_SIZE:4294967296\n", " GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE:0\n", " GPU_OVERLAP_NV:1\n", " HALF_FP_CONFIG:None\n", " HOST_UNIFIED_MEMORY:0\n", " ILS_WITH_VERSION:[]\n", " IL_VERSION:\n", " IMAGE2D_MAX_HEIGHT:32768\n", " IMAGE2D_MAX_WIDTH:32768\n", " IMAGE3D_MAX_DEPTH:16384\n", " IMAGE3D_MAX_HEIGHT:16384\n", " IMAGE3D_MAX_WIDTH:16384\n", " IMAGE_MAX_ARRAY_SIZE:2048\n", " IMAGE_MAX_BUFFER_SIZE:268435456\n", " IMAGE_SUPPORT:1\n", " INTEGRATED_MEMORY_NV:0\n", " KERNEL_EXEC_TIMEOUT_NV:1\n", " LINKER_AVAILABLE:1\n", " LOCAL_MEM_BANKS_AMD:None\n", " LOCAL_MEM_SIZE:49152\n", " LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD:None\n", " LOCAL_MEM_TYPE:1\n", " MAX_CLOCK_FREQUENCY:1035\n", " MAX_COMPUTE_UNITS:20\n", " MAX_CONSTANT_ARGS:9\n", " MAX_CONSTANT_BUFFER_SIZE:65536\n", " MAX_GLOBAL_VARIABLE_SIZE:0\n", " MAX_MEM_ALLOC_SIZE:1073741824\n", " MAX_NUM_SUB_GROUPS:0\n", " MAX_ON_DEVICE_EVENTS:0\n", " MAX_ON_DEVICE_QUEUES:0\n", " MAX_PARAMETER_SIZE:4352\n", " MAX_PIPE_ARGS:0\n", " MAX_READ_IMAGE_ARGS:256\n", " MAX_READ_WRITE_IMAGE_ARGS:0\n", " MAX_SAMPLERS:32\n", " MAX_WORK_GROUP_SIZE:1024\n", " MAX_WORK_GROUP_SIZE_AMD:None\n", " MAX_WORK_ITEM_DIMENSIONS:3\n", " MAX_WORK_ITEM_SIZES:[1024, 1024, 64]\n", " MAX_WRITE_IMAGE_ARGS:32\n", " MEM_BASE_ADDR_ALIGN:4096\n", " ME_VERSION_INTEL:None\n", " MIN_DATA_TYPE_ALIGN_SIZE:128\n", " NAME:NVIDIA GeForce RTX 3050 Ti Laptop GPU\n", " NATIVE_VECTOR_WIDTH_CHAR:1\n", " NATIVE_VECTOR_WIDTH_DOUBLE:1\n", " NATIVE_VECTOR_WIDTH_FLOAT:1\n", " NATIVE_VECTOR_WIDTH_HALF:0\n", " NATIVE_VECTOR_WIDTH_INT:1\n", " NATIVE_VECTOR_WIDTH_LONG:1\n", " NATIVE_VECTOR_WIDTH_SHORT:1\n", " NON_UNIFORM_WORK_GROUP_SUPPORT:0\n", " NUMERIC_VERSION:12582912\n", " NUM_SIMULTANEOUS_INTEROPS_INTEL:None\n", " OPENCL_C_ALL_VERSIONS:[, , , ]\n", " OPENCL_C_FEATURES:[, , , ]\n", " OPENCL_C_VERSION:OpenCL C 1.2 \n", " PAGE_SIZE_QCOM:None\n", " PARTITION_AFFINITY_DOMAIN:[0]\n", " PARTITION_MAX_SUB_DEVICES:1\n", " PARTITION_PROPERTIES:[0]\n", " PARTITION_TYPE:[0]\n", " PCIE_ID_AMD:None\n", " PCI_BUS_ID_NV:1\n", " PCI_DOMAIN_ID_NV:0\n", " PCI_SLOT_ID_NV:0\n", " PIPE_MAX_ACTIVE_RESERVATIONS:0\n", " PIPE_MAX_PACKET_SIZE:0\n", " PIPE_SUPPORT:0\n", " PLATFORM:\n", " PREFERRED_CONSTANT_BUFFER_SIZE_AMD:None\n", " PREFERRED_GLOBAL_ATOMIC_ALIGNMENT:0\n", " PREFERRED_INTEROP_USER_SYNC:0\n", " PREFERRED_LOCAL_ATOMIC_ALIGNMENT:0\n", " PREFERRED_PLATFORM_ATOMIC_ALIGNMENT:0\n", " PREFERRED_VECTOR_WIDTH_CHAR:1\n", " PREFERRED_VECTOR_WIDTH_DOUBLE:1\n", " PREFERRED_VECTOR_WIDTH_FLOAT:1\n", " PREFERRED_VECTOR_WIDTH_HALF:0\n", " PREFERRED_VECTOR_WIDTH_INT:1\n", " PREFERRED_VECTOR_WIDTH_LONG:1\n", " PREFERRED_VECTOR_WIDTH_SHORT:1\n", " PREFERRED_WORK_GROUP_SIZE_AMD:None\n", " PREFERRED_WORK_GROUP_SIZE_MULTIPLE:32\n", " PRINTF_BUFFER_SIZE:None\n", " PROFILE:FULL_PROFILE\n", " PROFILING_TIMER_OFFSET_AMD:None\n", " PROFILING_TIMER_RESOLUTION:1000\n", " QUEUE_ON_DEVICE_MAX_SIZE:0\n", " QUEUE_ON_DEVICE_PREFERRED_SIZE:0\n", " QUEUE_ON_DEVICE_PROPERTIES:0\n", " QUEUE_ON_HOST_PROPERTIES:3\n", " QUEUE_PROPERTIES:3\n", " REFERENCE_COUNT:1\n", " REGISTERS_PER_BLOCK_NV:65536\n", " SIMD_INSTRUCTION_WIDTH_AMD:None\n", " SIMD_PER_COMPUTE_UNIT_AMD:None\n", " SIMD_WIDTH_AMD:None\n", " SIMULTANEOUS_INTEROPS_INTEL:None\n", " SINGLE_FP_CONFIG:191\n", " SPIR_VERSIONS:None\n", " SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS:0\n", " SVM_CAPABILITIES:1\n", " THREAD_TRACE_SUPPORTED_AMD:None\n", " TOPOLOGY_AMD:None\n", " TYPE:4\n", " VENDOR:NVIDIA Corporation\n", " VENDOR_ID:4318\n", " VERSION:OpenCL 3.0 CUDA\n", " WARP_SIZE_NV:32\n", " WAVEFRONT_WIDTH_AMD:None\n", " WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT:0\n", "\n", "\n", "\n", "\n", "AMD Accelerated Parallel Processing\n", "EXTENSIONS:cl_khr_icd cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_amd_event_callback cl_amd_offline_devices \n", "EXTENSIONS_WITH_VERSION:None\n", "HOST_TIMER_RESOLUTION:100\n", "NAME:AMD Accelerated Parallel Processing\n", "NUMERIC_VERSION:None\n", "PROFILE:FULL_PROFILE\n", "VENDOR:Advanced Micro Devices, Inc.\n", "VERSION:OpenCL 2.1 AMD-APP (3180.7)\n", "\n", "\n", " gfx902\n", " ADDRESS_BITS:64\n", " ATOMIC_FENCE_CAPABILITIES:None\n", " ATOMIC_MEMORY_CAPABILITIES:None\n", " ATTRIBUTE_ASYNC_ENGINE_COUNT_NV:None\n", " AVAILABLE:1\n", " AVAILABLE_ASYNC_QUEUES_AMD:2\n", " BOARD_NAME_AMD:AMD Radeon(TM) Graphics\n", " BUILT_IN_KERNELS:\n", " BUILT_IN_KERNELS_WITH_VERSION:None\n", " COMPILER_AVAILABLE:1\n", " COMPUTE_CAPABILITY_MAJOR_NV:None\n", " COMPUTE_CAPABILITY_MINOR_NV:None\n", " DEVICE_ENQUEUE_CAPABILITIES:None\n", " DOUBLE_FP_CONFIG:63\n", " DRIVER_VERSION:3180.7 (PAL,HSAIL)\n", " ENDIAN_LITTLE:1\n", " ERROR_CORRECTION_SUPPORT:0\n", " EXECUTION_CAPABILITIES:1\n", " EXTENSIONS:cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_gl_sharing cl_khr_gl_depth_images cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_khr_image2d_from_buffer cl_khr_subgroups cl_khr_gl_event cl_khr_depth_images cl_khr_mipmap_image cl_khr_mipmap_image_writes cl_amd_liquid_flash cl_amd_copy_buffer_p2p cl_amd_planar_yuv\n", " EXTENSIONS_WITH_VERSION:None\n", " EXT_MEM_PADDING_IN_BYTES_QCOM:None\n", " GENERIC_ADDRESS_SPACE_SUPPORT:None\n", " GFXIP_MAJOR_AMD:9\n", " GFXIP_MINOR_AMD:2\n", " GLOBAL_FREE_MEMORY_AMD:[12600032]\n", " GLOBAL_MEM_CACHELINE_SIZE:64\n", " GLOBAL_MEM_CACHE_SIZE:16384\n", " GLOBAL_MEM_CACHE_TYPE:2\n", " GLOBAL_MEM_CHANNELS_AMD:4\n", " GLOBAL_MEM_CHANNEL_BANKS_AMD:4\n", " GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD:256\n", " GLOBAL_MEM_SIZE:12981370880\n", " GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE:12981370880\n", " GPU_OVERLAP_NV:None\n", " HALF_FP_CONFIG:0\n", " HOST_UNIFIED_MEMORY:1\n", " ILS_WITH_VERSION:None\n", " IL_VERSION:None\n", " IMAGE2D_MAX_HEIGHT:16384\n", " IMAGE2D_MAX_WIDTH:16384\n", " IMAGE3D_MAX_DEPTH:2048\n", " IMAGE3D_MAX_HEIGHT:2048\n", " IMAGE3D_MAX_WIDTH:2048\n", " IMAGE_MAX_ARRAY_SIZE:2048\n", " IMAGE_MAX_BUFFER_SIZE:134217728\n", " IMAGE_SUPPORT:1\n", " INTEGRATED_MEMORY_NV:None\n", " KERNEL_EXEC_TIMEOUT_NV:None\n", " LINKER_AVAILABLE:1\n", " LOCAL_MEM_BANKS_AMD:32\n", " LOCAL_MEM_SIZE:32768\n", " LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD:65536\n", " LOCAL_MEM_TYPE:1\n", " MAX_CLOCK_FREQUENCY:2100\n", " MAX_COMPUTE_UNITS:8\n", " MAX_CONSTANT_ARGS:8\n", " MAX_CONSTANT_BUFFER_SIZE:10577824972\n", " MAX_GLOBAL_VARIABLE_SIZE:9520042240\n", " MAX_MEM_ALLOC_SIZE:10577824972\n", " MAX_NUM_SUB_GROUPS:None\n", " MAX_ON_DEVICE_EVENTS:1024\n", " MAX_ON_DEVICE_QUEUES:1\n", " MAX_PARAMETER_SIZE:1024\n", " MAX_PIPE_ARGS:16\n", " MAX_READ_IMAGE_ARGS:128\n", " MAX_READ_WRITE_IMAGE_ARGS:64\n", " MAX_SAMPLERS:16\n", " MAX_WORK_GROUP_SIZE:256\n", " MAX_WORK_GROUP_SIZE_AMD:None\n", " MAX_WORK_ITEM_DIMENSIONS:3\n", " MAX_WORK_ITEM_SIZES:[1024, 1024, 1024]\n", " MAX_WRITE_IMAGE_ARGS:64\n", " MEM_BASE_ADDR_ALIGN:2048\n", " ME_VERSION_INTEL:None\n", " MIN_DATA_TYPE_ALIGN_SIZE:128\n", " NAME:gfx902\n", " NATIVE_VECTOR_WIDTH_CHAR:4\n", " NATIVE_VECTOR_WIDTH_DOUBLE:1\n", " NATIVE_VECTOR_WIDTH_FLOAT:1\n", " NATIVE_VECTOR_WIDTH_HALF:1\n", " NATIVE_VECTOR_WIDTH_INT:1\n", " NATIVE_VECTOR_WIDTH_LONG:1\n", " NATIVE_VECTOR_WIDTH_SHORT:2\n", " NON_UNIFORM_WORK_GROUP_SUPPORT:None\n", " NUMERIC_VERSION:None\n", " NUM_SIMULTANEOUS_INTEROPS_INTEL:None\n", " OPENCL_C_ALL_VERSIONS:None\n", " OPENCL_C_FEATURES:None\n", " OPENCL_C_VERSION:OpenCL C 2.0 \n", " PAGE_SIZE_QCOM:None\n", " PARTITION_AFFINITY_DOMAIN:[0]\n", " PARTITION_MAX_SUB_DEVICES:8\n", " PARTITION_PROPERTIES:[0]\n", " PARTITION_TYPE:[0]\n", " PCIE_ID_AMD:None\n", " PCI_BUS_ID_NV:None\n", " PCI_DOMAIN_ID_NV:None\n", " PCI_SLOT_ID_NV:None\n", " PIPE_MAX_ACTIVE_RESERVATIONS:16\n", " PIPE_MAX_PACKET_SIZE:1987890380\n", " PIPE_SUPPORT:None\n", " PLATFORM:\n", " PREFERRED_CONSTANT_BUFFER_SIZE_AMD:None\n", " PREFERRED_GLOBAL_ATOMIC_ALIGNMENT:0\n", " PREFERRED_INTEROP_USER_SYNC:1\n", " PREFERRED_LOCAL_ATOMIC_ALIGNMENT:0\n", " PREFERRED_PLATFORM_ATOMIC_ALIGNMENT:0\n", " PREFERRED_VECTOR_WIDTH_CHAR:4\n", " PREFERRED_VECTOR_WIDTH_DOUBLE:1\n", " PREFERRED_VECTOR_WIDTH_FLOAT:1\n", " PREFERRED_VECTOR_WIDTH_HALF:1\n", " PREFERRED_VECTOR_WIDTH_INT:1\n", " PREFERRED_VECTOR_WIDTH_LONG:1\n", " PREFERRED_VECTOR_WIDTH_SHORT:2\n", " PREFERRED_WORK_GROUP_SIZE_AMD:None\n", " PREFERRED_WORK_GROUP_SIZE_MULTIPLE:None\n", " PRINTF_BUFFER_SIZE:None\n", " PROFILE:FULL_PROFILE\n", " PROFILING_TIMER_OFFSET_AMD:1627642789794715400\n", " PROFILING_TIMER_RESOLUTION:1\n", " QUEUE_ON_DEVICE_MAX_SIZE:8388608\n", " QUEUE_ON_DEVICE_PREFERRED_SIZE:262144\n", " QUEUE_ON_DEVICE_PROPERTIES:3\n", " QUEUE_ON_HOST_PROPERTIES:2\n", " QUEUE_PROPERTIES:2\n", " REFERENCE_COUNT:1\n", " REGISTERS_PER_BLOCK_NV:None\n", " SIMD_INSTRUCTION_WIDTH_AMD:None\n", " SIMD_PER_COMPUTE_UNIT_AMD:4\n", " SIMD_WIDTH_AMD:None\n", " SIMULTANEOUS_INTEROPS_INTEL:None\n", " SINGLE_FP_CONFIG:190\n", " SPIR_VERSIONS:1.2\n", " SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS:None\n", " SVM_CAPABILITIES:3\n", " THREAD_TRACE_SUPPORTED_AMD:1\n", " TOPOLOGY_AMD:\n", " TYPE:4\n", " VENDOR:Advanced Micro Devices, Inc.\n", " VENDOR_ID:4098\n", " VERSION:OpenCL 2.0 AMD-APP (3180.7)\n", " WARP_SIZE_NV:None\n", " WAVEFRONT_WIDTH_AMD:None\n", " WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT:None\n", "\n", "\n", "\n", "\n", "Current device: NVIDIA GeForce RTX 3050 Ti Laptop GPU\n" ] } ], "source": [ "print(cle.cl_info())" ] }, { "cell_type": "code", "execution_count": null, "id": "32b648a7", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 5 }