No kernel image is available for execution on the device как исправить

🐛 Bug Hi, torch.cuda.is_available() returns True, however I cannot use cuda tensor. I tried to uninstall and install anaconda, nvidia drivers and cudatoolkit. Still the error is same To Reproduce I...

🐛 Bug

Hi, torch.cuda.is_available() returns True, however I cannot use cuda tensor. I tried to uninstall and install anaconda, nvidia drivers and cudatoolkit. Still the error is same

To Reproduce

I did nothiing special, just installed pytorch on anaconda and execute following commanda

Python 3.7.5 (default, Oct 31 2019, 15:18:51) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.cuda.is_available()
True
>>> torch.tensor([1.0, 2.0])
tensor([1., 2.])
>>> torch.tensor([1.0, 2.0]).cuda()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:UsersbalciAnaconda3envspytorchlibsite-packagestorchtensor.py", line 130, in __repr__
    return torch._tensor_str._str(self)
  File "C:UsersbalciAnaconda3envspytorchlibsite-packagestorch_tensor_str.py", line 311, in _str
    tensor_str = _tensor_str(self, indent)
  File "C:UsersbalciAnaconda3envspytorchlibsite-packagestorch_tensor_str.py", line 209, in _tensor_str
    formatter = _Formatter(get_summarized_data(self) if summarize else self)
  File "C:UsersbalciAnaconda3envspytorchlibsite-packagestorch_tensor_str.py", line 87, in __init__
    nonzero_finite_vals = torch.masked_select(tensor_view, torch.isfinite(tensor_view) & tensor_view.ne(0))
  File "C:UsersbalciAnaconda3envspytorchlibsite-packagestorchfunctional.py", line 227, in isfinite
    return (tensor == tensor) & (tensor.abs() != inf)
RuntimeError: CUDA error: no kernel image is available for execution on the device
>>>   

Expected behavior

Run pytorch on gpu

Environment

Collecting environment information...
PyTorch version: 1.3.1
Is debug build: No
CUDA used to build PyTorch: 10.1

OS: Microsoft Windows 10 Pro
GCC version: Could not collect
CMake version: Could not collect

Python version: 3.7
Is CUDA available: Yes
CUDA runtime version: Could not collect
GPU models and configuration: GPU 0: GeForce GTX 780
Nvidia driver version: 441.22
cuDNN version: Could not collect

Versions of relevant libraries:
[pip] numpy==1.17.4
[pip] torch==1.3.1
[pip] torchvision==0.4.2
[conda] blas                      1.0                         mkl  
[conda] mkl                       2019.4                      245  
[conda] mkl-service               2.3.0            py37hb782905_0  
[conda] mkl_fft                   1.0.15           py37h14836fe_0  
[conda] mkl_random                1.1.0            py37h675688f_0  
[conda] pytorch                   1.3.1           py3.7_cuda101_cudnn7_0    pytorch
[conda] torchvision               0.4.2                py37_cu101    pytorch

Process finished with exit code 0
  • PyTorch Version (e.g., 1.0): 1.3
  • OS (e.g., Linux): Windows 10 x64
  • How you installed PyTorch (conda, pip, source): conda
  • Build command you used (if compiling from source): —
  • Python version: 3.7.5 (conda)
  • CUDA/cuDNN version: cudatoolkit=10.1 (conda), I also tried with cudatoolkit 10.1 and 10.2 (https://developer.nvidia.com/cuda-toolkit-archive)
  • GPU models and configuration: GTX 780
  • Any other relevant information: —

Additional context

Драйвер NVIDIA OpenGL обнаружил проблему — ÖZÜM! — РЕШЕНИЕ!

Я пытаюсь использовать nvcc с самым простым примером, но он работает некорректно. Я компилирую и выполняю пример из https://devblogs.nvidia.com/easy-introduction-cuda-c-and-c/, однако мой сервер не может выполнить Глобальный функция. Я переписываю код, чтобы получить сообщение об ошибке, и получаю следующее сообщение: «на устройстве нет образа ядра, доступного для выполнения»

Мой графический процессор — Quadro 6000, а версия cuda — 9.0.

#include  #include  __global__ void saxpy(int n, float a, float *x, float *y) { int i = blockIdx.x*blockDim.x + threadIdx.x; y[i] = 10.0; //a*x[i] + y[i]; } int main(int argc, char *argv[]) { int N = 120; int nDevices; float *x, *y, *d_x, *d_y; cudaError_t err = cudaGetDeviceCount(&nDevices); if (err != cudaSuccess) printf('%sn', cudaGetErrorString(err)); else printf('Number of devices %dn', nDevices); x = (float*)malloc(N*sizeof(float)); y = (float*)malloc(N*sizeof(float)); cudaMalloc(&d_x, N*sizeof(float)); cudaMalloc(&d_y, N*sizeof(float)); for (int i = 0; i < N; i++) { x[i] = 1.0f; y[i] = 2.0f; } cudaMemcpy(d_x, x, N*sizeof(float), cudaMemcpyHostToDevice); cudaMemcpy(d_y, y, N*sizeof(float), cudaMemcpyHostToDevice); // Perform SAXPY on 1M elements saxpy<<<1, 1>>>(N, 2.0f, d_x, d_y); cudaDeviceSynchronize(); err = cudaMemcpy(y, d_y, N*sizeof(float), cudaMemcpyDeviceToHost); printf('%sn',cudaGetErrorString(err)); cudaError_t errSync = cudaGetLastError(); cudaError_t errAsync = cudaDeviceSynchronize(); if (errSync != cudaSuccess) printf('Sync kernel error: %sn', cudaGetErrorString(errSync)); if (errAsync != cudaSuccess) printf('Async kernel error: %sn', cudaGetErrorString(errAsync)); cudaFree(d_x); cudaFree(d_y); free(x); free(y); }' 

Команда выполнения

bash-4.1$ nvcc -o sapx simples_cuda.cu bash-4.1$ ./sapx Number of devices 1 no error Sync kernel error: no kernel image is available for execution on the device 

Графические процессоры с вычислительной мощностью менее 2.0 поддерживаются только инструментами CUDA версии 6.5 и старше.

Графические процессоры с вычислительной мощностью менее 3,0 (но больше или равной 2,0) поддерживаются только инструментами CUDA версии 8.0 и старше.

Ваш Quadro 6000 — это графический процессор 2.0 с вычислительными возможностями. Это можно определить программно с помощью deviceQuery Пример кода CUDA или через поиск в Google. Не поддерживается CUDA 9.0

Добавление к ответу @ RobertCrovella:

При компиляции с помощью nvcc вы всегда должны устанавливать соответствующие флаги для генерации двоичных образов ядра для микроархитектуры / вычислительных возможностей, на которых вы собираетесь работать. Например: -gencode arch=compute_${COMPUTE_CAPABILITY},code=compute_${COMPUTE_CAPABILITY}, скажем, COMPUTE_CAPABILITY=20.

Читать nvcc --help для получения дополнительной информации об этих флагах (хотя, честно говоря, это немного мутная тема).

  • предложенный вами набор переключателей не генерирует двоичный образ ядра. Они генерируют PTX.
  • @RobertCrovella: Я не хотел, чтобы они были единственными переключателями

Вы должны добавить вычислительные возможности вашей видеокарты в качестве параметра компилятору nvcc. В моем случае (windows / Visual Studio 2017) я установил это в поле Code Generation. Так как @einpoklum ответил, прежде чем добавить генкод такой параметр -gencode arch=compute_${COMPUTE_CAPABILITY},code=compute_${SM_CAPABILITY} где {COMPUTE_CAPABILITY} а также {SM_CAPABILITY} принадлежат следующим парам (вы можете добавить их все, как VS2017),

{COMPUTE_CAPABILITY},{SM_CAPABILITY} compute_35,sm_35 compute_37,sm_37 compute_50,sm_50 compute_52,sm_52 compute_60,sm_60 compute_61,sm_61 compute_70,sm_70 compute_75,sm_75 compute_80,sm_80 

D:Program FilesnVidiaCUDA SamplesMySamplesIntroToCUDA_1IntroToCUDA_1>'D:Program FilesnVidiaGPU Computing ToolkitCUDAv11.0binnvcc.exe' -gencode=arch=compute_35,code='sm_35,compute_35' -gencode=arch=compute_37,code='sm_37,compute_37' -gencode=arch=compute_50,code='sm_50,compute_50' -gencode=arch=compute_52,code='sm_52,compute_52' -gencode=arch=compute_60,code='sm_60,compute_60' -gencode=arch=compute_61,code='sm_61,compute_61' -gencode=arch=compute_70,code='sm_70,compute_70' -gencode=arch=compute_75,code='sm_75,compute_75' -gencode=arch=compute_80,code='sm_80,compute_80' --use-local-env -ccbin 'D:Program Files (x86)Microsoft Visual Studio2017EnterpriseVCToolsMSVC14.16.27023binHostX86x64' -x cu -I'D:Program FilesnVidiaGPU Computing ToolkitCUDAv11.0include' -I'D:Program FilesnVidiaGPU Computing ToolkitCUDAv11.0include' -G --keep-dir x64Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -D_DEBUG -D_CONSOLE -D_UNICODE -DUNICODE -Xcompiler '/EHsc /W3 /nologo /Od /Fdx64Debugvc141.pdb /FS /Zi /RTC1 /MDd ' -o x64DebugIntroToCUDA_1.cu.obj 'D:Program FilesnVidiaCUDA SamplesMySamplesIntroToCUDA_1IntroToCUDA_1IntroToCUDA_1.cu' 

Вы можете проверить CC своей видеокарты с помощью deviceQuery пример вы можете найти в CUDA Samples SDK

Tweet

Share

Link

Plus

Send

Send

Pin

#pytorch #gpu

Вопрос:

Я пытаюсь запустить фрагмент кода на Pytorch, но получаю ошибку:

 RuntimeError: CUDA error: no kernel image is available for execution on the device
 

Я сузил круг вопросов, чтобы избежать совпадения версий CUDA. На моей машине 2 графических процессора:
GeForce GTX 650 (вычислительные возможности 3.0) и Tesla K40c (вычислительные возможности 3.5). Я проверил вычислительные возможности здесь: https://developer.nvidia.com/cuda-gpus.
Моя nvidia-smi команда дает следующее:

вывод nvidia-smi (Версия драйвера: 470.57.02 и версия CUDA: 11.4)

В то время как моя nvcc -V команда дает следующее:

 nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
 

Версия 10.1 существует, потому что я пытался установить эту версию CUDA, в частности, следуя инструкциям в другом месте (например: https://medium.com/@anarmammadli/how-to-install-cuda-10-2-cudnn-7-6-5-and-samples-on-ubuntu-18-04-2493124478ca)

Кроме того, я установил cudatoolkit с conda , и так далее, У conda list меня есть следующая запись:

 ...
cudatoolkit               10.1.243             h6bb024c_0
...
 

В соответствии с https://github.com/moi90/pytorch_compute_capabilities/blob/main/table.md Я также установил версию 1.8.0 PyTorch.

Однако в Python 3.7.11:

 Python 3.7.11 (default, Jul 27 2021, 14:32:16)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.__version__
'1.8.1'
>>> torch.version.cuda
'10.1'
>>> torch.cuda.get_arch_list()
['sm_37', 'sm_50', 'sm_60', 'sm_61', 'sm_70', 'sm_75', 'compute_37']
>>> torch.cuda.is_available()
True
 

У меня нет sm_35 в наличии, что мне нужно для использования Tesla K40. Я считаю, что именно по этой причине я продолжаю получать CUDA error: no kernel image is available for execution on the device ошибку. Я также попробовал все вышеперечисленное для версии 10.2 CUDA, тот же результат.

Комментарии:

1. Вам нужно будет найти и установить версию PyTorch, созданную с поддержкой cc3.5 . Драйвер, который вы уже установили, в порядке.

2. Так что, похоже, мне требуется Pytorch с версией до 1.5 ?

3. То, какая двоичная поддержка имеется в данной версии Pytorch, не является функцией набора инструментов CUDA или Pytorch (в пределах поддержки), это то, какую двоичную поддержку разработчики Pytorch выбирают для распространения. Они предпочитают жертвовать более старой аппаратной поддержкой для меньшего размера двоичного пакета. Вероятно, вы можете самостоятельно создать более современную версию Pytorch с помощью инструментария CUDA 10.x. Если нет, вам придется брать то, что они дают, и это будет очень старо

Ответ №1:

Я решил свою проблему. Как указано в комментариях, мне требовалась версия PyTorch, поддерживающая sm_35 вычислительные возможности. Это имело мало общего с текущей версией CUDA. В конце концов, я нашел эти двоичные файлы:

https://blog.nelsonliu.me/2020/10/13/newer-pytorch-binaries-for-older-gpus/

Я, наконец, исправил проблему, создав новую среду и запустив:

 pip install torch==1.3.1 cu92 -f https://nelsonliu.me/files/pytorch/whl/torch_stable.html
 

2 / 1 / 1

Регистрация: 18.04.2018

Сообщений: 9

1

16.04.2021, 18:38. Показов 5071. Ответов 1


Здравствуйте.
После переустановки системы почему-то перестала работать CUDA. Выдает ошибку: addKernel launch failed: no kernel image is available for execution on the device

До этого все работало нормально.
Видеокарта: GTX950M
Версия CUDA: 11.2
Более низкие версии в VS2019 не поддерживаются.
В более низких версиях VS CUDA 9.2 работает, но хотелось бы решить имеющуюся проблему.
Заранее спасибо.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

16.04.2021, 18:38

1

Sarcosuchus

2 / 1 / 1

Регистрация: 18.04.2018

Сообщений: 9

16.06.2021, 17:42

 [ТС]

2

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
for (int i = 0; i < interfers.Count; i++)
             {
                 _loadedInterfers[i].UnlockBits(bmpData[i]);
             }
             List<double> di1 = new List<double>();
             List<double> di2 = new List<double>();
             List<double> di3 = new List<double>();
             List<double> di4 = new List<double>();
             List<double> X = new List<double>();
             List<double> Y = new List<double>();
             List<double> Fi = new List<double>();
 
             for (int i = 0; i < rgbValues[0].Length; i++)
             {
                 di1.Add(Math.Sqrt(2) * (rgbValues[0][i] - rgbValues[4][i]));
                 di2.Add(rgbValues[1][i] - rgbValues[3][i]
                     - rgbValues[5][i] + rgbValues[7][i]);
                 di3.Add(Math.Sqrt(2) * (rgbValues[6][i] - rgbValues[2][i]));
                 di4.Add(rgbValues[5][i] - rgbValues[1][i]
                     - rgbValues[3][i] + rgbValues[7][i]);
                 X.Add((di1[i] + di2[i]) / 2);
                 Y.Add((di3[i] + di4[i]) / 2);
                 Fi.Add(Math.Atan2(Y[i], X[i]));
             }

Добавлено через 11 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  double min = Fi.Min();
            double max = Fi.Max();
            double tmp = 0;
            for(int i = 1; i < Fi.Count; i++)
            {
                if(i % (1080 * 3) == 0)
                {
                    tmp = 0;
                }
                if(Math.Abs(Fi[i - 1] - Fi[i]) > 0.15)
                {
                    tmp += 2 * Math.PI;
                }
                Fi[i] += tmp;
            }
            min = Fi.Min();
            double div = (-Fi.Min() + Fi.Max()) / 255;
            if (div == 0)
                div = 1;
            for (int i = 0; i < di1.Count; i++)
            {
                if (Fi[i] < 0 && tmp != 0)
                {
                    var t = 0;
                }
                Fi[i] = (Fi[i] - min) / div;
                if(Fi[i] < 100)
                { int m = 0; }
            }

Добавлено через 19 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Rectangle rectRes = new Rectangle
                (0, 0, _loadedInterfers[0].Width,
                _loadedInterfers[0].Height);
            System.Drawing.Imaging.BitmapData bmpDataRes =
                _loadedInterfers[0].LockBits(rectRes,
                System.Drawing.Imaging.ImageLockMode.ReadWrite,
                _loadedInterfers[0].PixelFormat);
 
            IntPtr ptrRes = bmpDataRes.Scan0;
            int bytesRes = Math.Abs(bmpDataRes.Stride)
                * _loadedInterfers[0].Height;
             byte[] res = new byte[bytesRes];
             for (int i = 0; i < Fi.Count; i++)
             {
                 res[i] = (byte)Fi[i];
             }
            processingProgressBar.Value += 20;
            System.Runtime.InteropServices.Marshal.Copy(res, 0, ptrRes, bytesRes);
 
            _loadedInterfers[0].UnlockBits(bmpDataRes);
            DecriptetPicture.Image = new Bitmap(_loadedInterfers[0]);
        }

Добавлено через 7 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if(DecriptetPicture.Image != null)
            {
                saveFileDialog.Filter = "Images|*.png;*.bmp;*.jpg";
                ImageFormat format = ImageFormat.Png;
                if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    string ext = System.IO.Path.GetExtension(saveFileDialog.FileName);
                    switch (ext)
                    {
                        case ".jpg":
                            format = ImageFormat.Jpeg;
                            break;
                        case ".bmp":
                            format = ImageFormat.Bmp;
                            break;
                    }
                    DecriptetPicture.Image.Save(saveFileDialog.FileName, format);
                }
            }
        }

Добавлено через 2 часа 48 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
using var buffer = accelerator.Allocate<double>(
                rgbValues[0].Length);
            int[] qeq = new int[rgbValues.Count * rgbValues[0].Length];
            for (int i = 0; i < rgbValues.Count; i++)
                for (int j = 0; j < rgbValues[0].Length; j++)
                {
                    qeq[j + rgbValues[0].Length * i] = rgbValues[i][j];
                }
            using var bufa = accelerator.Allocate<int>(qeq.Length);
            using var b = accelerator.Allocate<double>(rgbValues[0].Length);
            // Copy to accelerator
            processingProgressBar.Value += 20;
            bufa.CopyFrom(qeq, 0, 0, qeq.Length);

Добавлено через 10 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static void MyKernel(Index1 index, ArrayView<double> res,
            ArrayView<int> values, ArrayView<double> Yr)
        {
            double d1 = XMath.Sqrt(2) * 
                (values[index] - values[index + res.Length * 4]);
            double d3 = XMath.Sqrt(2) * (values[index + res.Length * 6]
                - values[index + res.Length * 2]);
            double d2 = values[index + res.Length] - values[index + res.Length * 3] - 
                values[index + res.Length * 5] + values[index + res.Length * 7];
            double d4 = - 1 * values[index + res.Length] - values[index + res.Length * 3] + 
                values[index + res.Length * 5] + values[index + res.Length * 7];
            double X = (d1 + d2) / 2;
            double Y = (d3 + d4) / 2;
            res[index] = XMath.Atan2(Y, X);
        }
        }

Добавлено через 4 минуты

C++
1
2
3
4
5
6
var resGPU = buffer.GetAsArray();
            var resY = b.GetAsArray();
            accelerator.Synchronize();
            processingProgressBar.Value += 20;
            var dat = buffer.GetAsArray();
            _loadedInterfers[0].UnlockBits(bmpData[0]);

Добавлено через 1 час 48 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
private void RunProcessing(List<Bitmap> interfers)
        {
            processingProgressBar.Value = 0;
            List<Rectangle> rect = new List<Rectangle>();
            List<BitmapData> bmpData = new List<BitmapData>();
            List<IntPtr> ptr = new List<IntPtr>();
            List<byte[]> rgbValues = new List<byte[]>();
            for (int i = 0; i < loadedInterfers.Count; i++)
            {
                rect.Add(new Rectangle(
                    0, 0, loadedInterfers[i].Width,
                    loadedInterfers[i].Height));
                bmpData.Add(
                    loadedInterfers[i].LockBits(rect[i],
                    System.Drawing.Imaging.ImageLockMode.ReadWrite,
                    loadedInterfers[i].PixelFormat));
                ptr.Add(bmpData[i].Scan0);
                int bytes = Math.Abs(bmpData[i].Stride) * loadedInterfers[i].Height;
                rgbValues.Add(new byte[bytes]);
                System.Runtime.InteropServices.Marshal.Copy(
                    ptr[i], rgbValues[i], 0, bytes);
            }
            processingProgressBar.Value += 10;
             for (int i = 0; i < interfers.Count; i++)
             {
                 loadedInterfers[i].UnlockBits(bmpData[i]);
             }
             List<double> di1 = new List<double>();
             List<double> di2 = new List<double>();
             List<double> di3 = new List<double>();
             List<double> di4 = new List<double>();
             List<double> X = new List<double>();
             List<double> Y = new List<double>();
             List<double> Fi = new List<double>();
 
             for (int i = 0; i < rgbValues[0].Length; i++)
             {
                 di1.Add(Math.Sqrt(2) * (rgbValues[0][i] - rgbValues[4][i]));
                 di2.Add(rgbValues[1][i] - rgbValues[3][i]
                     - rgbValues[5][i] + rgbValues[7][i]);
                 di3.Add(Math.Sqrt(2) * (rgbValues[6][i] - rgbValues[2][i]));
                 di4.Add(rgbValues[5][i] - rgbValues[1][i]
                     - rgbValues[3][i] + rgbValues[7][i]);
                 X.Add((di1[i] + di2[i]) / 2);
                 Y.Add((di3[i] + di4[i]) / 2);
                 Fi.Add(Math.Atan2(Y[i], X[i]));
             }
 
            processingProgressBar.Value += 20;
            processingProgressBar.Value += 40;
            double min = Fi.Min();
            double max = Fi.Max();
            double tmp = 0;
            for(int i = 1; i < Fi.Count; i++)
            {
                if(i % (1080 * 3) == 0)
                {
                    tmp = 0;
                }
                if(Math.Abs(Fi[i - 1] - Fi[i]) > 0.15)
                {
                    tmp += 2 * Math.PI;
                }
                Fi[i] += tmp;
            }
            min = Fi.Min();
            double div = (-Fi.Min() + Fi.Max()) / 255;
            if (div == 0)
                div = 1;
            for (int i = 0; i < di1.Count; i++)
            {
                if (Fi[i] < 0 && tmp != 0)
                {
                    var t = 0;
                }
                Fi[i] = (Fi[i] - min) / div;
                if(Fi[i] < 100)
                { int m = 0; }
            }
            processingProgressBar.Value += 10;
            //var newBitmap = new Bitmap(loadedInterfers[0]);
 
            Rectangle rectRes = new Rectangle
                (0, 0, loadedInterfers[0].Width,
                loadedInterfers[0].Height);
            System.Drawing.Imaging.BitmapData bmpDataRes =
                loadedInterfers[0].LockBits(rectRes,
                System.Drawing.Imaging.ImageLockMode.ReadWrite,
                loadedInterfers[0].PixelFormat);
 
            IntPtr ptrRes = bmpDataRes.Scan0;
            int bytesRes = Math.Abs(bmpDataRes.Stride)
                * loadedInterfers[0].Height;
             byte[] res = new byte[bytesRes];
             for (int i = 0; i < Fi.Count; i++)
             {
                 res[i] = (byte)Fi[i];
             }
            processingProgressBar.Value += 20;
            System.Runtime.InteropServices.Marshal.Copy(res, 0, ptrRes, bytesRes);
 
            loadedInterfers[0].UnlockBits(bmpDataRes);
            DecriptetPicture.Image = new Bitmap(loadedInterfers[0]);
        }



0



Понравилась статья? Поделить с друзьями:
  • No input file specified apache как исправить
  • No incoming connections utorrent как исправить
  • No incoming connections deluge как исправить
  • No image file detected asrock как исправить
  • No ide master hdd detected press f1 to resume как исправить