Soru Tensorflow, SSE4.2 ve AVX talimatları ile nasıl derlenir?


Bu, Tensorflow'un çalışıp çalışmadığını kontrol etmek için bir komut dosyası çalıştırılmasından alınan mesajdır:

I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcurand.so.8.0 locally
W tensorflow/core/platform/cpu_feature_guard.cc:95] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:95] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:910] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero

SSE4.2 ve AVX'den bahsettiğini fark ettim.

1) SSE4.2 ve AVX nedir?

2) Bu SSE4.2 ve AVX, Tensorflow görevleri için CPU hesaplamaları nasıl geliştirir?

3) Tensorflow iki kütüphaneyi kullanarak nasıl derlenir?


205
2017-12-22 23:21


Menşei


Bu bayraklarla inşa etmeyi seviyorum bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --config=cuda -k //tensorflow/tools/pip_package:build_pip_package  Xeon E5 v3'te 8k matmul CPU hızında resmi sürümle karşılaştırıldığında 3x iyileşme sağlayan (0.35 -> 1.05 T ops / sn) - Yaroslav Bulatov
ve unutma NOTE on gcc 5 or later: the binary pip packages available on the TensorFlow website are built with gcc 4, which uses the older ABI. To make your build compatible with the older ABI, you need to add --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" to your bazel build command. ABI compatibility allows custom ops built against the TensorFlow pip package to continue to work against your built package. buradan tensorflow.org/install/install_sources - Ivan Kush
Bu talimatları destekleyen TF için bazı derlenmiş ikili dosyalarım var github.com/lakshayg/tensorflow-build. Bunu faydalı bulabilirsin. - Lakshay Garg
@IvanKush bu bayrağı ekledikten sonra, tensorflow'u başarılı bir şekilde ithal edemiyorum (iyi derler). Eğer gcc 5 ile başarıyla derlediyseniz, lütfen bakınız: stackoverflow.com/questions/45877158/... - anon01
Ubuntu 16.04 kullanıyorsanız, ihtiyacınız olan hemen hemen tüm varyantlar için geliştirdik. github.com/mind/wheels - danqing


Cevaplar:


Ben de aynı problemle karşılaştım, Yaroslav Bulatov'un önerisi SSE4.2 desteğini kapsamayacak gibi görünüyor. --copt=-msse4.2 yeterli olur. Sonunda, başarıyla oluşturdum

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda -k //tensorflow/tools/pip_package:build_pip_package

herhangi bir uyarı veya hata almadan.

Muhtemelen herhangi bir sistem için en iyi seçim:

bazel build -c opt --copt=-march=native --copt=-mfpmath=both --config=cuda -k //tensorflow/tools/pip_package:build_pip_package

(Güncelleştirme: yapı betikleri yiyebilir -march=nativemuhtemelen bir =.)

-mfpmath=both sadece gcc ile çalışır, clang değil. -mfpmath=sse muhtemelen daha iyi değilse, daha iyidir ve x86-64 için varsayılan değerdir. 32-bit varsayılan olarak oluşturur -mfpmath=387, bu yüzden 32-bit için yardımcı olacaktır. (Ancak, numaralandırmada yüksek performans istiyorsanız, 64 bitlik ikili dosyalar oluşturmanız gerekir.)

TensorFlow'un -O2 veya -O3 olduğunu. gcc -O3 otomatik vektörizasyon dahil olmak üzere tam optimizasyon sağlar, ancak bazen kodu yavaşlatabilir.


Bu ne yapar: --copt için bazel build C ve C ++ dosyalarını derlemek için gcc'ye doğrudan bir seçenek aktarır (ancak bağlantı oluşturmuyor, bu nedenle çapraz dosya bağlantısı zaman optimizasyonu için farklı bir seçeneğe ihtiyacınız var)

x86-64 gcc varsayılan olarak sadece SSE2 veya eski SIMD komutlarını kullanmakta, böylece ikili dosyaları çalıştırabilirsiniz. herhangi x86-64 sistemi. (Görmek https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html). İstediğin bu değil. CPU'nuzun çalıştırabileceği tüm talimatlardan yararlanan bir ikili yapmak istersiniz, çünkü bu ikili dosyayı yalnızca sizin oluşturduğunuz sistemde çalıştırıyorsunuz.

-march=native CPU'nuzun desteklediği tüm seçenekleri etkinleştirir, böylece -mavx512f -mavx2 -mavx -mfma -msse4.2 gereksiz. (Ayrıca, -mavx2 zaten etkinleştirir -mavx ve -msse4.2Bu yüzden Yaroslav'un ​​emri iyi olmalıydı. Ayrıca, bu seçeneklerden birini (FMA gibi) desteklemeyen bir CPU kullanıyorsanız, -mfma yasadışı talimatlarla hatalı bir ikili yapardı.

TensorFlow en ./configure varsayılanlar etkinleştiriliyor -march=nativeBu nedenle, derleyici seçenekleri el ile belirtmek zorunda kalmadan kullanmak gerekir.

-march=native sağlayan -mtune=native, yani CPU'nuz için optimize eder AVX yönergelerinin hangi sırasının, hizalanmamış yükler için en iyi olduğu şeyler için.

Tüm bunlar gcc, clang veya ICC için geçerlidir. (ICC için kullanabilirsiniz -xHOST yerine -march=native.)


125
2018-01-11 07:13



Gerçekten çalışıyor> +1! Öyle görünüyor -march=native onun işi değil. Yanında, bırakarak --config=cuda (CUDA desteği gerekli değilse) ve -k (derleme sırasında herhangi bir hata oluşmadığından) de çalışır. - Marc
Yeni derlenmiş sürümü kaldırıp yeniden yükledikten sonra AVX, AVX2 ve FMA için hala uyarı alırım. - Benedikt S. Vogler
Düşmek zorundaydım --copt=-mfpmath=both onunla çalışmak clang MacOS'ta. Ortaya çıkan ikiliyi etkiler mi? - gc5
@Thornhale evet, bugün benim için çalıştım. - ComputerScientist
Sadece açıklama için: configure dosyasını oluşturduğumda .... basitçe kullanıyorum --copt = -march = native? Ya da optimizasyonları yapma seçeneğim olan orijinal yazılarda görülen tüm optimizasyonlarımı koydum mu? - Thornhale


Açıklaması ile başlayalım Bu uyarıları neden ilk sırada görüyorsunuz?.


Muhtemelen TF'yi kaynağından yüklemediniz ve bunun yerine pip install tensorflow. Bu, mimariniz için optimize edilmemiş önceden oluşturulmuş (başka biri tarafından) ikili dosyaları yüklediğiniz anlamına gelir. Ve bu uyarılar size tam olarak şunu söylüyor: mimarinizde bir şey var, ancak ikili kullanılmadığı için kullanılmayacak. İşte bölümü belgeleme.

TensorFlow, başlangıçta olup olmadığını denetler.   CPU'da optimizasyonlar mevcut. Optimizasyonlar değilse   dahil edildiğinde, TensorFlow uyarılar gönderir, örn. AVX, AVX2 ve FMA   talimatlar dahil değildir.

İyi olan şey Muhtemelen sadece TF ile deney yapmayı / denemeyi istiyorsunuz, bu yüzden her şey düzgün çalışacak ve bunun için endişelenmemelisiniz.


SSE4.2 ve AVX nedir?

Vikipedi hakkında iyi bir açıklama var SSE4.2 ve AVX. Bu bilginin makine öğrenmede iyi olması gerekli değildir. Onları bir takım ek olarak düşünebilirsiniz. Talimatlar Bir bilgisayarın, doğal olarak paralelleştirilebilen (örneğin, iki dizinin eklenmesi) işlemleri gerçekleştirmek için tek bir talimatla çoklu veri noktalarını kullanması.

Hem SSE hem de AVX, soyut bir düşüncenin uygulanmasıdır. SIMD (Tek komut, çoklu veri), hangisi

Flynn'in taksonomisinde bir paralel bilgisayarlar sınıfı. Açıklar   aynı işlemi gerçekleştiren çoklu işlem öğeleri olan bilgisayarlar   Aynı anda birden fazla veri noktası üzerinde işlem. Böylece, bu tür makineler   veri düzeyinde paralellikten yararlanma, ancak eşzamanlılık değil:   eşzamanlı (paralel) hesaplamalar, ancak sadece tek bir süreç   (talimat) belli bir anda

Bir sonraki sorunuzu cevaplamak için bu yeterli.


Bu SSE4.2 ve AVX, TF görevleri için CPU hesaplamaları nasıl geliştirir?

Çeşitli vektör (matris / tensör) işlemlerinin daha verimli hesaplanmasını sağlarlar. Daha fazla okuyabilirsiniz bu slaytlar


Tensorflow iki kütüphaneyi kullanarak nasıl derlenir?

Bu talimatlardan yararlanmak için derlenmiş bir ikiliye sahip olmanız gerekir. En kolay yol kendin derlemek. Mike ve Yaroslav'un ​​önerdiği gibi, aşağıdaki bazel komutunu kullanabilirsiniz.

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda -k //tensorflow/tools/pip_package:build_pip_package


106
2018-04-22 06:04



Bu komut satırı ne anlama geliyor? Ve yüklemeliyim bazel bu durumda? - Y. Z.
Hiç kimse MSYS2 veya Visual Studio 2017 ommunity Edition ile 64 bit pencere altında inşa ediyor mu? ve adımları paylaşabilirsiniz? - James Chang


Önce 3. soruma cevap vereyim:

Bir conda-env içinde kendi kendine derlenmiş bir sürümünü çalıştırmak istiyorsanız, yapabilirsiniz. Bunlar, sistemime ek talimatlar koymak için tensorflow almak için koştum genel talimatlar. Not: Bu yapı, bir AMD A10-7850 yapısı için (Ubuntu 16.04 LTS'yi çalıştıran hangi yönergelerin desteklendiğini ... farklı olabilir) kontrol etmektir. Python 3.5'i conda-env'de kullanıyorum. Kredi, tensorflow kaynak yükleme sayfasına ve yukarıda verilen cevaplara gider.

git clone https://github.com/tensorflow/tensorflow 
# Install Bazel
# https://bazel.build/versions/master/docs/install.html
sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel
# Create your virtual env with conda.
source activate YOUR_ENV
pip install six numpy wheel, packaging, appdir
# Follow the configure instructions at:
# https://www.tensorflow.org/install/install_sources
# Build your build like below. Note: Check what instructions your CPU 
# support. Also. If resources are limited consider adding the following 
# tag --local_resources 2048,.5,1.0 . This will limit how much ram many
# local resources are used but will increase time to compile.
bazel build -c opt --copt=-mavx --copt=-msse4.1 --copt=-msse4.2  -k //tensorflow/tools/pip_package:build_pip_package
# Create the wheel like so:
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
# Inside your conda env:
pip install /tmp/tensorflow_pkg/NAME_OF_WHEEL.whl
# Then install the rest of your stack
pip install keras jupyter etc. etc.

2. soruya gelince:

Optimizasyonlar ile kendi kendini derleyen bir versiyon, benim düşünceme göre çabaya değer. Benim özel kurulumumda, 560-600 saniye süren hesaplamalar şimdi sadece yaklaşık 300 saniye sürüyor! Tam sayılar değişse de, genel olarak kurulumunuzda genel olarak% 35-50'lik bir hız artışı bekleyebilirsiniz.

Sonunda 1. sorunuz:

Yukarıda çok fazla cevap verilmiştir. Özetlemek: AVX, SSE4.1, SSE4.2MFA, X86 CPU'larında farklı türde genişletilmiş talimat setleridir. Birçoğu, matris veya vektör işlemlerini işlemek için optimize edilmiş talimatlar içerir.

Umarız size zaman kazandırmak için kendi yanlış düşüncemi vurgulayacağım: SSE4.2, SSE4.1'i geçersiz kılan talimatların daha yeni bir versiyonu değil. SSE4 = SSE4.1 (47 komut seti) + SSE4.2 (7 komut seti).

Tensorflow derlemesi bağlamında, eğer bilgisayarınız AVX2 ve AVX, ve SSE4.1 ve SSE4.2'yi destekliyorsa, optimizasyon işaretlerini herkes için koymalısınız. Yaptığım gibi yapma ve SSE4.2 ile gitmesi daha yeni olduğunu ve SSE4.1'in yerini alması gerektiğini düşünüyor. Bu açıkça YANLIŞ! Bana 40 dakikaya mal olan bunun yüzünden yeniden derlemeliydim.


48
2018-03-30 03:27



.whl dosyası nerede saklanır coz Windows'da da yüklemek isterim? - WiLL_K
Burada depolanır: / tmp / tensorflow_pkg (linux sürücünüzde) - Thornhale
Bunun ne kadar zaman alacağını söyleyebilir misin? Onun yaklaşık 2 saat ve benim laptop dondu. 4GB ram ve i5 işlemci ile çalışan ububtu - WiLL_K
Hmm, tensorflow'u derlemek uzun zaman alıyor. Benim laptop ile 8 gb yaklaşık 1.5 saat sürdü. Bununla birlikte, yükleme süreleriniz değişebilir ve mevcut ramdan büyük ölçüde etkilenecektir. Bu derlemelerin çok miktarda RAM aldıkları biliniyor. Kaynak gereksinimlerini azaltmak ve belki de donmaları önlemek için, "bazel build" den sonra aşağıdaki bayrağı ekleyerek derlemeyi çalıştırabilirsiniz: --local_resources 2048, .5,1.0 Bu genellikle donmalarla yardımcı olur, ancak derleme için gereken süreyi iki katına çıkarır. Örneğin: Daha hızlı sistemlerimden birinde, bayraksız derleme, bayrak 4500 ile 2200 saniye sürdü! - Thornhale
Genelde, pencerelerde ML yapmanın arkasında büyük bir acı olduğunu buldum. Sonunda, bir Linux ortamında çalışıyorsanız işe yarayacak şeyler bulmaya çalışmak için çok fazla zaman harcıyorsunuz. Her işletim sistemi için tensorflow'un derlenmesi gerektiğine inanıyorum. Dahası, eğer buraya giderseniz: bağlantıtensorflow'un resmi olarak desteklenmediğini göreceksiniz. Windows için tensorflow'u nasıl derleyeceğiniz hakkında bazı rehberler var: bağlantı. İtiraf etmeliyim ki, bunu denemedim. Ben sadece ubuntu kullanıyorum. - Thornhale


Bunlar SIMD  vektör işleme komut kümeleri.

Vektör talimatlarını kullanmak birçok görev için daha hızlıdır; Makine öğrenimi böyle bir görevdir.

Alıntı yapmak tensorflow yükleme belgeleri:

TensorFlow, mümkün olduğu kadar geniş bir makine yelpazesi ile uyumlu olmak için sadece x86 makinelerinde SSE4.1 SIMD komutlarını kullanmakta. Modern PC'lerin ve Mac'lerin çoğu daha gelişmiş talimatları destekler. Bu nedenle, yalnızca kendi makinenizde çalışacak bir ikili oluşturuyorsanız, bunları kullanarak bunları etkinleştirebilirsiniz. --copt=-march=native senin bazel inşa komutunda.


25
2017-12-29 21:28



Tensorflow ikili neden CPU gönderimini kullanmıyor? Bu GCC tarafından yeterince desteklenmiyor mu? - Chris Pushbullet
"Tensorflow yükleme belgeleri" bağlantısı çalışmıyor. Yani bu cevabın hala geçerli olup olmadığını merak ediyorum. Lütfen cevap ver! - Thornhale
@ChrisPushbullet, GPU için birkaç farklı bilgi işlem özelliğini desteklemek için Tensorflow'u derleyebilir, ancak ikili boyutu çok artırır. Benim tahminim aynı şey CPU için. - Davidmh


Tüm bu cevaplar + bazı deneme ve hatalar sayesinde, Mac ile birlikte yüklemeyi başardım. clang. Öyleyse çözümümümü paylaştığımda, birisi için yararlıdır.

  1. Üzerindeki talimatları izleyin Belgeler - TensorFlow'un Kaynaklardan Yüklenmesi 

  2. İstendiğinde

    Lütfen "--config = opt" bazel seçeneği belirtildiğinde derleme sırasında kullanılacak optimizasyon işaretlerini belirtin [Default is -march = native]

sonra bu dizeyi kopyala yapıştır:

-mavx -mavx2 -mfma -msse4.2

(Varsayılan seçenek hatalara neden oldu, bu yüzden diğer bayrakların bazılarını yaptım. Yukarıdaki bayraklarda hiçbir hatam yok. n diğer tüm sorulara)

Yükledikten sonra, varsayılan modellere göre başka bir kurulumla ilgili derin modelleri eğitirken ~ 2x ila 2.5x hızını doğrularım - MacOS'ta TensorFlow yükleme 

Umarım yardımcı olur


10
2017-11-06 21:28



-march=native Derleyiciniz doğru şekilde destekliyorsa daha da iyi olmalıdır. O da ayarlar -mtune=native CPU'nuz için iyi talimatlar yapmak. Örneğin. Haswell ve daha sonra, devre dışı bırakır -mavx256-split-unaligned-store ve -mavx256-split-unaligned-loadiçin varsayılan olarak -mtune=generic Verilerin hizalanmasının bilinmediği, ancak çalışma zamanında olduğu ortaya çıktığında performansa zarar verir. - Peter Cordes
Teşekkürler! Benim durumumda -march=native Diğer seçenekler yapmadığında bir hataya neden oldu. Belki de belirli bir derleyici. Ben sadece başkalarının aynı barikatı tecrübe etmesi durumunda bunu tam olarak paylaşıyordum. - JARS
Ne hata? Derleme sistemi bir dizgiyle boğulmadıkça = içinde ya da kullanma gcc veya clang, İşe yaramalı. Ve yapar -mtune=native -mavx2 -mfma  Senin için mi çalışıyorsun? Veya -mtune=skylake? (Ya da sahip olduğunuz CPU). BTW, -mavx2 ima -mavx ve -msse4.2. Değil canını yakmak Bunların hepsini bir tarif içine dahil etmek ve insanların CPU'larının desteklemediği şeyleri dışarıda bırakmasını kolaylaştırırım. - Peter Cordes
Bir süre önce bu sorunun üst kısmındaki cevabı düzenledim, ama kendimi tensorflow kullanmıyorum. Yanlış bir şey varsa -march=nativeyapı sistemi için bilmek isterdim. (Ve / veya akış yukarı rapor etmelisin, böylece yapı betiklerini düzeltebilirler). - Peter Cordes
Öneri için çok teşekkürler. Bunu kontrol etmek için .configure komut dosyasını yalnızca yeniden çalıştırıyorum -march=native ve bu hata: / Users / jose / Documents / code / tmptensorflow / tensorflow / tensorflow / core / BUILD: 1442: 1: C ++ derlemesinin derlenmesi '// tensorflow / core: lib_internal_impl' başarısız oldu (Çıkış 1). Tensorflow / core / platform / denormal.cc dosyasında bulunan dosyada: 37: /Library/Developer/CommandLineTools/usr/bin/../lib/clang/7.0.2/include/pmmintrin.h:28:2: error: "SSE3 komut seti etkin değil" #error "SSE3 komut seti etkin değil" Apple LLVM sürüm 7.0.2'yi kullanarak (clang-700.1.81) - JARS


Kısa bir süre önce onu kaynaktan yükledim ve aşağıdaki belirtilmiş komutlarla kaynağından yüklemek için gereken tüm adımlar şunlardır.

Diğer cevaplar zaten bu mesajların neden gösterildiğini açıklıyor. Benim cevabım, nasıl olduğuyla ilgili asıl yüklemede insanların uyuşmasına yardımcı olabilecek, nasıl ispatlanacağına dair adım adım bir adım atıyor.

  1. Bazel'i yükle

Mevcut olanlardan birini indirin bültenleri, Örneğin 0.5.2. Çıkarın, dizine girin ve yapılandırın: bash ./compile.sh. Yürütülebilir dosyayı /usr/local/bin: sudo cp ./output/bazel /usr/local/bin

  1. Tensorflow'u yükle

Klon tensorflow: git clone https://github.com/tensorflow/tensorflow.git Yapılandırmak için klonlanmış dizine gidin: ./configure

Birkaç soru ile size soracaktır, feryat Soruların her birine yanıtı önerdim, tabii ki, tercih ettiğiniz gibi kendi cevaplarınızı seçebilirsiniz:

Using python library path: /usr/local/lib/python2.7/dist-packages
Do you wish to build TensorFlow with MKL support? [y/N] y
MKL support will be enabled for TensorFlow
Do you wish to download MKL LIB from the web? [Y/n] Y
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: 
Do you wish to use jemalloc as the malloc implementation? [Y/n] n
jemalloc disabled
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N
No Google Cloud Platform support will be enabled for TensorFlow
Do you wish to build TensorFlow with Hadoop File System support? [y/N] N
No Hadoop File System support will be enabled for TensorFlow
Do you wish to build TensorFlow with the XLA just-in-time compiler (experimental)? [y/N] N
No XLA JIT support will be enabled for TensorFlow
Do you wish to build TensorFlow with VERBS support? [y/N] N
No VERBS support will be enabled for TensorFlow
Do you wish to build TensorFlow with OpenCL support? [y/N] N
No OpenCL support will be enabled for TensorFlow
Do you wish to build TensorFlow with CUDA support? [y/N] N
No CUDA support will be enabled for TensorFlow
  1. Pip paketi. Bunu yapmak için hangi talimatları istediğinizi tanımlamanız gerekir (bilirsiniz, Tensorflow sizin eksik olduğunuzu bildirir).

Pip komut dosyası oluştur: bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.1 --copt=-msse4.2 -k //tensorflow/tools/pip_package:build_pip_package

Pip paketi oluşturun: bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

Oluşturduğunuz Tensorflow pip paketini kurun: sudo pip install /tmp/tensorflow_pkg/tensorflow-1.2.1-cp27-cp27mu-linux_x86_64.whl

Şimdi bir dahaki sefere Tensorflow'u başlattığınızda eksik talimatlar hakkında artık şikayette bulunmayacaksınız.


6
2017-09-03 09:50



Sadece ile bina -c opt --copt=-march=native en az kadar iyi olmalı --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-msse4.1 --copt=-msse4.2. (İkisi de uyarıyı susturur ama -march=native Özellikle üzerinde kurduğunuz sistemdeki CPU'yu ayarlayarak daha hızlı kod yapabilir. Ayrıca dikkat edin --copt=-mavx2 --copt=-mfma tüm önceki AVX ve SSE seçeneklerini ima eder, bu yüzden bu uzun seçenekler dizisi, gcc seçeneklerini anlamayan bir kişi tarafından açıkça yazılmıştır. - Peter Cordes
@PeterCordes, bu konuya bir göz atın (github.com/tensorflow/tensorflow/issues/7449), bazel muhafızları bile march = native'in beklendiği gibi çalışmadığı konusunda iddialı değildi. Gördüğünüz gibi, "gcc seçeneklerini anlayın" diye düşünebilirsiniz. Bu durumda, sorunu "topluluk desteği" olarak işaretledikleri için düzeltmelerine yardımcı olabilirsiniz. - Eduardo
Teşekkürler, bir bakacağım ... Hmm, bazı insanlar bunu söylüyor --copt=-mavx2 işe yaramadı Eğer  --copt=-mfma Eserleri, --copt=-march=native çalışmalıdır, ayrıştırmadıkça = bir sorun. Gcc / clang / icc için, inşa komut dosyasının sonunda geçmesini kesinlikle istiyorsunuz -march=native derleyiciye. Bunu yapı betikleri aracılığıyla yapmak hile haline gelir. - Peter Cordes


Tüm CPU özelliklerini almak ve TF oluşturmak için bunlardan bazılarını uygulamak için Mac için küçük bir Bash betiğini (kolayca Linux'a aktarılabilir) derledim. TF master'da çalışıyorum ve sık sık kullanın (ayda bir kez).

https://gist.github.com/venik/9ba962c8b301b0e21f99884cbd35082f


4
2017-08-18 06:04





Bu en basit yöntem. Sadece bir adım.

Hız üzerinde önemli bir etkiye sahiptir. Benim durumumda, bir eğitim adımı için alınan zaman neredeyse yarıya inmiştir.

başvurmak tensorflow özel oluşturur


4
2017-09-26 12:10





TensorFlow kaynağından oluştururken, configure senaryo. Sorulardan biri configure komut dosyası şöyledir:

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]

configure betik, belirttiğiniz bayrağı TensorFlow pip paketini oluşturan bazel komutuna ekler. Genel olarak, bu soruna iki yoldan biriyle cevap verebilirsiniz:

  • Eğer TensorFlow'u çalıştırdığınızla aynı tipte bir işlemci tipi üzerinde TensorFlow oluşturuyorsanız, varsayılanı kabul etmelisiniz (-march=native). Bu seçenek, makinenizin CPU tipi için oluşturulan kodu optimize eder.
  • TensorFlow'u bir CPU tipinde oluşturuyorsanız, ancak TensorFlow'u farklı bir CPU tipi üzerinde çalıştırıyorsanız, açıklandığı gibi daha özel bir optimizasyon bayrağı sağlamayı düşünün. gcc belgeleme.

TensorFlow'u, önceki madde işaretli listede açıklandığı şekilde yapılandırdıktan sonra, hedef CPU için tam olarak optimize edilmiş TensorFlow'u ekleyerek --config=opt Çalıştığınız herhangi bir bazel komutuna bayrak.


2
2018-06-12 21:46