exponenta event banner

Обработка больших mxArrays

Двоичные MEX-файлы, созданные на 64-разрядных платформах, могут обрабатывать 64-разрядные mxArrayс. Эти большие массивы данных могут иметь до 248-1 элементов. Максимальное количество разреженных элементов mxArray может иметь значение 248-2.

С помощью следующих инструкций создаются независимые от платформы двоичные MEX-файлы.

Конфигурация системы может повлиять на производительность MATLAB ®. Требования к 64-разрядному процессору позволяют создавать mxArray и доступ к данным в нем. Однако системная память, в частности размер ОЗУ и виртуальной памяти, определяют скорость, с которой MATLAB обрабатывает mxArray. Чем больше памяти, тем быстрее обработка.

Объем ОЗУ также ограничивает объем данных, одновременно обрабатываемых в MATLAB. Руководство по вопросам памяти см. в разделе Стратегии эффективного использования памяти.

Использование API 64-Bit

Сигнатуры функций API, показанные в следующей таблице, используют mwSize или mwIndex типы для работы с 64-разрядной mxArray. Переменные, используемые в исходном коде для вызова этих функций, должны иметь правильный тип.

Фортран mxArray Функции с использованием mwSize/mwIndex

mxCalcSingleSubscriptmxCreateStructMatrix
mxCallocmxGetCell

mxCopyCharacterToPtr

mxGetDimensions

mxCopyComplex16ToPtr

mxGetElementSize

mxCopyComplex8ToPtr

mxGetField

mxCopyInteger1ToPtr

mxGetFieldByNumber

mxCopyInteger2ToPtr

mxGetIr

mxCopyInteger4ToPtr

mxGetJc

mxCopyPtrToCharacter

mxGetM

mxCopyPtrToComplex16

mxGetN

mxCopyPtrToComplex8

mxGetNumberOfDimensions

mxCopyPtrToInteger1

mxGetNumberOfElements

mxCopyPtrToInteger2

mxGetNzmax

mxCopyPtrToInteger4

mxGetProperty

mxCopyPtrToPtrArray

mxGetString

mxCopyPtrToReal4

mxMalloc

mxCopyPtrToReal8

mxRealloc

mxCopyReal4ToPtr

mxSetCell

mxCopyReal8ToPtr

mxSetDimensions
mxCreateCellArraymxSetField
mxCreateCellMatrixmxSetFieldByNumber
mxCreateCharArraymxSetIr
mxCreateCharMatrixFromStringsmxSetJc
mxCreateDoubleMatrixmxSetM
mxCreateNumericArraymxSetN
mxCreateNumericMatrixmxSetNzmax
mxCreateSparsemxSetProperty
mxCreateStructArray 

Осторожность при использовании отрицательных значений

При использовании 64-разрядного API mwSize и mwIndex эквивалентны INTEGER*8 в Фортране. Этот тип не подписан, в отличие от INTEGER*4, который является типом, используемым в 32-разрядном API. Будьте осторожны, чтобы не передавать какие-либо отрицательные значения функциям, которые принимают mwSize или mwIndex аргументы. Не отбрасывать негатив INTEGER*4 значения для mwSize или mwIndex; не может быть предсказано возвращенное значение. Вместо этого измените код, чтобы избежать использования отрицательных значений.

Создание кроссплатформенных приложений

При разработке кроссплатформенных приложений (программ, которые могут работать как на 32-разрядных, так и на 64-разрядных архитектурах) обратите внимание на верхний предел значений, используемых для mwSize и mwIndex. 32-разрядное приложение считывает эти значения и присваивает их переменным, объявленным как INTEGER*4 в Фортране. Будьте внимательны, чтобы не назначать большой mwSize или mwIndex значение для INTEGER*4 или другой переменной, которая может быть слишком маленькой.