-
-
Save ThioJoe/56e1c4951be2c1a19b126ec619ec26c4 to your computer and use it in GitHub Desktop.
# Script to easily set resource allocation for GPUs to be passed through into a Hyper-V VM | |
# | |
# Author: ThioJoe / https://github.com/thiojoe | |
# | |
### Instructions for copying drivers to VM - Will likely need to do this before running this script | |
# NOTE: Instead of manually copying the files, if you have an Nvidia GPU you can use my other script called "Copy-GPU-Drivers-VM.ps1" to do it automatically | |
# 1. Open C:\Windows\System32 on host machine and copy any files beginning with "nv" (Except nvspinfo.exe and NvAgent.dll , which are unrelated) | |
# 2. Place those files into the System32 folder on the VM | |
# 3. On the VM, create the following directory: C:\Windows\System32\HostDriverStore\FileRepository | |
# 4. For Nvidia GPUs, open C:\Windows\System32\DriverStore\FileRepository, copy any folders beginning with "nv_" (The number of folders should match the number of GPUs, or at least number of different models of GPU) | |
# 5. Place those copied folders into the new HostDriverStore\FileRepository folder on the VM | |
# 6. Shut down VM and run this script. | |
# Ask for user input for VM Name | |
do { | |
Write-Host "" | |
$vm = Read-Host "Enter your Hyper-V VM Name" | |
$vmObject = Get-VM -Name $vm -ErrorAction SilentlyContinue | |
if (-not $vmObject) { | |
Write-Host "VM with name '$vm' not found. Please check the name and ensure you're running this script as administrator." -ForegroundColor Red | |
} else { | |
Write-Host "VM '$vm' found successfully." -ForegroundColor Green | |
} | |
} while (-not $vmObject) | |
# Ask for user input for number of GPUs | |
$numGPUs = Read-Host "`nEnter the number of GPUs (1 or 2)" | |
# Gets info about the GPUs and whether they are partitionable | |
Write-Host "`nRetrieving information about partitionable GPUs..." -ForegroundColor Yellow | |
$partitionableGPUs = Get-VMHostPartitionableGpu | |
# Displaying GPU information | |
foreach ($gpu in $partitionableGPUs) { | |
Write-Host "Partitionable GPU found: $($gpu.Name)" -ForegroundColor Yellow | |
} | |
# Pausing for user to review GPU information | |
Write-Host "`nPress Enter to proceed with the configuration..." -ForegroundColor Cyan | |
$null = Read-Host | |
# Get existing GPU adapters | |
$existingAdapters = Get-VMGpuPartitionAdapter -VMName $vm | |
# Loop through each GPU based on user input | |
for ($i=0; $i -lt $numGPUs; $i++) { | |
$targetGpu = $partitionableGPUs[$i] | |
$instancePath = $targetGpu.Name | |
Write-Host "Configuring GPU $i with Instance Path: $instancePath" -ForegroundColor Yellow | |
# Check if adapters with this instance path already exist | |
$matchingAdapters = $existingAdapters | Where-Object { $_.InstancePath -eq $instancePath } | |
$adapterCount = $matchingAdapters | Measure-Object | Select-Object -ExpandProperty Count | |
if ($adapterCount -gt 1) { | |
# Multiple adapters found - ask user if they want to remove them | |
Write-Host "`nWARNING: $adapterCount GPU adapters found with the same instance path." -ForegroundColor Red | |
Write-Host "This indicates duplicate assignments which may not be desired." -ForegroundColor Red | |
$removeChoice = Read-Host "Do you want to remove all existing adapters and create a fresh one? (Y/N)" | |
if ($removeChoice -eq "Y" -or $removeChoice -eq "y") { | |
Write-Host "Removing existing GPU adapters..." -ForegroundColor Yellow | |
foreach ($adapter in $matchingAdapters) { | |
Remove-VMGpuPartitionAdapter -VMName $vm -AdapterId $adapter.Id | |
Write-Host "Removed adapter with ID: $($adapter.Id)" -ForegroundColor Yellow | |
} | |
# Add new GPU adapter | |
Write-Host "Adding fresh GPU partition adapter for VM '$vm'..." -ForegroundColor Yellow | |
Add-VMGpuPartitionAdapter -VMName $vm -InstancePath $instancePath | |
# Get the newly added adapter | |
$gpus = Get-VMGpuPartitionAdapter -VMName $vm | |
$existingAdapter = $gpus | Where-Object { $_.InstancePath -eq $instancePath } | |
$adapterId = $existingAdapter.Id | |
} else { | |
# User chose not to remove - use the first adapter | |
Write-Host "Using the first existing adapter for configuration." -ForegroundColor Yellow | |
$adapterId = $matchingAdapters[0].Id | |
} | |
} elseif ($adapterCount -eq 1) { | |
Write-Host "One GPU adapter for instance path $instancePath already exists. Using existing adapter." -ForegroundColor Yellow | |
$adapterId = $matchingAdapters[0].Id | |
} else { | |
# Add new GPU adapter | |
Write-Host "Adding GPU partition adapter for VM '$vm'..." -ForegroundColor Yellow | |
Add-VMGpuPartitionAdapter -VMName $vm -InstancePath $instancePath | |
# Get the newly added adapter | |
$gpus = Get-VMGpuPartitionAdapter -VMName $vm | |
$existingAdapter = $gpus | Where-Object { $_.InstancePath -eq $instancePath } | |
$adapterId = $existingAdapter.Id | |
} | |
# Configure GPU adapter (whether existing or new) | |
Write-Host "Setting configurations for GPU partition adapter..." -ForegroundColor Yellow | |
Set-VMGpuPartitionAdapter -VMName $vm -AdapterId $adapterId ` | |
-MinPartitionVRAM $targetGpu.MinPartitionVRAM ` | |
-MaxPartitionVRAM $targetGpu.MaxPartitionVRAM ` | |
-OptimalPartitionVRAM $targetGpu.OptimalPartitionVRAM ` | |
-MinPartitionEncode $targetGpu.MinPartitionEncode ` | |
-MaxPartitionEncode $targetGpu.MaxPartitionEncode ` | |
-OptimalPartitionEncode $targetGpu.OptimalPartitionEncode ` | |
-MinPartitionDecode $targetGpu.MinPartitionDecode ` | |
-MaxPartitionDecode $targetGpu.MaxPartitionDecode ` | |
-OptimalPartitionDecode $targetGpu.OptimalPartitionDecode ` | |
-MinPartitionCompute $targetGpu.MinPartitionCompute ` | |
-MaxPartitionCompute $targetGpu.MaxPartitionCompute ` | |
-OptimalPartitionCompute $targetGpu.OptimalPartitionCompute | |
Write-Host "GPU configuration completed for adapter ID: $adapterId`n" -ForegroundColor Green | |
} | |
# Additional VM settings | |
Write-Host "Setting additional VM configurations for '$vm'..." -ForegroundColor Yellow | |
Set-VM -GuestControlledCacheTypes $true -VMName $vm | |
Set-VM -LowMemoryMappedIoSpace 1GB -VMName $vm | |
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm | |
Write-Host "Additional VM configurations set." -ForegroundColor Green | |
Write-Host "`n--------------------------------------------------------------------------" | |
Write-Host "Script execution complete. If there were no errors, your VM '$vm' is now configured with GPU passthrough.`n" -ForegroundColor Green | |
# SIG # Begin signature block | |
# MII6kAYJKoZIhvcNAQcCoII6gTCCOn0CAQExDzANBglghkgBZQMEAgEFADB5Bgor | |
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG | |
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBF5RiZ8NiD+X12 | |
# aJHOzeZpozXXfpNauEMHGPYJy4tXLqCCIrQwggXMMIIDtKADAgECAhBUmNLR1FsZ | |
# lUgTecgRwIeZMA0GCSqGSIb3DQEBDAUAMHcxCzAJBgNVBAYTAlVTMR4wHAYDVQQK | |
# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jvc29mdCBJZGVu | |
# dGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgMjAy | |
# MDAeFw0yMDA0MTYxODM2MTZaFw00NTA0MTYxODQ0NDBaMHcxCzAJBgNVBAYTAlVT | |
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBGBgNVBAMTP01pY3Jv | |
# c29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo | |
# b3JpdHkgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALORKgeD | |
# Bmf9np3gx8C3pOZCBH8Ppttf+9Va10Wg+3cL8IDzpm1aTXlT2KCGhFdFIMeiVPvH | |
# or+Kx24186IVxC9O40qFlkkN/76Z2BT2vCcH7kKbK/ULkgbk/WkTZaiRcvKYhOuD | |
# PQ7k13ESSCHLDe32R0m3m/nJxxe2hE//uKya13NnSYXjhr03QNAlhtTetcJtYmrV | |
# qXi8LW9J+eVsFBT9FMfTZRY33stuvF4pjf1imxUs1gXmuYkyM6Nix9fWUmcIxC70 | |
# ViueC4fM7Ke0pqrrBc0ZV6U6CwQnHJFnni1iLS8evtrAIMsEGcoz+4m+mOJyoHI1 | |
# vnnhnINv5G0Xb5DzPQCGdTiO0OBJmrvb0/gwytVXiGhNctO/bX9x2P29Da6SZEi3 | |
# W295JrXNm5UhhNHvDzI9e1eM80UHTHzgXhgONXaLbZ7LNnSrBfjgc10yVpRnlyUK | |
# xjU9lJfnwUSLgP3B+PR0GeUw9gb7IVc+BhyLaxWGJ0l7gpPKWeh1R+g/OPTHU3mg | |
# trTiXFHvvV84wRPmeAyVWi7FQFkozA8kwOy6CXcjmTimthzax7ogttc32H83rwjj | |
# O3HbbnMbfZlysOSGM1l0tRYAe1BtxoYT2v3EOYI9JACaYNq6lMAFUSw0rFCZE4e7 | |
# swWAsk0wAly4JoNdtGNz764jlU9gKL431VulAgMBAAGjVDBSMA4GA1UdDwEB/wQE | |
# AwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIftJqhSobyhmYBAcnz1AQ | |
# T2ioojAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQwFAAOCAgEAr2rd5hnn | |
# LZRDGU7L6VCVZKUDkQKL4jaAOxWiUsIWGbZqWl10QzD0m/9gdAmxIR6QFm3FJI9c | |
# Zohj9E/MffISTEAQiwGf2qnIrvKVG8+dBetJPnSgaFvlVixlHIJ+U9pW2UYXeZJF | |
# xBA2CFIpF8svpvJ+1Gkkih6PsHMNzBxKq7Kq7aeRYwFkIqgyuH4yKLNncy2RtNwx | |
# AQv3Rwqm8ddK7VZgxCwIo3tAsLx0J1KH1r6I3TeKiW5niB31yV2g/rarOoDXGpc8 | |
# FzYiQR6sTdWD5jw4vU8w6VSp07YEwzJ2YbuwGMUrGLPAgNW3lbBeUU0i/OxYqujY | |
# lLSlLu2S3ucYfCFX3VVj979tzR/SpncocMfiWzpbCNJbTsgAlrPhgzavhgplXHT2 | |
# 6ux6anSg8Evu75SjrFDyh+3XOjCDyft9V77l4/hByuVkrrOj7FjshZrM77nq81YY | |
# uVxzmq/FdxeDWds3GhhyVKVB0rYjdaNDmuV3fJZ5t0GNv+zcgKCf0Xd1WF81E+Al | |
# GmcLfc4l+gcK5GEh2NQc5QfGNpn0ltDGFf5Ozdeui53bFv0ExpK91IjmqaOqu/dk | |
# ODtfzAzQNb50GQOmxapMomE2gj4d8yu8l13bS3g7LfU772Aj6PXsCyM2la+YZr9T | |
# 03u4aUoqlmZpxJTG9F9urJh4iIAGXKKy7aIwggbuMIIE1qADAgECAhMzAALtvQ7r | |
# mviBJqoOAAAAAu29MA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNVBAYTAlVTMR4wHAYD | |
# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKzApBgNVBAMTIk1pY3Jvc29mdCBJ | |
# RCBWZXJpZmllZCBDUyBBT0MgQ0EgMDIwHhcNMjUwMzA1MTEyNjUwWhcNMjUwMzA4 | |
# MTEyNjUwWjBsMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHV3lvbWluZzERMA8GA1UE | |
# BxMIU2hlcmlkYW4xGzAZBgNVBAoTElRoaW8gU29mdHdhcmUsIExMQzEbMBkGA1UE | |
# AxMSVGhpbyBTb2Z0d2FyZSwgTExDMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB | |
# igKCAYEAqxZlpsKXMGXjrF+aj89M+goMOvNaHBaP7KPiZg7iJpKu1UdkeOEV/wP2 | |
# ZFFJCe1LrbWzu+G6GidWtLGlUJM9RoXlALXBGAQp5z04Z4DVPi/l9PldiCb2VFPG | |
# tSCoGPrg7tPVQUCJOU+tfWxp4m5R2pLlfw4IFjMHELeEvAQRHktGvwJWZi+korzY | |
# 8qVbxmEyGg7K0uV6OeSDjFnb3WvwFSFjM549vzDbrnqCxHqATyLkN+cx5O9C95rA | |
# sfdtyFyzo+xxrxw+GBVAMWzEWtZ+YgNvkUMpDSTFQxzQN8ZWuYh/VFEs0rBlj6XJ | |
# 22Et0xBBbMrbjrN6WU3dRYUJOs9pJig635Xl8fQqWSSz7pF8EU8bwmsRynnJJVbp | |
# FAWajhd+a8RWLKNwZ8W1RVaa1Q4STaP9BSg0w3aTvIJYYXNzU/tF8y74H6R8IRnK | |
# sY4WPXfcKCu3yDhQT2rhg/LvquHFOrJoUP4FL55kfrwigcJVNvNh6ahBC0T+6Khq | |
# T4wl7iADAgMBAAGjggIZMIICFTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIH | |
# gDA8BgNVHSUENTAzBgorBgEEAYI3YQEABggrBgEFBQcDAwYbKwYBBAGCN2GCyITf | |
# TKbD3mqByam9GIO77qlmMB0GA1UdDgQWBBSr2AYaNAh3/xAG094Qu1ypBXm4pjAf | |
# BgNVHSMEGDAWgBQkRZmhd5AqfMPKg7BuZBaEKvgsZzBnBgNVHR8EYDBeMFygWqBY | |
# hlZodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNyb3NvZnQl | |
# MjBJRCUyMFZlcmlmaWVkJTIwQ1MlMjBBT0MlMjBDQSUyMDAyLmNybDCBpQYIKwYB | |
# BQUHAQEEgZgwgZUwZAYIKwYBBQUHMAKGWGh0dHA6Ly93d3cubWljcm9zb2Z0LmNv | |
# bS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSUQlMjBWZXJpZmllZCUyMENTJTIw | |
# QU9DJTIwQ0ElMjAwMi5jcnQwLQYIKwYBBQUHMAGGIWh0dHA6Ly9vbmVvY3NwLm1p | |
# Y3Jvc29mdC5jb20vb2NzcDBmBgNVHSAEXzBdMFEGDCsGAQQBgjdMg30BATBBMD8G | |
# CCsGAQUFBwIBFjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3Mv | |
# UmVwb3NpdG9yeS5odG0wCAYGZ4EMAQQBMA0GCSqGSIb3DQEBDAUAA4ICAQDJ9pqA | |
# Y7jUMmDWd+BP3PFlOxgqV5BCgRNplIjgpFNxOK6ynHukwZImPrcD8momkzqLIKg0 | |
# aoV/PcQHAT3hZFbtSdV9oUZl7Y/aKFDA6HE1LjLg2BWP9xHtdJUq34DQR4o070Xm | |
# mo6IPhNkE4NwBCZr1kgM57dbf5NQ+FQWwVW0e2a7mUr1/CiG3mCOoNYABDGIcLKH | |
# aKR7x2KUO315e09i4BjYUenVvgdMlOsmnOjs7kATvPf15n3cyFwagk1OntbGyVl/ | |
# 5ge9npMsBAWINYy/w50sMF1zANh2OhxY4aZrCsANlukOcJiG+qZs1bY5O3AK3zFz | |
# t0Mvao4+q5sR5pi+L8fVF/buQaIXjKGLhRS3l4B1cwGCMa4hLrtsj2erD9RogaUM | |
# WIXm8sbl5pq8ZCRQzOGblc9rz70aXMKQ9UKaECwkEApx4NM9Uyiey5CmG9PuEtSP | |
# XIPDt7YEJVQQA/oxV1/PgmsBUeUp0z879B5hnCi6GoouYE2Q8LZQc30MvkvE4y18 | |
# vfsZVvBoWwz5cnLFucxs1tcuPfhMkIHMBp7kKQRZ8FlCycHnYs9DWtPe5TDR5Qtc | |
# RSsy17uk3jaqZO+rtWq0kzBU2/gRMBcF9+IoYrWW6T0wjvc/QZk8lWoE3sbne2yF | |
# pRyLX2roNbQGpVrYm0Tbp5ObzxM45zAeFj2vdjCCBu4wggTWoAMCAQICEzMAAu29 | |
# Duua+IEmqg4AAAAC7b0wDQYJKoZIhvcNAQEMBQAwWjELMAkGA1UEBhMCVVMxHjAc | |
# BgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0 | |
# IElEIFZlcmlmaWVkIENTIEFPQyBDQSAwMjAeFw0yNTAzMDUxMTI2NTBaFw0yNTAz | |
# MDgxMTI2NTBaMGwxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdXeW9taW5nMREwDwYD | |
# VQQHEwhTaGVyaWRhbjEbMBkGA1UEChMSVGhpbyBTb2Z0d2FyZSwgTExDMRswGQYD | |
# VQQDExJUaGlvIFNvZnR3YXJlLCBMTEMwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAw | |
# ggGKAoIBgQCrFmWmwpcwZeOsX5qPz0z6Cgw681ocFo/so+JmDuImkq7VR2R44RX/ | |
# A/ZkUUkJ7UuttbO74boaJ1a0saVQkz1GheUAtcEYBCnnPThngNU+L+X0+V2IJvZU | |
# U8a1IKgY+uDu09VBQIk5T619bGniblHakuV/DggWMwcQt4S8BBEeS0a/AlZmL6Si | |
# vNjypVvGYTIaDsrS5Xo55IOMWdvda/AVIWMznj2/MNuueoLEeoBPIuQ35zHk70L3 | |
# msCx923IXLOj7HGvHD4YFUAxbMRa1n5iA2+RQykNJMVDHNA3xla5iH9UUSzSsGWP | |
# pcnbYS3TEEFsytuOs3pZTd1FhQk6z2kmKDrfleXx9CpZJLPukXwRTxvCaxHKeckl | |
# VukUBZqOF35rxFYso3BnxbVFVprVDhJNo/0FKDTDdpO8glhhc3NT+0XzLvgfpHwh | |
# GcqxjhY9d9woK7fIOFBPauGD8u+q4cU6smhQ/gUvnmR+vCKBwlU282HpqEELRP7o | |
# qGpPjCXuIAMCAwEAAaOCAhkwggIVMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQD | |
# AgeAMDwGA1UdJQQ1MDMGCisGAQQBgjdhAQAGCCsGAQUFBwMDBhsrBgEEAYI3YYLI | |
# hN9MpsPeaoHJqb0Yg7vuqWYwHQYDVR0OBBYEFKvYBho0CHf/EAbT3hC7XKkFebim | |
# MB8GA1UdIwQYMBaAFCRFmaF3kCp8w8qDsG5kFoQq+CxnMGcGA1UdHwRgMF4wXKBa | |
# oFiGVmh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29m | |
# dCUyMElEJTIwVmVyaWZpZWQlMjBDUyUyMEFPQyUyMENBJTIwMDIuY3JsMIGlBggr | |
# BgEFBQcBAQSBmDCBlTBkBggrBgEFBQcwAoZYaHR0cDovL3d3dy5taWNyb3NvZnQu | |
# Y29tL3BraW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ1Ml | |
# MjBBT0MlMjBDQSUyMDAyLmNydDAtBggrBgEFBQcwAYYhaHR0cDovL29uZW9jc3Au | |
# bWljcm9zb2Z0LmNvbS9vY3NwMGYGA1UdIARfMF0wUQYMKwYBBAGCN0yDfQEBMEEw | |
# PwYIKwYBBQUHAgEWM2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvRG9j | |
# cy9SZXBvc2l0b3J5Lmh0bTAIBgZngQwBBAEwDQYJKoZIhvcNAQEMBQADggIBAMn2 | |
# moBjuNQyYNZ34E/c8WU7GCpXkEKBE2mUiOCkU3E4rrKce6TBkiY+twPyaiaTOosg | |
# qDRqhX89xAcBPeFkVu1J1X2hRmXtj9ooUMDocTUuMuDYFY/3Ee10lSrfgNBHijTv | |
# Reaajog+E2QTg3AEJmvWSAznt1t/k1D4VBbBVbR7ZruZSvX8KIbeYI6g1gAEMYhw | |
# sodopHvHYpQ7fXl7T2LgGNhR6dW+B0yU6yac6OzuQBO89/XmfdzIXBqCTU6e1sbJ | |
# WX/mB72ekywEBYg1jL/DnSwwXXMA2HY6HFjhpmsKwA2W6Q5wmIb6pmzVtjk7cArf | |
# MXO3Qy9qjj6rmxHmmL4vx9UX9u5BoheMoYuFFLeXgHVzAYIxriEuu2yPZ6sP1GiB | |
# pQxYhebyxuXmmrxkJFDM4ZuVz2vPvRpcwpD1QpoQLCQQCnHg0z1TKJ7LkKYb0+4S | |
# 1I9cg8O3tgQlVBAD+jFXX8+CawFR5SnTPzv0HmGcKLoaii5gTZDwtlBzfQy+S8Tj | |
# LXy9+xlW8GhbDPlycsW5zGzW1y49+EyQgcwGnuQpBFnwWULJwediz0Na097lMNHl | |
# C1xFKzLXu6TeNqpk76u1arSTMFTb+BEwFwX34ihitZbpPTCO9z9BmTyVagTexud7 | |
# bIWlHItfaug1tAalWtibRNunk5vPEzjnMB4WPa92MIIHWjCCBUKgAwIBAgITMwAA | |
# AASWUEvS2+7LiAAAAAAABDANBgkqhkiG9w0BAQwFADBjMQswCQYDVQQGEwJVUzEe | |
# MBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTQwMgYDVQQDEytNaWNyb3Nv | |
# ZnQgSUQgVmVyaWZpZWQgQ29kZSBTaWduaW5nIFBDQSAyMDIxMB4XDTIxMDQxMzE3 | |
# MzE1MloXDTI2MDQxMzE3MzE1MlowWjELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1p | |
# Y3Jvc29mdCBDb3Jwb3JhdGlvbjErMCkGA1UEAxMiTWljcm9zb2Z0IElEIFZlcmlm | |
# aWVkIENTIEFPQyBDQSAwMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB | |
# AOHOoOgzomOmwDsAj2wZUBdrY6N3JFGbmm+WaKzJ0aeKzpsGQ4k2yKcxZGf5PJOI | |
# rwSVdcOf2/6MpCPnlwKmmsTHcgDtDKHZxFuyJ30Pq05MpBMx8UWwjYOig7E52HP2 | |
# HS+yCIiZYvJOdbqWhyy+wmJvWDXNEhWL5WhY9jtB4zvcvzUZnFjY2pmTpUY8VtnF | |
# oFLFHWs0h4EQnpPO1dmzP9e2/qPFl1FvdSKYIEWrJomeuVhBR1ym8oZti24QSumV | |
# pkKBXhPhlqylghiv6v+EYk2jDYR11r1r/v/yOfFLTsVYtw2itX0OmC8iCBh8w+Ap | |
# rXKxor8bqav3K6x7pxjQe//0JrpdmT/R3DpmP2qbYFJ8E/ttIPwN+4g37rlcOskt | |
# i6NP5Kf42/ifLxOBTKiIsMRgci+PNjzFQQt6nfzWxUGvDJo+np7FPhxKr/Wq/gG3 | |
# CsLpm2aiSSpkKxmkjXVn5NjaHYHFjpqu48oW8cGTo5y49P28J7FDXDQHtPb/qoqM | |
# 8kEHrPAN1Fz3EUG/BvnNMmjtiAon1kyu8krslCfPJNZrTdtgjX7W44rYgHmn6GfV | |
# ZoZ+UX2/kvyuWq1b03C7pLeT3Uw0MZeeexCBOgPulxQaXbIzs5C83RIexC5PD1Tz | |
# I0HzwoCrSfOHNe33dgvfqcRdZREFBV2P2LQi/jZrPXFlAgMBAAGjggIOMIICCjAO | |
# BgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFCRFmaF3 | |
# kCp8w8qDsG5kFoQq+CxnMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIB | |
# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9y | |
# eS5odG0wGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwEgYDVR0TAQH/BAgwBgEB | |
# /wIBADAfBgNVHSMEGDAWgBTZQSmwDw9jbO9p1/XNKZ6kSGow5jBwBgNVHR8EaTBn | |
# MGWgY6Bhhl9odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNy | |
# b3NvZnQlMjBJRCUyMFZlcmlmaWVkJTIwQ29kZSUyMFNpZ25pbmclMjBQQ0ElMjAy | |
# MDIxLmNybDCBrgYIKwYBBQUHAQEEgaEwgZ4wbQYIKwYBBQUHMAKGYWh0dHA6Ly93 | |
# d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMvTWljcm9zb2Z0JTIwSUQlMjBW | |
# ZXJpZmllZCUyMENvZGUlMjBTaWduaW5nJTIwUENBJTIwMjAyMS5jcnQwLQYIKwYB | |
# BQUHMAGGIWh0dHA6Ly9vbmVvY3NwLm1pY3Jvc29mdC5jb20vb2NzcDANBgkqhkiG | |
# 9w0BAQwFAAOCAgEAZy04XZWzDSKJHSrc0mvIqPqRDveQnN1TsmP4ULCCHHTMpNoS | |
# Tsy7fzNVl30MhJQ5P0Lci81+t03Tm+SfpzvLdKc88Iu2WLzIjairwEDudLDDiZ90 | |
# 94Qj6acTTYaBhVcc9lMokOG9rzq3LCyvUzhBV1m1DCTm0fTzNMGbAASIbuJOlVS8 | |
# RA3tBknkF/2ROzx304OOC7n7eCCqmJp79QrqLKd4JRWLFXoC5zFmVGfFLTvRfEAo | |
# gKLiWIS+TpQpLIA2/b3vx0ISxZ3pX4OnULmyBbKgfSJQqJ2CiWfx2jGb2LQO8vRD | |
# kSuHMZb03rQlwB2soklx9LnhP0/dsFRtHLL+VXVMo+sla5ttr5SmAJFyDSrwzgfP | |
# rOIfk4EoZVGtgArthVp+yc5U0m6ZNCBPERLmJpLshPwU5JPd1gzMez8C55+CfuX5 | |
# L2440NPDnsH6TIYfErj3UCqpmeNCOFtlMiSjDE23rdeiRYpkqgwoYJwgepcJaXtI | |
# H26Pe1O6a6W3wSqegdpNn+2Pk41q0GDfjnXDzskAHcRhjwcCUmiRt6IXZJQsYACe | |
# WpwsXmJe0o0ORLmumrYyHlYTdCnzyxT6WM+QkFPiQth+/ceHfzumDhUfWmHuePwh | |
# rqe3UVCHy0r9f49Az3OhJX92MlsZaFo/MnmN5B62RWgJUTMIQF8j0N6xF/cwggee | |
# MIIFhqADAgECAhMzAAAAB4ejNKN7pY4cAAAAAAAHMA0GCSqGSIb3DQEBDAUAMHcx | |
# CzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xSDBG | |
# BgNVBAMTP01pY3Jvc29mdCBJZGVudGl0eSBWZXJpZmljYXRpb24gUm9vdCBDZXJ0 | |
# aWZpY2F0ZSBBdXRob3JpdHkgMjAyMDAeFw0yMTA0MDEyMDA1MjBaFw0zNjA0MDEy | |
# MDE1MjBaMGMxCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9y | |
# YXRpb24xNDAyBgNVBAMTK01pY3Jvc29mdCBJRCBWZXJpZmllZCBDb2RlIFNpZ25p | |
# bmcgUENBIDIwMjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCy8MCv | |
# GYgo4t1UekxJbGkIVQm0Uv96SvjB6yUo92cXdylN65Xy96q2YpWCiTas7QPTkGnK | |
# 9QMKDXB2ygS27EAIQZyAd+M8X+dmw6SDtzSZXyGkxP8a8Hi6EO9Zcwh5A+wOALNQ | |
# bNO+iLvpgOnEM7GGB/wm5dYnMEOguua1OFfTUITVMIK8faxkP/4fPdEPCXYyy8NJ | |
# 1fmskNhW5HduNqPZB/NkWbB9xxMqowAeWvPgHtpzyD3PLGVOmRO4ka0WcsEZqyg6 | |
# efk3JiV/TEX39uNVGjgbODZhzspHvKFNU2K5MYfmHh4H1qObU4JKEjKGsqqA6Rzi | |
# ybPqhvE74fEp4n1tiY9/ootdU0vPxRp4BGjQFq28nzawuvaCqUUF2PWxh+o5/TRC | |
# b/cHhcYU8Mr8fTiS15kRmwFFzdVPZ3+JV3s5MulIf3II5FXeghlAH9CvicPhhP+V | |
# aSFW3Da/azROdEm5sv+EUwhBrzqtxoYyE2wmuHKws00x4GGIx7NTWznOm6x/niqV | |
# i7a/mxnnMvQq8EMse0vwX2CfqM7Le/smbRtsEeOtbnJBbtLfoAsC3TdAOnBbUkbU | |
# fG78VRclsE7YDDBUbgWt75lDk53yi7C3n0WkHFU4EZ83i83abd9nHWCqfnYa9qIH | |
# PqjOiuAgSOf4+FRcguEBXlD9mAInS7b6V0UaNwIDAQABo4ICNTCCAjEwDgYDVR0P | |
# AQH/BAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTZQSmwDw9jbO9p | |
# 1/XNKZ6kSGow5jBUBgNVHSAETTBLMEkGBFUdIAAwQTA/BggrBgEFBQcCARYzaHR0 | |
# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRt | |
# MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMA8GA1UdEwEB/wQFMAMBAf8wHwYD | |
# VR0jBBgwFoAUyH7SaoUqG8oZmAQHJ89QEE9oqKIwgYQGA1UdHwR9MHsweaB3oHWG | |
# c2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUy | |
# MElkZW50aXR5JTIwVmVyaWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIw | |
# QXV0aG9yaXR5JTIwMjAyMC5jcmwwgcMGCCsGAQUFBwEBBIG2MIGzMIGBBggrBgEF | |
# BQcwAoZ1aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNy | |
# b3NvZnQlMjBJZGVudGl0eSUyMFZlcmlmaWNhdGlvbiUyMFJvb3QlMjBDZXJ0aWZp | |
# Y2F0ZSUyMEF1dGhvcml0eSUyMDIwMjAuY3J0MC0GCCsGAQUFBzABhiFodHRwOi8v | |
# b25lb2NzcC5taWNyb3NvZnQuY29tL29jc3AwDQYJKoZIhvcNAQEMBQADggIBAH8l | |
# Kp7+1Kvq3WYK21cjTLpebJDjW4ZbOX3HD5ZiG84vjsFXT0OB+eb+1TiJ55ns0BHl | |
# uC6itMI2vnwc5wDW1ywdCq3TAmx0KWy7xulAP179qX6VSBNQkRXzReFyjvF2BGt6 | |
# FvKFR/imR4CEESMAG8hSkPYso+GjlngM8JPn/ROUrTaeU/BRu/1RFESFVgK2wMz7 | |
# fU4VTd8NXwGZBe/mFPZG6tWwkdmA/jLbp0kNUX7elxu2+HtHo0QO5gdiKF+YTYd1 | |
# BGrmNG8sTURvn09jAhIUJfYNotn7OlThtfQjXqe0qrimgY4Vpoq2MgDW9ESUi1o4 | |
# pzC1zTgIGtdJ/IvY6nqa80jFOTg5qzAiRNdsUvzVkoYP7bi4wLCj+ks2GftUct+f | |
# GUxXMdBUv5sdr0qFPLPB0b8vq516slCfRwaktAxK1S40MCvFbbAXXpAZnU20FaAo | |
# Dwqq/jwzwd8Wo2J83r7O3onQbDO9TyDStgaBNlHzMMQgl95nHBYMelLEHkUnVVVT | |
# UsgC0Huj09duNfMaJ9ogxhPNThgq3i8w3DAGZ61AMeF0C1M+mU5eucj1Ijod5O2M | |
# MPeJQ3/vKBtqGZg4eTtUHt/BPjN74SsJsyHqAdXVS5c+ItyKWg3Eforhox9k3Wgt | |
# WTpgV4gkSiS4+A09roSdOI4vrRw+p+fL4WrxSK5nMYIXMjCCFy4CAQEwcTBaMQsw | |
# CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSswKQYD | |
# VQQDEyJNaWNyb3NvZnQgSUQgVmVyaWZpZWQgQ1MgQU9DIENBIDAyAhMzAALtvQ7r | |
# mviBJqoOAAAAAu29MA0GCWCGSAFlAwQCAQUAoF4wEAYKKwYBBAGCNwIBDDECMAAw | |
# GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwLwYJKoZIhvcNAQkEMSIEICQFdIgk | |
# Q8vySK41ih1cRyFRzHViHCZ0JgEXrzSqzy+AMA0GCSqGSIb3DQEBAQUABIIBgCW5 | |
# SruTGhAqxTlV9RsNcPVVj3IvbuSK6GaNSizmyQgLCFhps6sRiupt97fPorrCkTmX | |
# tLad5pb1KyQddI9n0j9d4/b83eaKvsgP6+k2grl0H41ECKLF8lFCMvmQdeOSJZuw | |
# XqEaxA6ex3xMGHqxXtk86YdUiyx6/41BIqi6LoNCsZMR64RL+FyLH5q8Khiegsc4 | |
# i4Baq38qHfhdV4sC3LM6ZNbRiftHZ0ZlJ5vfrhrbx1xeFQ9tVOIY5zSZyQHpqAuW | |
# lU5A4rjW2+nvB+dfJ9PXEx8EAXhPWXLjoGrc0Hq5YAoxid1UafImFEUZ5feHzu82 | |
# ruUamgsrpqDeWdUyRHulKJjRE1M3PpN/SlCjtzmaroG1d4k0N+bD2oDLdXntZJRt | |
# Zdfnvus429yzSZYQree48F4E8Vu7oZ01NGQ1bjHUjSMfxJFhSjy/g1JQC6b7toDw | |
# +0l1Vig0fYXwXaO75V6hKy2CSs/0gE32DR2wU5BsCsBJnweqLkilt6aQsz6Qj6GC | |
# FLIwghSuBgorBgEEAYI3AwMBMYIUnjCCFJoGCSqGSIb3DQEHAqCCFIswghSHAgED | |
# MQ8wDQYJYIZIAWUDBAIBBQAwggFqBgsqhkiG9w0BCRABBKCCAVkEggFVMIIBUQIB | |
# AQYKKwYBBAGEWQoDATAxMA0GCWCGSAFlAwQCAQUABCC37nNTwZDvfS+x4grM7Mfj | |
# dXQwaP/1ue32wHJLbnnsEgIGZ7jUk3ESGBMyMDI1MDMwNTE2NTQxNS44MDhaMASA | |
# AgH0oIHppIHmMIHjMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQ | |
# MA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u | |
# MS0wKwYDVQQLEyRNaWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQx | |
# JzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjo3QTFBLTA1RTAtRDk0NzE1MDMGA1UE | |
# AxMsTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHmg | |
# gg8pMIIHgjCCBWqgAwIBAgITMwAAAAXlzw//Zi7JhwAAAAAABTANBgkqhkiG9w0B | |
# AQwFADB3MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 | |
# aW9uMUgwRgYDVQQDEz9NaWNyb3NvZnQgSWRlbnRpdHkgVmVyaWZpY2F0aW9uIFJv | |
# b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMjAwHhcNMjAxMTE5MjAzMjMxWhcN | |
# MzUxMTE5MjA0MjMxWjBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0 | |
# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1l | |
# c3RhbXBpbmcgQ0EgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB | |
# AJ5851Jj/eDFnwV9Y7UGIqMcHtfnlzPREwW9ZUZHd5HBXXBvf7KrQ5cMSqFSHGqg | |
# 2/qJhYqOQxwuEQXG8kB41wsDJP5d0zmLYKAY8Zxv3lYkuLDsfMuIEqvGYOPURAH+ | |
# Ybl4SJEESnt0MbPEoKdNihwM5xGv0rGofJ1qOYSTNcc55EbBT7uq3wx3mXhtVmtc | |
# CEr5ZKTkKKE1CxZvNPWdGWJUPC6e4uRfWHIhZcgCsJ+sozf5EeH5KrlFnxpjKKTa | |
# vwfFP6XaGZGWUG8TZaiTogRoAlqcevbiqioUz1Yt4FRK53P6ovnUfANjIgM9JDdJ | |
# 4e0qiDRm5sOTiEQtBLGd9Vhd1MadxoGcHrRCsS5rO9yhv2fjJHrmlQ0EIXmp4DhD | |
# BieKUGR+eZ4CNE3ctW4uvSDQVeSp9h1SaPV8UWEfyTxgGjOsRpeexIveR1MPTVf7 | |
# gt8hY64XNPO6iyUGsEgt8c2PxF87E+CO7A28TpjNq5eLiiunhKbq0XbjkNoU5Jht | |
# YUrlmAbpxRjb9tSreDdtACpm3rkpxp7AQndnI0Shu/fk1/rE3oWsDqMX3jjv40e8 | |
# KN5YsJBnczyWB4JyeeFMW3JBfdeAKhzohFe8U5w9WuvcP1E8cIxLoKSDzCCBOu0h | |
# WdjzKNu8Y5SwB1lt5dQhABYyzR3dxEO/T1K/BVF3rV69AgMBAAGjggIbMIICFzAO | |
# BgNVHQ8BAf8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFGtpKDo1 | |
# L0hjQM972K9J6T7ZPdshMFQGA1UdIARNMEswSQYEVR0gADBBMD8GCCsGAQUFBwIB | |
# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9y | |
# eS5odG0wEwYDVR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAweCgBTAHUA | |
# YgBDAEEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTIftJqhSobyhmYBAcn | |
# z1AQT2ioojCBhAYDVR0fBH0wezB5oHegdYZzaHR0cDovL3d3dy5taWNyb3NvZnQu | |
# Y29tL3BraW9wcy9jcmwvTWljcm9zb2Z0JTIwSWRlbnRpdHklMjBWZXJpZmljYXRp | |
# b24lMjBSb290JTIwQ2VydGlmaWNhdGUlMjBBdXRob3JpdHklMjAyMDIwLmNybDCB | |
# lAYIKwYBBQUHAQEEgYcwgYQwgYEGCCsGAQUFBzAChnVodHRwOi8vd3d3Lm1pY3Jv | |
# c29mdC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMElkZW50aXR5JTIwVmVy | |
# aWZpY2F0aW9uJTIwUm9vdCUyMENlcnRpZmljYXRlJTIwQXV0aG9yaXR5JTIwMjAy | |
# MC5jcnQwDQYJKoZIhvcNAQEMBQADggIBAF+Idsd+bbVaFXXnTHho+k7h2ESZJRWl | |
# uLE0Oa/pO+4ge/XEizXvhs0Y7+KVYyb4nHlugBesnFqBGEdC2IWmtKMyS1OWIviw | |
# pnK3aL5JedwzbeBF7POyg6IGG/XhhJ3UqWeWTO+Czb1c2NP5zyEh89F72u9UIw+I | |
# fvM9lzDmc2O2END7MPnrcjWdQnrLn1Ntday7JSyrDvBdmgbNnCKNZPmhzoa8PccO | |
# iQljjTW6GePe5sGFuRHzdFt8y+bN2neF7Zu8hTO1I64XNGqst8S+w+RUdie8fXC1 | |
# jKu3m9KGIqF4aldrYBamyh3g4nJPj/LR2CBaLyD+2BuGZCVmoNR/dSpRCxlot0i7 | |
# 9dKOChmoONqbMI8m04uLaEHAv4qwKHQ1vBzbV/nG89LDKbRSSvijmwJwxRxLLpMQ | |
# /u4xXxFfR4f/gksSkbJp7oqLwliDm/h+w0aJ/U5ccnYhYb7vPKNMN+SZDWycU5OD | |
# IRfyoGl59BsXR/HpRGtiJquOYGmvA/pk5vC1lcnbeMrcWD/26ozePQ/TWfNXKBOm | |
# kFpvPE8CH+EeGGWzqTCjdAsno2jzTeNSxlx3glDGJgcdz5D/AAxw9Sdgq/+rY7jj | |
# gs7X6fqPTXPmaCAJKVHAP19oEjJIBwD1LyHbaEgBxFCogYSOiUIr0Xqcr1nJfiWG | |
# 2GwYe6ZoAF1bMIIHnzCCBYegAwIBAgITMwAAAER45LNw/Hbb6gAAAAAARDANBgkq | |
# hkiG9w0BAQwFADBhMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENv | |
# cnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUHVibGljIFJTQSBUaW1lc3Rh | |
# bXBpbmcgQ0EgMjAyMDAeFw0yNDA0MTgxNzU5MjFaFw0yNTA0MTcxNzU5MjFaMIHj | |
# MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk | |
# bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRN | |
# aWNyb3NvZnQgSXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJzAlBgNVBAsTHm5T | |
# aGllbGQgVFNTIEVTTjo3QTFBLTA1RTAtRDk0NzE1MDMGA1UEAxMsTWljcm9zb2Z0 | |
# IFB1YmxpYyBSU0EgVGltZSBTdGFtcGluZyBBdXRob3JpdHkwggIiMA0GCSqGSIb3 | |
# DQEBAQUAA4ICDwAwggIKAoICAQCkOm8duCg12uPg10xT6Cq6p3rqkaoYZrIyu9Rs | |
# j1pFsoU1aG2xh5IVMn8JX+rE3DVagmANFwKQ/lLext/45uMFC71vLxqQCw6VBXgA | |
# Ovg/D2631BjEYa7WRkb/OTOQqEOBEjRwLfLier4O+FCWZDy5BlpZzWBsSHcV5OrW | |
# rrhdeWD4EZILdKOqJFXiM3hRz/OO+cua3HfZwcA4Q9WYNFex2pyIAfShiUhMjCr2 | |
# YGRFFwOFyzv27f/qXBYdAlkmQXlZsPQAWmnHnbvDyNg/b6fHBQSoSjW6h/2m5Ghh | |
# +D72RQQ6Sv3UYA7MvoQYNXHp8CnlQtlUI8t4muRefT/jwVXRSzpgQtaMhD6v7nnY | |
# du1CSzdV58TOa523bre4iYyzA5skuxDOaJFDkYlvRRftfTRgBfyhIj9EJpmkS89w | |
# /kJgO+4OxXDLvta0uQo2R+N8ixVx5odrLuK0O2oCEZF0xzR9THbYUSBb0peaAXbz | |
# iUHlSp92N1L6wO24DdKfjY12/CSLxFpXIdaO3Cp8zUOxPpLNAoT2AYvU8JAY6yQM | |
# NFEbQWF2qJ+wrVrPLlRvuYt7EvLNOZKUGvSAp83fYsou1x803cFSQfixHLcGo/7z | |
# eZ92SeTbtId2vGpGJwiWSrNXVIE0BTOzVrbAUZl3rTUw61SiHop8eSqXfIpqQH7S | |
# 7GhgnQIDAQABo4IByzCCAccwHQYDVR0OBBYEFCCPw+UF492FV00UbbZlYYgv0MOu | |
# MB8GA1UdIwQYMBaAFGtpKDo1L0hjQM972K9J6T7ZPdshMGwGA1UdHwRlMGMwYaBf | |
# oF2GW2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29m | |
# dCUyMFB1YmxpYyUyMFJTQSUyMFRpbWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcmww | |
# eQYIKwYBBQUHAQEEbTBrMGkGCCsGAQUFBzAChl1odHRwOi8vd3d3Lm1pY3Jvc29m | |
# dC5jb20vcGtpb3BzL2NlcnRzL01pY3Jvc29mdCUyMFB1YmxpYyUyMFJTQSUyMFRp | |
# bWVzdGFtcGluZyUyMENBJTIwMjAyMC5jcnQwDAYDVR0TAQH/BAIwADAWBgNVHSUB | |
# Af8EDDAKBggrBgEFBQcDCDAOBgNVHQ8BAf8EBAMCB4AwZgYDVR0gBF8wXTBRBgwr | |
# BgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQu | |
# Y29tL3BraW9wcy9Eb2NzL1JlcG9zaXRvcnkuaHRtMAgGBmeBDAEEAjANBgkqhkiG | |
# 9w0BAQwFAAOCAgEAFgi00QwJ/iM7fbqNgXFAC8IwZ+aLZGFJzVDNcFg7qM20LvnL | |
# jor98X8hdORnEmU08uQ0B5FqrbDFoXKZNKFrWnv81NlkwOkMnlEGLQIAVzBgRHOK | |
# LtKgyc864JkON4Cxt2eBpdv3EGwjYjb6jSCME5XEfl2isP6fNivL5zYFuyXTmtTi | |
# c25M3eEt0PiAgfX34kvHkexN44XzMT+mixR93L2ohq7bgP6I//Zmn5Ol7dBlzJXf | |
# NpQyWLCVuEiIqB5jaYmAj3umgG3hU6ykUgXyx2i15rtflJc/ddUKlB9p2Hh/Up+O | |
# 7cTw0A4BjvtYs5ogqWurdaGzWrStMkB+yGgv78iNYJ8mEBoN1ylhP95BbhXltF75 | |
# 4yRx6N09tX8sN9gwc8ukv1PRNYQ3fskSURMlikW7IiG7OBH4Fx3ZVWo/TtksXZau | |
# XF2Ie3Mb5h1QamrP2il9Ym4szqyMGlv7eMEI3D1B2uXgC1bOFzxMZxpQLQ2M+xix | |
# ycurfC2ptjv5KJyTw2BxqUSBvzwSNgvDRfrrYo+ODKX7owxH0stNbvWPdrP/ElhS | |
# eDZvAyI9CrhT0FRhNtVIx0kEVywCwpBOCtcEjQy0u16kWk3JK5lv0bVx0Bcb88Uo | |
# cU8xjgv2LmWxlYey+aMpdy6nb/ZYEBvr6sZE276zm7wSgr+DM9VZqq/rZgExggPU | |
# MIID0AIBATB4MGExCzAJBgNVBAYTAlVTMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y | |
# cG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBQdWJsaWMgUlNBIFRpbWVzdGFt | |
# cGluZyBDQSAyMDIwAhMzAAAARHjks3D8dtvqAAAAAABEMA0GCWCGSAFlAwQCAQUA | |
# oIIBLTAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwLwYJKoZIhvcNAQkEMSIE | |
# ILpjxVG8ii379DFA/Yq/by/tbgOyj+Df6Q+kD6aV2E8KMIHdBgsqhkiG9w0BCRAC | |
# LzGBzTCByjCBxzCBoAQgdWVJ7Gn31DnkMwnvpWJjMD7VtGgYCMppdl2knxpf5ZYw | |
# fDBlpGMwYTELMAkGA1UEBhMCVVMxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh | |
# dGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFB1YmxpYyBSU0EgVGltZXN0YW1waW5n | |
# IENBIDIwMjACEzMAAABEeOSzcPx22+oAAAAAAEQwIgQgh4ir7L6OSnsS7N0Z58NF | |
# w8CJZK6BqOkWzz9C0LGCymYwDQYJKoZIhvcNAQELBQAEggIAm69ytnxXe8J3Ahva | |
# wZb8J9BGqMUXh3wTn5GV6JmOSIo2tnN9/IkSrWzV0v9wHyAdBlOJrmjVXQXwGHVM | |
# iB1Hggv69DpkzI/zUY+n72g2n268u14JV5gpdHRO3pwhAnTtgFnRcG/hVcYA+dsw | |
# iXX6BnU2n4kDi5H9mu4IAvbo2ZMRZ6mpEBR5FmHWZQEUsYkm4HdPZ3r0SJthRCrx | |
# 15PGXzOovv782D/YWHVS5sTJAvKiO9xZ8+TWUbR63jewO409iilILxzOEXH849vY | |
# uuPz06ZyKsyIxP1ynfQFIlFmn9AKrLGHfkVrd3UsggtjkG+vkY/6Im8sizPzjck2 | |
# +5wR+MWfN6ewSvdup7W5lFG98zxcvraq1k+AizTsy/xUtksEMYpqaa5LAVwNtyEt | |
# y8fJTixNJbW0mDykRVuc5IOKsKn8HkrCygBDLcd9efQJwtLpNUdgCE06HyWb9b1l | |
# 7qepKN+SlQQ5TAGJHE7BxyhhUUJljgUPODPohOUDoEBNXIXSsaXtO21PPqVMiPDU | |
# 23kNvPqCPCXqRpnl3+9ONF7NGb32zpE1duWP/sp0fIHebPgKxqBGvatjWhhEL7Ou | |
# fdFQ+68Hz5fPISSCqPU/GImcVZaigYSqN9CwAeRYA11XzUJHVMFjE2ZoSMZ7aAYJ | |
# Eum6QMACbY+AFgHkcHs/hfvqChU= | |
# SIG # End signature block |
Nice gist!
Did you manage to find out what exactly those values mean?
Set-VMGpuPartitionAdapter -VMName $vm -AdapterId $adapterId -MinPartitionVRAM 80000000 -MaxPartitionVRAM 100000000 -OptimalPartitionVRAM 100000000 -MinPartitionEncode 80000000 -MaxPartitionEncode 100000000 -OptimalPartitionEncode 100000000 -MinPartitionDecode 80000000 -MaxPartitionDecode 100000000 -OptimalPartitionDecode 100000000 -MinPartitionCompute 80000000 -MaxPartitionCompute 100000000 -OptimalPartitionCompute 100000000
Because I read the docs and couldn't move past the
This is defined by the manufacturer's driver
May be you have experimentaly found what those values mean?
Nice gist!
Did you manage to find out what exactly those values mean?
Set-VMGpuPartitionAdapter -VMName $vm -AdapterId $adapterId -MinPartitionVRAM 80000000 -MaxPartitionVRAM 100000000 -OptimalPartitionVRAM 100000000 -MinPartitionEncode 80000000 -MaxPartitionEncode 100000000 -OptimalPartitionEncode 100000000 -MinPartitionDecode 80000000 -MaxPartitionDecode 100000000 -OptimalPartitionDecode 100000000 -MinPartitionCompute 80000000 -MaxPartitionCompute 100000000 -OptimalPartitionCompute 100000000
Because I read the docs and couldn't move past the
This is defined by the manufacturer's driver
May be you have experimentaly found what those values mean?
Yea unfortunately I'm not sure myself about the technicality of all those parameters, I mostly just copied values I saw other people using
It seems I discovered source of the magic...
https://docs.nvidia.com/vgpu/latest/pdf/grid-vgpu-user-guide.pdf
Search in pdf for Get-VMGpuPartitionAdapter
and check page 29.
I would do it somehow like this:
$vmName = "my vm name"
Remove-VMGpuPartitionAdapter -VMName $vmName
$hostGpus = Get-VMHostPartitionableGpu
$targetGpu = $hostGpus[0]
Add-VMGpuPartitionAdapter -VMName $vmName `
-MinPartitionVRAM $targetGpu.MinPartitionVRAM `
-MaxPartitionVRAM $targetGpu.MaxPartitionVRAM `
-OptimalPartitionVRAM $targetGpu.OptimalPartitionVRAM `
-MinPartitionEncode $targetGpu.MinPartitionEncode `
-MaxPartitionEncode $targetGpu.MaxPartitionEncode `
-OptimalPartitionEncode $targetGpu.OptimalPartitionEncode `
-MinPartitionDecode $targetGpu.MinPartitionDecode `
-MaxPartitionDecode $targetGpu.MaxPartitionDecode `
-OptimalPartitionDecode $targetGpu.OptimalPartitionDecode `
-MinPartitionCompute $targetGpu.MinPartitionCompute `
-MaxPartitionCompute $targetGpu.MaxPartitionCompute `
-OptimalPartitionCompute $targetGpu.OptimalPartitionCompute
@mhtvsSFrpHdE Wow incredible find 🧐 I guess the capabilities are already embedded in that object and we can just directly assign them when adding the adapter. I'll have to update the script
@ThioJoe At the beginning I follow the Microsoft guide and it didn't work
https://learn.microsoft.com/en-us/windows-server/virtualization/hyper-v/partition-assign-vm-gpu?tabs=powershell
At the same time, later I installed and try vGPU in Windows Sandbox, the one doesn't report code 43 and everything is fine.
Nvidia is correct, Microsoft lacks key information on their website.
Now I'm struggling with GPU over Remote desktop... RemoteFX something maybe
Uploaded to my own knowledge base
https://github.com/mhtvsSFrpHdE/yet-another-gpu-partition-guide
Hello, the script is incompatible with windows 10
the Get-VMHostPartitionableGpu command doesn't exist but when removing the "Host" part it looks like this "Get-VMPartitionableGpu" and that works and the last thing when adding graphics to vm "Add-VMGpuPartitionAdapter -VMName $vm -InstancePath $instancePath" doesn't work because it doesn't know -InstancePath $instancePath