Может ли официальный пакет CRAN R зависеть от Intel MKL и CMake? (а проверить?) - PullRequest
0 голосов
/ 21 апреля 2020

В моем пакете 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 сообщение.

1 Ответ

1 голос
/ 21 апреля 2020

Кажется, вы связываете это не с того конца.

У вас есть более узкое и специализированное решение, которое вы создали (MKL, CMake).

Теперь вы беспокоитесь, что оно может быть слишком специализированным. Вы на правильном пути. Прежде всего, CMake используется другими пакетами, поэтому вы можете просто объявить его как SystemRequirements:. Во-вторых, MKL сложнее, но ... действительно специализирован.

Советы по общей рекомендации для более широкой загрузки CRAN будет

  • ослабить ваши требования к коду : используйте MKL, если есть, но предлагайте запасной вариант, когда его нет; теперь вам больше не требуется MKL
  • то же самое для CMake: сохраняйте его и зависите от него, лучше все же постарайтесь не требовать его, так как большинству других 15000 пакетов CRAN это тоже не нужно.

Как только вы нажмете эти два, вы готовы к загрузке CRAN. Если все это кажется обременительным, просто придерживайтесь репозитория GitHub или, возможно, drat repo.

...