В моем пакете R у меня есть C код, который использует Intel MKL (и библиотека с открытым исходным кодом для C модульного тестирования ). Я использую CMake для создания кода C. У меня также есть R cpp код интерфейса, который я использую для вызова C кода из R.
Я хотел знать, примет ли CRAN этот пакет учитывая, что для его работы в вашей системе уже должны быть установлены Intel MKL и CMake?
Меня не слишком беспокоит модульное тестирование, я всегда могу от него избавиться, но мне определенно нужен Intel MKL, потому что я использую процедуры линейной алгебры, которые задают c для MKL, например, Sparse- Matrix-Dense-Matrix multiply et c.
Причина, по которой мне нужен CMake, заключается в том, что в настоящее время я использую его для создания библиотеки stati c из кода C и манипулирования файлом Makevars
в папке пакета src
, так что я могу связать код интерфейса R cpp с библиотекой C.
My Makevars
выглядит следующим образом:
PKG_CPPFLAGS=-I/usr/local/lib/R/site-library/Rcpp/include -I/opt/intel/compilers_and_libraries_2019.4.243/linux/mkl/include -I./C
PKG_LIBS=-L./C/cmake-build-release -lbcd -llog -Wl,--start-group /opt/intel/compilers_and_libraries_2019.4.243/linux/mkl/lib/intel64/libmkl_intel_ilp64.a /opt/intel/compilers_and_libraries_2019.4.243/linux/mkl/lib/intel64/libmkl_sequential.a /opt/intel/compilers_and_libraries_2019.4.243/linux/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl
Это работает в Ubuntu, но я Я беспокоюсь об OS X и особенно Windows. Например, здесь кто-то утверждает, что Intel MKL несовместим с minGW
.
Я знаю, что есть много пакетов CRAN, которые используют либо MKL, либо CMake. Но для тех, которые я изучил, MKL используется как дополнительная библиотека BLAS, а CMake используется для создания содержимого папки inst
, которая не зависит от внешних библиотек. Я смотрел на написание расширений R , а также на страницу отправки CRAN , но не смог найти ответ. Я подумал, что, поскольку все больше и больше людей интересуются использованием CMake и MKL с R, было бы хорошо иметь SO сообщение.