Mve: Π‘Π±ΠΎΠΉ makescene ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² PNG

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 5 сСнт. 2017  Β·  30ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: simonfuhrmann/mve

Π£ мСня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ makescene, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π½Π΅ ΠΌΠΎΠ³Ρƒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π― ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π» ΠΈ собрал Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² соотвСтствии с инструкциями Π² Readme.md ΠΏΠΎΠ΄ Ubuntu 16.04 64 Π±ΠΈΡ‚. Π‘Π±ΠΎΡ€ΠΊΠ° компилируСтся Π±Π΅Π· ошибок ΠΈ всС прилоТСния Π΅ΡΡ‚ΡŒ.

Однако, Ссли я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ makescene с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ -i, ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ создаст ΠΏΠ°ΠΏΠΊΡƒ сцСны, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π»Π΅Ρ‚ΠΈΡ‚ с сообщСниСм Β«UngΓΌltiger Maschinenbefehl (Speicherabzug geschrieben)Β» (я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ Π½Π΅ΠΌΠ΅Ρ†ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Ubuntu)

Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ сообщСния Π² ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, сбой происходит Π² Ρ„Π°ΠΉΠ»Π΅ image_io.cc, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ load_png_file, Π²ΠΎΠΊΡ€ΡƒΠ³ строк 311-314, Π³Π΄Π΅ установлСны ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Π― Π½Π΅ знаю, ΠΊΠ°ΠΊ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ значСния для headers.height ΠΈ headers.channels ΠΈΠΌΠ΅ΡŽΡ‚ смысл.

ВсС 30 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠšΡ€Π°Ρ… Π² image_io ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ маловСроятСн. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ?

#include "mve/image_io.h"
int main() {
  mve::image::load_png_file("your path");
  return 0;
}

Π•ΡΡ‚ΡŒ Π»ΠΈ Π΅Ρ‰Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ особСнноС Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ? Π­Ρ‚ΠΎ 8 ΠΈΠ»ΠΈ 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ PNG?

Π₯ΠΎΡ€ΠΎΡˆΠΎ, я скомпилировал Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ PNG, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ тСстовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚ с "UngΓΌltiger Maschinenbefehl (Speicherabzug geschrieben)".

Однако, Ссли я измСню Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Β«load_tiff_fileΒ» ΠΈ вмСсто этого Π·Π°Π³Ρ€ΡƒΠΆΡƒ Ρ„Π°ΠΉΠ» TIFF, ΠΎΠ½, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. ΠœΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ функция load_png_file сломана?

НС ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Π½ΠΎ я ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° load_png_file ΠΈ использовал strace для получСния систСмных ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ², связанных с этим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ послСдниС нСсколько строк этого ΠΆΡƒΡ€Π½Π°Π»Π° ΠΏΠ΅Ρ€Π΅Π΄ сбоСм:

14:00:46.197536 ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ("./frame_0001.png", O_RDONLY) = 3
14:00:46.197561 fstat(3, {st_mode=S_IFREG|0664, st_size=407653, ...}) = 0
14:00:46.197582 Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ(3, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\5\0\0\0\2\320\10\2\0 \0\0@\37J"..., 4096) = 4096
14:00:46.197651 mmap(NULL, 2768896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fcadc163000
14:00:46.198666 --- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x40b69d} ---
14:00:46.337334 +++ ΡƒΠ±ΠΈΡ‚ SIGILL (сброс ядра) +++

НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΏΡ€ΠΈΡΠ»Π°Ρ‚ΡŒ ΠΌΠ½Π΅ ссылку Π½Π° это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅?

Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ просто ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ png, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ являСтся png ... Π― Π²ΠΈΠ΄Π΅Π» ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° Ρ„Π°ΠΉΠ» Β«.pngΒ» Π±Ρ‹Π» фактичСски Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ jpeg.

http://maxdid.it/gamejam/img/frame_0001.png

Π― использовал ffmpeg для экспорта ΠΊΠ°Π΄Ρ€ΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎ Π² Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π― ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ я использовал ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ convert, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· png Π² tiff ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Π½ΠΎ Π±Π΅Π·Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π½ΠΎ.

Π—Π΄Π΅ΡΡŒ Ρ„Π°ΠΉΠ» загруТаСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

open("frame_0001.png", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0640, st_size=691915, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5395d8a000
read(3, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\5\0\0\0\2\320\10\2\0\0\0@\37J"..., 4096) = 4096
mmap(NULL, 2768896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5393b87000
read(3, "\7\0?)\363\207i\27\30x'\356\330\214Xg\7\260\334W\23G\371\323\31 \323\2S\273\353\\"..., 4096) = 4096
...

Богласно Π²Π°ΡˆΠ΅ΠΌΡƒ strace ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠ±ΠΈΡ‚Π° SIGILL (Π½Π΅ KILL). Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ваш процСссор ΠΈΠ»ΠΈ ОБ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ. Π― Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ с этим Π΄Π΅Π»Π°Ρ‚ΡŒ, Π½ΠΎ я полагаю, Ρ‡Ρ‚ΠΎ это ваша систСма ΠΈΠ»ΠΈ ваша Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libpng, которая ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΈΡΠΏΠΎΡ€Ρ‚ΠΈΠ»Π°ΡΡŒ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ/ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ libpng?

Π˜Ρ‚Π°ΠΊ, я ΡƒΠ΄Π°Π»ΠΈΠ» Π²Π΅Ρ€ΡΠΈΡŽ libpng, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я установил с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ apt-get install, ΠΈ вмСсто этого Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ» Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ libpng, скомпилировал Π΅Π³ΠΎ ΠΈ установил.

К соТалСнию, эффСкт Ρ‚ΠΎΡ‚ ΠΆΠ΅. ΠœΠΎΠΆΠ΅Ρ‚ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΉ процСссор? Π’ настоящСС врСмя я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ процСссор AMD Phenom II X4 965, Π΄ΡƒΠΌΠ°ΡŽ, это Π½Π΅ самая новая модСль. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρƒ мСня ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π°Π½ΡŒΡˆΠ΅.

Π’ любом случаС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹, рСбята, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π΄ΡƒΠΌΠ°ΡŽ, я Π·Π°ΠΊΡ€ΠΎΡŽ Ρ‚Π΅ΠΌΡƒ.

МнС Таль ΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это всС Π΅Ρ‰Π΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это вашС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅... Π½ΠΎ Ρƒ мСня Π½Π΅Ρ‚ ΠΈΠ΄Π΅ΠΉ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π΅ΡΡ‚ΡŒ Ρ„Π»Π°Π³ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ускорСния для libpng? На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я просто ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Π½Π΅ зная, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π― знаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ makescene Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ послС ΠΌΠ½ΠΎΠ³ΠΈΡ… экспСримСнтов. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° libjpeg ΠΈΠ»ΠΈ libpng, настоящая ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° - openMP. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΊΠΎΠ΄ΠΎΠ² Π² makescene.cc:
845 линия
mve::ImageBase::Ptr ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅;

pragma omp parallel для упорядочСнного расписания (динамичСский, 1)

for (std::size_t i = 0; i < dir.size(); ++i)

....
std::string exif;

ΠΏΡ€Π°Π³ΠΌΠ° критичСский

    image = load_any_image(afname, &exif);

...

Но это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ особого смысла. Π’Ρ‹ сохраняСтС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ image , которая являСтся ΠΎΠ±Ρ‰Π΅ΠΉ для всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΈ хотя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° изобраТСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сСриализована, Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·-Π·Π° условий Π³ΠΎΠ½ΠΊΠΈ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния. ..

Π’Ρ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ просто ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ критичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ #pragma omp ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ изобраТСния?

@timlgy , Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΎ вашСй систСмС? Какой процСссор, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈ компилятор Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅?

Π£ мСня это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Ubuntu 14.04.5 LTS, 16U32G ΠΈ компиляторС gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) PS Β«Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅Β», Ρ‡Ρ‚ΠΎ это? prebundle.sfm?

согласно этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ #pragma omp Critical
ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° omp опрСдСляСт Ρ€Π°Π·Π΄Π΅Π» ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π·Π° Ρ€Π°Π·.
ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, 'load_any_image' опасСн, Ссли ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ mve::ImageBase::Ptr imagel=oad_any_image(afname, &exif);

load_any_image просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ libpng Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‡Ρ‚ΠΎ являСтся потокобСзопасным ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании, Ρ‡Ρ‚ΠΎ, я надСюсь, ΠΌΡ‹ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ. Под Β«Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈΒ» я ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСзаписано Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использовано, ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ изобраТСния Π² своСм прСдставлСнии.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ просто для понимания этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΠ³ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ эти сбои?

Когда я Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (любого Ρ‚ΠΈΠΏΠ° jpg tif ΠΈΠ»ΠΈ png) всС Π² порядкС, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° я Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽ Π΄Π²Π° изобраТСния (любого Ρ‚ΠΈΠΏΠ°) с высокой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ происходит сбой.

Π― Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, ΠΈ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄Π΅Π» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, этот сбой связан с вашСй доступной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Ссли Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большиС изобраТСния? Π― ΠΌΠΎΠ³Ρƒ сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° 32 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (Ссли Ρƒ вас ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ядСр) Π½Π° машинС с 2 Π“Π‘ ΠžΠ—Π£ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

А ΠΏΠΎΠΊΠ° просто помСститС строку #pragma omp critical ΠΏΠ΅Ρ€Π΅Π΄ load_any_image , Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

@timlgy , моТСшь ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ сбоя?
ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ ΠΏΠΎΠ΄ Β«16U32GΒ»?

@ andre-schulz 16U32G ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ЦП 16 ΠΈ 32 Π“Π‘ памяти.

Π― наблюдаю Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ сбой Π² Windows 7 64x с послСднСй сборкой mve ΠΏΠΎ инструкции:

crash

ΠŸΡ‹Ρ‚Π°Π»ΡΡ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строку #pragma omp Critical ΠΏΠ΅Ρ€Π΅Π΄ load_any_image, Π½ΠΎ это Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, Π² этом случаС я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ. Как ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ? Для Ρ‡Π΅Π³ΠΎ здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ OpenMP?

image

ΠŸΡ‹Ρ‚Π°Π»ΡΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: Ρƒ мСня Ρ‚ΠΎΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ сбой.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ @stiv-yakovenko,
Бпасибо Π·Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» png, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?
ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ процСссор Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅?

cpuz

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ makescene Π±Ρ‹Π» скомпилирован Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π½ΠΎ связан с libpng Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ выпуска; вСроятно, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° со связью с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния (/MD ΠΏΡ€ΠΎΡ‚ΠΈΠ² /MDd). Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ тСкущая систСма сборки. Π― Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ это дальшС.
ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ makescene Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ RelWithDebInfo?

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ makescene Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Debug ΠΊ CMAKE_CONFIGURATION_TYPES Π² стороннСм CMakeLists.txt . Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ скопируйтС ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² располоТСниС ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ вСрсии makescene . Π― ΠΏΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΌΠΎΠ³Ρƒ Π»ΠΈ я ΠΊΠ°ΠΊ-Ρ‚ΠΎ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ/Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π― ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽ, Ρ‡Ρ‚ΠΎ вСрсия ReleaseWithDeb Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

@andre-schulz ΠŸΡ€ΠΈΠ²Π΅Ρ‚, спасибо Π·Π° ваш Π°Π½Π°Π»ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π― ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π» сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ» tiffd.dll, zlibd.dll Π² ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ makecene. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° всС Ρ€Π°Π²Π½ΠΎ Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚

png_read_image(png, &row_pointers[0]);

image

@andre-schulz Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС Π² порядкС! ПослС ΠΏΠΎΠ»Π½ΠΎΠΉ компиляции ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ послС измСнСния CMAKE_CONFIGURATION_TYPES Π² CMakeLists.txt сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MVE.sln ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ jpg Ρ€Π΅ΡˆΠ΅Π½Π°.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

HelliceSaouli picture HelliceSaouli  Β·  14ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

HelliceSaouli picture HelliceSaouli  Β·  12ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

daleydeng picture daleydeng  Β·  8ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Jus80687 picture Jus80687  Β·  11ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

GustavoCamargoRL picture GustavoCamargoRL  Β·  13ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ